Android Studio のジャーニー

Android Studio のジャーニーを作成すると、各テスト(ジャーニー)のステップとアサーションを自然言語で記述できるため、エンドツーエンド テストの作成とメンテナンスが容易になります。Gemini のビジョンと推論の機能を活用することで、自然言語で記述された手順が Gemini がアプリで実行するアクションに変換されるため、ジャーニーの記述と理解が容易になります。また、より複雑なアサーションを記述して説明することもできます。Gemini は、デバイスで確認した内容に基づいてアサーションを評価し、ジャーニーが合格か不合格かを判断します。

また、Gemini は目標を達成するために実行するアクションを推論するため、アプリのレイアウトや動作の微妙な変更に対する回復力が向上し、アプリのさまざまなバージョンやデバイス構成に対して実行したときに、不安定なテストが少なくなるというメリットもあります。

ローカルまたはリモートの Android デバイスに対して、Android Studio から直接ジャーニーを記述して実行します。IDE には、ジャーニーの作成に役立つ新しいエディタ エクスペリエンスと、Gemini の推論とジャーニーの実行をより適切に把握できるリッチな結果が用意されています。

ジャーニーを作成する

Android Studio には、ジャーニーの作成と編集を簡単に行えるファイル テンプレートと新しいエディタ エクスペリエンスが用意されています。ジャーニーは、XML 構文を使用して記述され、ジャーニーの説明と手順が整理されます。

ジャーニーを作成して編集を開始する手順は次のとおりです。

  1. Android Studio の [Project] パネルで、ジャーニーを作成するアプリ モジュールを右クリックします。
  2. [New] > [Test] > [Journey File] を選択します。
  3. 表示されたダイアログで、ジャーニーの名前と説明を入力します。
  4. [OK] をクリックします。Android Studio は、選択した名前でジャーニーの XML ファイルを作成します。[Code] ビューを使用して XML を直接編集することも、[Design] ビューを使用して編集エクスペリエンスを向上させることもできます。
  5. [デザイン] ビューでジャーニーを表示している場合は、テキスト フィールドを使用してジャーニーの各ステップを説明します。各ステップには、Gemini に実行してほしい説明的なアクションや、Gemini に評価してほしいアサーションを含めることができます。
  6. キーボードの Enter キーを押して、同じジャーニーで新しいプロンプトを開始します。この手順は、定義するジャーニーの各ステップで必要に応じて繰り返すことができます。

ジャーニーの作成に関するヒント

ジャーニーを詳細かつ体系的に記述すると、Gemini が意図したジャーニーをより確定的かつ正確に実行できる可能性が高まります。ジャーニーをより効果的に作成するためのヒントをいくつかご紹介します。 * アサーションとアクションを分離する: Gemini は、アプリの状態を常に評価し、ジャーニーを続行するのに「正しい」状態かどうかを判断します。ただし、より複雑なアサーションは別のステップとして定義する必要がある場合があります。また、各プロンプトは「Verify that」、「Assert that」、「Check that」などのキーフレーズで始め、このステップがアサーションであることを Gemini に伝えます。* スワイプで Gemini を操作する: タップやキーボード入力などの基本的な操作に加えて、Gemini は画面を特定の方向にスワイプする必要がある操作にも対応しています。たとえば、コンテンツをスクロールしたり、UI の一部を閉じるには、スワイプ アクションの方向と目的を説明します。デフォルトでは、Gemini は画面の中央からスワイプしますが、デバイス画面の別の部分でスワイプするように誘導できます。* 複雑な操作や構成の変更を避ける: Gemini は現在、マルチフィンガー ジェスチャー、画面の回転、折りたたみ操作など、すべての操作と構成の変更をサポートしていません。Gemini の機能の改善に取り組んでいます。

ジャーニーを実行する

他のインストルメンテーション テストと同様に、利用可能なローカルまたはリモートのデバイスでジャーニーを実行できます。Android Studio は、ジャーニーの実行を理解するのに役立つ豊富な結果を生成します。

ジャーニーをテストするには、次の操作を行います。

  1. インストルメンテーション テストを実行する場合と同様に、メイン ツールバーからターゲット デバイスを選択します。
  2. テストするジャーニー XML ファイルに移動し、エディタで開きます。
  3. エディタで、次のいずれかの操作を行います。
    1. [デザイン] ビューが表示されている場合は、 [ジャーニーを実行] をクリックします。
    2. [コード] ビューで、XML でジャーニーの名前が定義されている場所の横にあるガターの [実行] をクリックします。

Android Studio は Journeys Test 構成を作成し、対象デバイスで実行します。実行中、Android Studio はアプリをビルドしてデプロイし、Gemini に接続して、ユーザー ジャーニーの各ステップで実行するアクションを決定します。

ジャーニーの実行中に、エディタに制限付きの結果(スクリーンショット、実行されたアクション、ジャーニーの各ステップの実行中の理由など)も表示されます。エディタでサムネイルにカーソルを合わせるだけで、詳細情報が表示されます。これは、ジャーニーのプロンプトを反復処理する際に役立ちます。

結果を表示

Android Studio でジャーニーのテストが完了すると、テスト結果パネルが自動的に表示され、結果が表示されます。

Android Studio で実行する他のインストゥルメント化テストと比較して、ジャーニーの結果の表示方法にはいくつかの違いがあります。

  • [テスト] パネルには、ユーザー ジャーニーが個別のステップに分解されて表示されます。各ステップをクリックすると、Gemini がそのステップをどのように実行したかについての詳細を確認できます。
  • [結果] パネルには、Gemini がユーザー ジャーニーをどのように理解し、推論し、実行したかについての豊富な情報が表示されます。
  • Gemini に送信されたスクリーンショットは、手順の各アクションの視覚的な補助として表示されます。
  • 各アクションと、そのアクションが実行された理由が、各スクリーンショットの横に記載されています。
  • ステップ内の各アクションには番号が付けられています。

既知の問題

  • ジャーニーをテストする場合、アプリのすべての権限はデフォルトで付与されます。
  • Android 15(API レベル 35)を搭載したデバイスでジャーニーをテストすると、デバイスに「AndroidX Crawler」の「安全でないアプリがブロックされました」という警告が表示されることがあります。[インストールを続行] をクリックすると、このチェックをバイパスできます。または、デバイスの開発者向けオプションを設定して、[USB 経由のアプリも検証] オプションを無効にすることもできます。
  • 現在、ジャーニー ファイルは [プロジェクト] パネルの [Android] ビューに表示されません。プロジェクト内のジャーニー ファイルを表示するには、[プロジェクト] ビューを使用します。
  • ジャーニー内の複数のアクションでまったく同じプロンプトが使用されている場合、ジャーニー エディタに表示されるテスト結果が正しくない可能性があります。具体的には、重複するプロンプトを含むすべてのアクションで、そのプロンプトの最新のインスタンスに関連付けられたテスト結果が表示されます。この問題を回避するには、各アクションに一意のプロンプト(異なる接頭辞や接尾辞を追加するなど)を設定します。
  • 新しいエミュレータでキーボードが 2 回目に読み込まれると、スタイラスのポップアップが表示されます。通常、このポップアップにより、テキスト フィールドを操作するテストが失敗します。この場合は、ポップアップを閉じてジャーニーを再実行します。
  • アプリ クローラーのアーティファクトがエージェントの根拠に表示されることがあります。
  • ジャーニーの実行が IllegalStateException で失敗することがあります。この場合、[テスト結果] をクリックすると、エラーの詳細が表示されます。
  • 最上位の build.gradle ファイルで Android Gradle プラグイン(com.android.application)が定義されていない場合、ジャーニーの実行時に次のエラーが表示されることがあります。

    Failed to apply plugin class 'com.android.tools.journeys.JourneysGradlePlugin'
    

    この問題を解決するには、プラグインが最上位の build.gradle ファイルで定義されていることを確認します。詳細については、Android ビルドシステムを構成するをご覧ください。