動かせるのか？T-DASHを使ってGemini最新版を使ったAndroidアプリの生成AI自動テストを行う手順(その４)

T-DASHで生成AI（Gemini 2.0 Flash）を使ったAndroidアプリの自動テストに関する記事です。

https://qiita.com/advent-calendar/2024/t-dash01

Qiita Advent Calendar 2024 【[今年もT-DASHを使ってみた！ by T-DASH Advent Calendar 2024](https://qiita.com/advent-calendar/2024/t-dash01)】の20日目の記事になります。

T-DASHを用いたユニークな取り組みとして、先日発表されたばかり、Googleの生成AI「Gemini 2.0 Flash」を統合したAndroidアプリの自動テスト方法を紹介します。これから生成AIを活用したアプリが増えていく中で生成AIの自動テストをモバイルアプリでどのように実現するのかは大きな課題ですよね？

この記事では、Gemini 2.0 Flashを活用した「サマリー生成アプリ」の環境構築から実行までの簡単な流れと、それをどのようにT-DASHに統合して自動テストを行うのかを知ることができます。

最終的にこちらのサンプルアプリとT-DASHを使って検証していきます。

https://github.com/google-gemini/generative-ai-android

:::note warn
「その１」の記事「T-DASHを使ってGemini最新版を使ったAndroidアプリの生成AI自動テストを行う手順(その１)」ではmacでT-DASHのモバイル機能が使えなかったのでWineで無理やり動かした話

「その２」はAmazon EC2上でVirtual Desktop環境を構築してWindows上で正規の手段でT-DASHのWindows版を動かしてみました。

「その３」ではAmazon EC2上で動かしたバーチャル環境上に開発環境をセットアップし、T-DASHの設定も全て終わらせました。前回こそはこのプロジェクトが完了する予定でしたが、Androidエミュレーターが動作しないという問題にぶち当たってしまいました。

「その４」の今回こそはT-DASHを通してモバイルアプリの自動テストを実行してみましょう！
:::


# T-DASHとは？

![スクリーンショット 2024-12-15 9.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/3c8a94b1-b1ec-232e-c31a-8ad0a1ba0e4c.png)

https://service.valtes.co.jp/t-dash/

一言でいうとノーコードのテスト自動化ツールです。競合のツールとしては[Mabl](https://www.mabl.com/ja/)や[Autify](https://autify.jp/)があります。

T-DASHの特徴としては

> 日本語で書いたテストケースがスクリプトになる

というのが特徴となっています。この記事ではコストや機能で競合ツールと比較したわけではありませんが、月額4,840円というのはテスト自動化をノーコードで始めるにはお手軽な価格帯に設定されていると思います。

# Amazon EC2でAndroidエミュレーターを動かすには？

https://aws.amazon.com/jp/ec2/features/
![2024-12-20_22-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/e38ed081-8b19-d750-cabb-116f77dbd754.png)

Amazon EC2のドキュメントを確認していると見つけました

> 非仮想化環境での実行

を実現することが出来る`ベアメタルインスタンス`というものがありました。

# Amazon EC2のベアメタルインスタンス

## Windows 2025ではmetalは利用できない
![スクリーンショット 2024-12-20 22.42.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/674828f8-18f2-d66b-ae11-3e5b7ba50349.png)
![スクリーンショット 2024-12-20 22.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/b5d80542-f654-739d-ceff-e056a0ca7c77.png)

## Windows 2022
確認したところwindows2022以前のOSであればベアメタルインスタンスを利用することが出来ます。

![スクリーンショット 2024-12-20 22.43.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/9923ce01-b7d1-9669-583b-0dfe390840c4.png)
![スクリーンショット 2024-12-20 22.44.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/64341937-3b65-a14f-db6d-316bb00804f4.png)

## Tokyoリージョンで一番安いベアメタルインスタンス m5zn.metal
![スクリーンショット 2024-12-20 22.52.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/0215fb82-34b3-4aad-7271-22c61b242677.png)

## AWSで一番安いのはこちらUSリージョンのインスタンス
![2024-12-20_22-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/beb3b7c2-e561-065c-653e-d7599296ee0a.png)

たった一ドルちょっとの違いですが、長時間動かすことを考えると大きいですよね？１時間毎に飲み物が一本買える値段です

# 早速ベアメタル環境でEC2をセットアップします

:::note info
前回までの記事でEC2のセットアップやT-DASHアプリ、Android Studioのセットアップは完了しているので割愛
:::

# エミュレーターを起動

![2024-12-20_23-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/d7a2ff49-91ab-903e-e6db-01644b61dae0.png)

## ついにエミュレーターが起動し始めます。

![2024-12-20_23-16_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/c383a093-eb18-3070-9d70-ce1d276bd536.png)

## Googleのロゴも！
![2024-12-20_23-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/0baa78af-47d8-7496-ed0d-c674553c402d.png)

## Androidのホーム画面
![2024-12-20_23-17_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/5224fd66-5b57-91dd-928a-b9edf4320327.png)

ついにエミュレーターが起動しましたね！

# 早速、アプリを起動

https://github.com/google-gemini/generative-ai-android

こちらをセットアップして起動していきます。セットアップ手順は[前回の記事](https://qiita.com/aoinakanishi/items/2a2330856794c734619f)にあるので御覧ください

![2024-12-20_23-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/1684cf6c-520a-ac45-d01a-4b8cb615d460.png)

Gemini APIを使った挙動の確認も問題なしです。

![2024-12-20_23-19_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/d3ccdd27-8d60-e1d3-8103-1b3bfbdecb22.png)

# T-DASHのセットアップ

![2024-12-20_23-33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/2453ce85-9a12-fcfa-654d-6ce0b3c933a0.png)

## プロジェクト情報の編集
プロジェクト名等はあとから変更も可能でした

![2024-12-20_23-34_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/9ccbba18-878a-f924-802f-b0ac5ac0c989.png)

## スイートの作成

![2024-12-20_23-35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/83a34bca-c5b9-a074-9efa-562a147ebcb1.png)

「スイート」とあると何を示しているかわかりにくいのは私だけかもしれませんが、こういうことのようです。つまりT-DASHの場合はテストを実行する一連のまとまりのようなもののようです。
![スクリーンショット 2024-12-22 2.20.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/509e1471-59e9-75ae-bfe2-ad11e04101db.png)
引用元: [weblio: スイート](https://www.weblio.jp/content/%E3%82%B9%E3%82%A4%E3%83%BC%E3%83%88#:~:text=%E3%80%8Csweet%E3%80%8D%E3%81%AF%E3%80%81%E7%A0%82%E7%B3%96%E3%82%84,%E7%94%A8%E3%81%84%E3%82%89%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E3%81%82%E3%82%8B%E3%80%82)


## スイート作成直後
![2024-12-20_23-36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/cfc5b3be-4ac2-b27d-0f71-decbd2208b04.png)

## テストケース作成
![2024-12-20_23-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/75d12c82-3981-5fc9-c062-4629f6c63bd7.png)

プラスボタンを押してテストケースを作成します。次にテストケース名「インストールと起動」をクリックすると以下の画面に切り替わります

![2024-12-20_23-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/308cab1c-207c-8d90-2245-c47b91926e37.png)

[テスト手順作成](https://qiita.com/aoinakanishi/items/2a2330856794c734619f#%E3%83%86%E3%82%B9%E3%83%88%E6%89%8B%E9%A0%86%E4%BD%9C%E6%88%90)で説明した通り、左側にある一覧から機能を選択します。
![2024-12-20_23-39_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/6089cf6f-610f-b878-c581-3d6acc773e81.png)

右側の表に選択した制御内容が表示され、設定等を入力していきます。

こちらの設定はapkをインストールして起動するという設定をしようとしましたが、apkのパスの入力方法などがわからず、一旦Noneにしてみました。右上にある「保存する」で保存します。

テストケースの一覧から必要なテストを選び「虫マーク」をクリックして実行します。

ちなみにこの画面では左側にあるテストスイートの虫マークをクリックするとそこに含まれる複数のテストケースをまとめて実行することが出来ます。今回は右側の特定のテストケースの虫マークから実行してみます。

![2024-12-22_02-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/9d4f152e-cf86-d46a-6ba2-fa77e0ef02f1.png)

ようやく全てのセットアップが完了しているので、こちらから実行することが出来るようになりました。

![スクリーンショット 2024-12-20 23.47.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/66f120e0-5935-1c9c-869a-668d524c9902.png)

## 実行画面
![スクリーンショット 2024-12-20 23.47.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/857ef529-c311-28f0-12d6-9583390babfa.png)

## エラー発生
![スクリーンショット 2024-12-20 23.48.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/d55b674f-a309-9435-093c-6d349db99143.png)

もちろんNoneを設定していたのでそのままでは動きませんでした。

![スクリーンショット 2024-12-20 23.54.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/e26d7b2f-0ca5-2fc9-fa25-4536af7c7b8f.png)
![スクリーンショット 2024-12-20 23.55.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/87564a74-a656-2401-f4f1-81da36922587.png)

ファイルパスの設定なども色々行いましたが、インストールして実行することが出来ず終いでした。apkのインストールについてのトライは省略します。

## 別の起動方法

Androidアプリを実行する場合、インストール済みであればパッケージ名とActivityのクラス名を指定することで起動することが出来ます。

![スクリーンショット 2024-12-21 0.10.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/895622e1-a8e1-99c6-36bd-436c5efb5270.png)

パッケージ名を指定した起動は無事にテストが完了しました。1️⃣のデバック開始ボタンを押すと2️⃣のテストケースが一つづつ実行されます。完了すると3️⃣のダイアログが表示されます。
![2024-12-22_02-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/675bfeea-009e-ac90-3639-33f8d7b6f8ed.png)

実行中の画面はこちらです。1️⃣に進行状況は表示されています。2️⃣は実際にエミュレーターでアプリが起動する瞬間になります。
![2024-12-22_02-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/e6a4a3bd-ce82-92a8-04f6-55a948a5d449.png)

↑では起動してテストケースが終了していたのでアプリが起動しているスクショが撮れませんでしたので、テストケースに「待機する」を追加してみました。アプリの起動待ちやスクショの保存などを利用するときにはこの待機が大活躍しそうです
![2024-12-22_02-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129712/d3648816-377b-e1f7-8df2-2343f66a9a64.png)

# まとめ

無事にT-DASHを使ってモバイルアプリの検証が出来るようになりました。次回の記事では、画面の操作をどのように実行していくのかをまとめていきます。