アプリ テスト エージェントは、Gemini in Firebase を活用したテストケースの生成、管理、実行エージェントです。テストの目標を自然言語で定義すると、エージェントは AI を使用してアプリを理解して操作し、ユーザー インタラクションをシミュレートして、詳細なテスト結果を提供します。
アプリ テスト エージェントによるデータの使用方法
アプリ テスト エージェントは Gemini in Firebase から提供され、同じ利用規約が適用されます。Gemini in Firebase がデータを使用する方法の詳細については、Gemini in Firebase によるデータの使用方法をご覧ください。
始める前に
まだ登録していない場合は、Firebase にアプリを登録します。
他の Firebase プロダクトを使用していない場合は、プロジェクトを作成してアプリを登録するだけでかまいません。アプリに SDK を追加する必要はありません。ただし、今後追加のプロダクトを使用する場合は、Firebase コンソールを使用して Firebase を追加するのステップをすべて完了してください。
テストケースを作成する
AI ガイド付きテストを実行するために、アプリテスト エージェントは自然言語のテストケースを使用して、アプリに対してテストを実行します。
各テストケースはステップに分割され、順番に実行されます。 ステップに沿って、テストケースをフェーズに分割し、それぞれに独自のアサーションを設定できます。エージェントは 1 つのステップで多くのアクションを実行する場合があります。
テストケースを作成する方法は、YAML ファイルを使用する方法と Firebase コンソールを使用する方法の 2 つがあります。YAML ファイルを使用すると、通常はバージョン管理されたソースコード リポジトリでテストケースを自分で管理できます。また、Firebase コンソールでは、テストケースを App Distribution データとともにリモートで保存できます。
YAML ファイルの使用
次の例は、2 つのテストケースを定義する YAML ファイルを示しています。
tests:
- displayName: Login as guest
id: login-as-guest
steps:
- goal: Log in as a guest
finalScreenAssertion: The home screen is visible
- displayName: View biography card birth date
prerequisiteTestCaseId: login-as-guest
steps:
- goal: Open the article on "Bob Dylan"
hint: Use the search function to find it
finalScreenAssertion: >-
The article is opened and the title "Bob Dylan" is visible.
- goal: Find Bob Dylan's birthday in the article
hint: >-
Look for the "Born" section in the infobox on the right side of the page.
finalScreenAssertion: >-
The text "May 24, 1941" is visible on the screen.
テストのグループを 1 つのファイルにまとめ、これらのテストスイートを複数のファイルに分割できます。前提条件のテストケースを追加するには、テストに ID を追加し、prerequisiteTestCaseId を使用してその ID を参照します。
App Distribution コンソールの使用
Firebase コンソールでテストケースを作成して管理することもできます。テストケースを作成するには、Firebase コンソールの App Distribution ページを開き、次の手順を行います。
- [テストケース] タブで、[新しいテストケース] をクリックします。独自のテストケースを作成しない場合は、提供されているサンプル テストケースを変更するか、使用してください。
- [テストケースを追加] ダイアログで、テストケースに名前を付けます。これはテストの識別に使用されますが、エージェントによって無視されます。
- (省略可)メインテストの前に実行する、設定手順を含む前提条件のテストケースを選択します。前提条件テストが失敗すると、テスト全体が失敗としてマークされます。前提条件テストおよびメインテストの手順と結果が、テスト結果にまとめて表示されます。
- [別のステップを追加] ボタンをクリックして、テストを複数のステップに分割することを検討します。
- 各ステップに [目標] を設定し、そのステップでアプリ テスト エージェントが行うべき操作を記述します。
- (省略可)[ヒント] を追加して、そのステップでアプリ テスト エージェントがアプリを理解し、操作しやすくするための追加情報を提供します。
- [最終画面のアサーション] を追加して、アプリ テスト エージェントがステップが正常に完了したかどうかを判断できるようにします。このアサーションは、画面に表示されるもののみを参照する必要があります。
- テストのカスタマイズが終わったら、[保存] をクリックします。
サンプル テストケース
次の例は、アプリ テスト エージェントを使用してテストケースを作成する方法を示しています。
テストタイトル |
ホームページの読み込み |
目標 |
ホームページを読み込む |
ヒント |
オンボーディング画面を閉じます。ポップアップを閉じます。ログインしないでください。 |
最終画面のアサーション |
アプリのメイン ホームページが画面に表示され、すべての画像が読み込まれ、エラーは表示されません。 |
テストを実行する
テストの実行方法は、テストケースの作成方法と管理方法によって異なります。YAML ファイルを使用してテストケースを定義する場合は、Firebase CLI を使用してテストを実行します。App Distribution コンソールでテストケースを作成した場合は、コンソールまたは App Distribution CLI ツールのいずれかを使用してテストケースを実行します。
YAML ファイルの使用
YAML ファイルで定義されたテストケースは、Firebase CLI を使用して実行できます。
- Firebase CLI の最新バージョンをインストールするか、最新バージョンに更新します。ご使用の OS 固有の CLI のスタンドアロン バイナリをダウンロードすることをおすすめします。
- ログインして、プロジェクトにアクセスできることを確認します。CI 環境で Firebase CLI を使用している場合は、サービス アカウントまたは login:ci を使用して認証を行うこともできます。
apptesting:executeコマンドを実行します。次に例を示します。firebase apptesting:execute \ --app=1:1234567890:android:0a1b2c3d4e5f67890 \ --test-dir=./mytests \ ./app/build/outputs/apk/debug/app-debug.apk
| apptesting:execute [options] [/path/to/app/binary] | |
|---|---|
--app
|
必須: アプリの Firebase アプリ ID。このアプリ ID は、Firebase コンソールの全般設定ページで確認できます。
|
--test-dir
|
テストケースの YAML ファイルを含むディレクトリへのパス。このコマンドは、このディレクトリの下を再帰的に検索するため、ファイルは必要に応じてサブディレクトリに整理できます。未設定の場合、デフォルトで「./tests」が使用されます。 |
--test-devices または --test-devices-file
|
アプリ テスト エージェント機能にビルドを配布するテストデバイス。 テストデバイスは、テストデバイスのセミコロン区切りのリストとして指定できます。 --test-devices
"model=tokay,version=36,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"
または、テストデバイスのセミコロン区切りのリストを含む書式なしテキスト ファイルのパスを指定します。 --test-devices-file
"/path/to/test-devices.txt" 使用可能なデバイスモデルは、gcloud CLI を使用して検索できます。 |
--test-non-blocking
|
設定すると、コマンドはテストを開始してすぐに戻り、完了を待機しません。 |
--test-file-pattern
|
正規表現パターン。このパターンに一致するファイルに含まれるテストのみが実行されます。 |
--test-name-pattern
|
正規表現パターン。このパターンに一致する表示名を持つテストのみが実行されます。 |
/path/to/app/binary
|
省略可: アプリのバイナリのパス。省略すると、エージェントは、指定されたアプリの App Distribution にアップロードされた最新のリリースを使用します。 |
App Distribution コンソールの使用
App Distribution に保存されているテストケースを実行するには、Firebase コンソール、Firebase CLI、または App Distribution の Gradle プラグインや fastlane プラグインを使用します。
YAML ファイルを使用してテストケースをインポートおよびエクスポートする
YAML ファイルからテストケースをインポートすると、Firebase コンソールの外部でテストケースを管理する場合に便利です。また、テストケースをエクスポートすると、プロジェクト間でテストケースを移動する場合に便利です。LLM を使用して、既存のテストケースの改善や、新しいテストケースの作成ができます。テストケースのインポートとエクスポートは、Firebase コンソールの [テストケース] ページから行うことも、Firebase CLI を使用してプログラムで行うこともできます。YAML テストケースの例については、YAML テストケースを作成するをご覧ください。
テスト結果を表示する
テストの結果は、[リリース] ページで、リリースの [アプリ テスト エージェント] タブから確認できます。[詳細を表示] ボタンをクリックすると、[テスト結果] ダイアログが開き、問題、アプリのスクリーンショット、テスト中に Gemini が行ったアクションが表示されます。
テストに再生されたアクションが含まれている場合は、元の AI ガイド付きテストの実行を表示したり、キャッシュをクリアしたりできます。
テスト結果の詳細については、次の表をご覧くだあい。
| アイコン | 名前 | 説明 |
|---|---|---|
| spark | AI アクション | アプリ テスト エージェントが Gemini を使用して、アクションを実行するかステップを終了するかを決定したことを示します。 |
| replay | 再生されたアクション | アプリ テスト エージェントが、以前の成功したテストの実行からアクションを再生したことを示します。 |
| spark | AI アサーション | アプリ テスト エージェントが Gemini を使用して、以前の成功した同じテストの実行からアクションを再生した後、最終画面のアサーションを検証したことを示します。 |
テスト結果をデバッグする
テスト結果が想定と異なる場合は、[テスト結果] ページの [詳細を表示] で [エージェント ビューを表示] を切り替えて、テストをデバッグできます。エージェント ビューには、アプリのユーザー補助情報を使用しているときにアプリ テスト エージェントが検出できた画面要素が表示されます。エージェントが確認した内容を詳しく見るには、アクション オーバーフロー メニューからその情報をダウンロードします。
テスト結果ページの [アーティファクトを表示] ボタンを使用して、テスト結果のすべての動画、ログ、その他の Cloud のアーティファクトを確認することもできます。
既知の問題と制限事項
アプリ テスト エージェントのプレビュー版には、いくつかの既知の制限事項があります。
- アプリ テスト エージェントは生成 AI を使用してアプリをテストするため、同じ手順に沿って異なるアクションを実行することがあります。
- アプリ テスト エージェントは、タップ、テキストの入力、上下左右のスワイプ、長押し、ドラッグ&ドロップ、戻る、待機のアクションのみをサポートしています。
- アプリ テスト エージェントは、完了に多くのアクションを必要とする 1 つのステップのみを含むテストを実行できません。複雑なタスクを複数の短いステップに分割すると、パフォーマンスが向上します。
- アプリ テスト エージェントがスクロールせず、画面外の他の要素が表示されないことがあります。これは、スクロール可能であることを視覚的に示すものがない場合によく発生します。回避策として、「ヒント」フィールドを使用してスクロールを推奨できます。
- アプリ テスト エージェントは、アクションを特定の回数実行するなど、カウントに問題が生じることがあります。
FLAG_SECUREが有効になっている場合、アプリ テスト エージェントはアプリを操作できません。アプリのスクリーンショットではなく、空白の画面のみが表示されます。
テストの割り当て
プレビュー期間中は、AI ガイド付きテストは割り当て上限内で無料で提供されます。デフォルトの割り当て上限は、Firebase プロジェクトごとに 月 200 件のテストです。
複数のテストケース、または同じテストケースを複数のデバイスで実行する場合、複数のテストとしてカウントされます。たとえば、2 つのデバイスで 2 つのテストケースを実行した場合、合計 4 件のテストとしてカウントされます。
デフォルトの上限を超えて割り当てを増やすには、ユースケースを添えて Firebase サポートにお問い合わせください。