Android Studio のジャーニーを作成すると、各テストのステップとアサーション(ジャーニー)を自然言語で記述できるため、エンドツーエンド テストの作成とメンテナンスが容易になります。Gemini のビジョンと推論機能を活用することで、自然言語で記述されたステップが、Gemini がアプリで実行するアクションに変換されます。これにより、シナリオの作成と理解が容易になります。さらに、より複雑なアサーションを記述して記述することもできます。Gemini は、デバイスで検出された内容に基づいてアサーションを評価し、シナリオが合格または不合格かを判断します。
また、Gemini は目標を達成するために実行するアクションを推論するため、アプリのレイアウトや動作の微妙な変更に対して、シナリオはより高い耐障害性を発揮します。これにより、異なるバージョンのアプリや異なるデバイス構成に対して実行する際に、不安定なテストが減ります。
ローカルまたはリモートの Android デバイスに対して、Android Studio から直接シナリオを作成して実行できます。IDE には、ジャーニーを作成するための新しいエディタ エクスペリエンスと、Gemini の推論とジャーニーの実行をより適切に追跡するのに役立つ豊富な結果が用意されています。
ジャーニーを作成する
Android Studio には、ファイル テンプレートと新しいエディタ エクスペリエンスが用意されており、ジャーニーの作成と編集が容易です。シナリオは XML 構文を使用して記述し、シナリオの説明と手順を整理します。

ジャーニーを作成して編集を開始する手順は次のとおりです。
- Android Studio の [Project] パネルで、ジャーニーを作成するアプリ モジュールを右クリックします。
- [New] > [Test] > [Journey File] を選択します。
- 表示されたダイアログで、ジャーニーの名前と説明を入力します。
- [OK] をクリックします。Android Studio によって、選択した名前のジャーニーの XML ファイルが作成されます。[Code] ビューを使用して XML を直接編集するか、[Design] ビューを使用して編集エクスペリエンスを向上させることができます。
- [設計] ビューでジャーニーを表示する場合は、テキスト フィールドを使用してジャーニーの各ステップを記述します。各ステップには、Gemini に実行してほしい説明的なアクションや、Gemini に評価してほしいアサーションを含めることができます。
- キーボードの Enter キーを押すと、同じジャーニーで新しいプロンプトを開始できます。必要に応じて、定義する経路の各ステップでこの操作を繰り返します。
シナリオを作成する際のヒント
詳細かつ整理された方法でシナリオを記述すると、Gemini が意図したシナリオをより確定的な方法で正確に実行する可能性が高まります。シナリオをより効果的に作成するためのヒントをいくつかご紹介します。
- 明示的な単一アクションは避ける: Gemini では、シナリオの各ステップを複数のアクションに変換できます。モデルは複雑な目標を達成するようにトレーニングされているため、「X をクリック」などの明示的な単一アクションのプロンプトは作成しないでください。
- アサーションをアクションから分離する: Gemini はアプリの状態を絶えず評価し、ジャーニーを続行するための「正しい」状態にあるかどうかを判断します。ただし、より複雑なアサーションを別のステップとして定義する必要がある場合があります。また、各プロンプトの先頭に「Verify that」、「Assert that」、「Check that」などのキーフレーズを使用して、このステップがアサーションであることを Gemini に伝えます。
- スワイプで Gemini を直接操作する: Gemini は、タップやキーボード入力などの基本的な操作に加えて、特定の方向に画面をスワイプする必要があるアクションもサポートしています。たとえば、コンテンツをスクロールしたり、一部の UI を閉じたりするには、スワイプ アクションの方向とインテントを記述します。デフォルトでは、Gemini は画面の中央からスワイプしますが、デバイス画面の別の部分でスワイプするようにガイドすることもできます。
- 他の複雑な操作や構成変更を避ける: Gemini は現在、マルチフィンガー ジェスチャー、画面の回転、折りたたみ操作など、すべての操作や構成変更をサポートしていません。担当チームは Gemini の機能の改善に取り組んでいます。
ジャーニーを実行する
他のインストルメンテーション テストと同様に、利用可能なローカル デバイスまたはリモート デバイスでジャーニーを実行できます。Android Studio は、ジャーニーの実行を把握するのに役立つ豊富な結果を生成します。

シナリオをテストする手順は次のとおりです。
- インストルメンテーション テストを実行する場合と同様に、メインツールバーからターゲット デバイスを選択します。
- テストするジャーニーの XML ファイルに移動し、エディタで開きます。
- エディタで、次のいずれかを行います。
- [Design] ビューの場合は、
[Run Journey] をクリックします。
- [Code] ビューで、XML でジャーニーの名前が定義されているガターの横にある
[Run
] をクリックします。
- [Design] ビューの場合は、
Android Studio がJourneys テスト構成を作成し、対象デバイスで実行します。実行中、Android Studio はアプリをビルドしてデプロイし、Gemini に接続して、ジャーニーの各ステップで実行するアクションを決定します。
シナリオの実行中に、エディタにも限定的な結果が表示されます。たとえば、シナリオの各ステップの実行中のスクリーンショット、実行されたアクション、理由などです。エディタでサムネイルにカーソルを合わせると、詳細情報が表示されます。これは、フロー内のメッセージを反復処理する場合に役立ちます。

結果を表示
Android Studio でジャーニーのテストが完了すると、テスト結果パネルが自動的に表示され、結果が表示されます。
Android Studio で実行する他のインストルメンテーション テストと比較して、経路の結果の表示方法に若干の違いがあります。
- [テスト] パネルでは、ジャーニーが個別のステップに分割されます。各ステップをクリックすると、Gemini による実行方法の詳細を確認できます。
- [結果] パネルには、Gemini がユーザーの行動をどのように理解し、推論し、実行したかを把握するのに役立つ豊富な情報が表示されます。
- Gemini に送信されたスクリーンショットは、ステップの各アクションで視覚的な補助として表示されます。
- 各スクリーンショットの横には、実行された各アクションと、そのアクションを実行した理由が記載されています。
- ステップ内の各アクションには番号が付いています。
既知の問題
- シナリオをテストする際、アプリのすべての権限がデフォルトで付与されます。
- Android 15(API レベル 35)を搭載したデバイスでシナリオをテストすると、デバイスに「AndroidX Crawler」の「安全でないアプリがブロックされました」という警告が表示されることがあります。[インストールする] をクリックすると、このチェックをスキップできます。または、デバイスの開発者向けオプションを設定すると、[USB 経由のアプリも検証] オプションを無効にすることもできます。
- 現在のところ、ジャーニー ファイルは [プロジェクト] パネルの [Android] ビューには表示されません。プロジェクト内のジャーニー ファイルを表示するには、[Project] ビューを使用します。
- シナリオ内の複数のアクションでまったく同じプロンプトを共有している場合、シナリオ エディタに表示されるテスト結果が正しくない可能性があります。具体的には、重複するプロンプトを含むすべてのアクションで、そのプロンプトの最新の更新インスタンスに関連付けられたテスト結果が表示されます。この問題を回避するには、各アクションに固有のプロンプトがあることを確認します(たとえば、固有の接頭辞または接尾辞を追加します)。
- 新しいエミュレータでキーボードが 2 回目に読み込まれると、タッチペン ポップアップが表示されます。通常、このポップアップが表示されると、テキスト フィールドを操作するテストが失敗します。この場合は、ポップアップを閉じて、ジャーニーを再実行してください。
- アプリ クローラー アーティファクトがエージェントの根拠に表示されることがあります。
- ジャーニーの実行が
IllegalStateException
で失敗することがあります。この場合は、[テスト結果] をクリックしてエラー全体を表示できます。 Android Gradle プラグイン(
com.android.application
)がトップレベルのbuild.gradle
ファイルで定義されていない場合、ジャーニーの実行時に次のエラーが表示されることがあります。Failed to apply plugin class 'com.android.tools.journeys.JourneysGradlePlugin'
この問題を解決するには、プラグインが最上位の
build.gradle
ファイルで定義されていることを確認します。詳細については、Android ビルドシステムを構成するをご覧ください。