Android Studio のジャーニー

Android Studio の Journeys は、AI のビジョンと推論の機能を活用して、自然言語の指示に基づいてアプリをナビゲートしてテストします。一連の指示(ジャーニー)は、AI がアプリで実行するアクションに変換されます。また、より複雑なアサーションを記述して説明することもできます。AI は、デバイスで確認した内容に基づいてアサーションを評価します。

Android Studio のジャーニー。
Android Studio のジャーニー。

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

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

ジャーニーを記述する

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

Android Studio のジャーニー エディタ。ジャーニー ステップを含む XML ファイルが表示されています。

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

  1. Android Studio の [Project] パネルで、ジャーニーを作成するアプリ モジュールを右クリックします。
  2. [新規] > [ジャーニー テスト] を選択します。
  3. 表示されたダイアログで、ジャーニーの名前と説明を入力します。

    Android Studio でジャーニー ファイルを作成するために使用するダイアログ。
    Android Studio でジャーニー ファイルの作成に使用するダイアログ。

  4. [Finish] をクリックします。Android Studio は、選択した名前でジャーニーの XML ファイルを作成します。[Code] ビューを使用して XML を直接編集することも、[Design] ビューを使用して編集を簡素化することもできます。

  5. [デザイン] ビューでジャーニーを表示する場合は、テキスト フィールドを使用してジャーニーの各ステップを説明します。各ステップには、Gemini に実行してほしい説明的なアクションや、Gemini に評価してほしいアサーションを含めることができます。

  6. キーボードの Enter キーを押して、同じジャーニーの新しいステップを開始します。定義するジャーニーの各ステップで、必要に応じてこの手順を繰り返します。

ビルド バリアントを設定する

ジャーニーは、アプリの特定のビルド バリアントに対して実行されます。ウィザードを使用してジャーニーを初めて作成すると、生成されたテストスイートは、Android Studio でアクティブなビルド バリアントに対して実行されるように構成されます。

ただし、後で Android Studio でアクティブなビルド バリアントを切り替える(たとえば、構成を更新せずに demoDebug などの別のプロダクト フレーバーに切り替える)と、ジャーニーの実行は失敗します。この問題を解決するには、モジュール レベルの build.gradle.kts(または build.gradle)ファイルの testSuites ブロックにある targetVariants プロパティに新しいバリアントを追加する必要があります。

たとえば、demoDebug バリエーション用に journeysTest スイートを設定するには:

android {
    // ...
    testSuites {
        create("journeysTest") {
            // ...
            targetVariants += listOf("demoDebug")
        }
    }
}

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

AI はサポートされている言語で記述されたほとんどの手順を理解できますが、ジャーニーの作成に次のヒントを活用すると、より正確で期待どおりの結果が得られます。

  • アプリがすでにフォアグラウンドにあると想定します。ジャーニーを実行すると、アプリが自動的に起動します。ジャーニーのステップは、アプリが完全に起動したに開始する必要があります。つまり、「アプリを起動する」を手順に含める必要はありません。
  • 曖昧さのない表現を使用する: 正確な表現を使用することで、誤解を最小限に抑え、信頼性を高めることができます。
元のコード すべきこと
「閉じるボタンを選択」 「[閉じる] をタップ」または「閉じる」
「セロリと入力して」 「ホーム画面の上部にある検索バーに「セロリ」と入力して」
「スワイプして閉じる」 「左にスワイプして閉じる。カードは表示されなくなるはず」
  • ステップの一部として成功基準を含める: これにより、Gemini がユーザーの意図をより正確に理解し、アクションが完了して次のアクションを開始できるタイミングを明確にできます。
元のコード すべきこと
「送信ボタンを選択」 「送信ボタンをタップしてメールを送信します。これでメールが閉じ、受信トレイに戻ります。」
「ショッピング カートに移動して」 「ショッピング カート アイコンをタップすると、ショッピング カート ページに移動します。アイテムが 0 個であることを確認します。」
「最初の動画をクリックして」 「最初の動画をクリックして、完全に読み込まれるまで待つ」
  • ジャーニーを調整する: ジャーニーが想定どおりに実行されない場合は、結果を表示し、[Action Taken] と対応する [Reasoning] を確認して、Gemini が想定どおりに手順を実行しなかった理由を把握できます。この情報を使用して、手順をより明確にしてください。
  • ジャーニーをより具体的なステップに分割する: AI は複数アクションのステップを解釈できますが、より詳細な個別のステップに分割することで、ジャーニーの精度と再現性が向上する場合があります。
    • 「エラー: 許可された最大試行回数でアクションを正常に完了できませんでした」: このエラーが発生した場合は、失敗したステップを 2 つ以上の小さなステップに分割してみてください。このエラーは、AI がアプリとの最大数のやり取りを試行した後、アクションを完了できなかった場合に発生するためです。

サポートされている機能とサポートされていない機能

ジャーニーの作成時にサポートされている機能と、まだ完全にサポートされていない機能の概要は次のとおりです。以下のリストはすべてを網羅しているわけではありません。

ジャーニー内でサポートされているアクションは次のとおりです。

  • UI 要素をタップします。
  • 入力: テキスト フィールドにテキストを入力します。
  • 特定の方向にスワイプまたはスクロールして、UI を操作します。

次の機能は、現時点では完全にサポートされていません。また、動作が不安定になる可能性があります。

  • マルチフィンガー ジェスチャー(ピンチしてズームなど) - 画面上の 2 つ以上の接触点を同時に必要とする操作(ピンチしてズームインまたはズームアウトする、2 本の指でスワイプするなど)。
  • 長押し - 標準的なタップよりも長い時間、指を押し続ける操作。
  • ダブルタップ - 画面上の同じ場所をすばやく 2 回タップすること。
  • 画面の回転/折りたたみ - デバイスの向き(縦向きと横向きなど)や折りたたみ式デバイスの物理的な状態(開閉など)の変化を処理します。
  • メモリ - 以前のやり取りや手順で、特定の情報、コンテキスト、ユーザー入力の保持と呼び出しを行います。
  • カウント - 数量、頻度、進捗状況を正確に追跡します。
  • 条件ステートメント - 他の指定された条件が満たされているかどうかに基づいてアクションを実行します。

機能は常に改善されています。追加の機能については、後日このページでご確認ください。ジャーニーの改善にご協力ください。フィードバックをお寄せください

ジャーニーを実行する

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

ジャーニーをテストする手順は次のとおりです。

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

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

Android Studio のジャーニー テスト結果パネル。ステップの詳細と Gemini の推論が表示されています。
Android Studio のジャーニー テスト結果パネル。ステップの詳細と Gemini の推論が表示されています。

プリインストールされているアプリに対してジャーニーを実行する

テストデバイスにプリインストールされているアプリでジャーニーを実行できます。これは、アプリのプロダクション バージョンをテストする場合や、アプリを Android Gradle プラグイン 9.0.0 以降にまだ更新していない場合に便利です。

  1. Android Gradle プラグイン 9.0.0 以降に更新されたプロジェクトを開くか、新しいプロジェクトを作成します。
  2. ジャーニーを作成する
  3. ジャーニーの実行構成を編集し、次の環境変数を追加します。Android Studio からジャーニーを実行しようとすると、実行構成が自動的に作成されます。
    • JOURNEYS_CUSTOM_APP_ID をターゲット アプリのパッケージ ID に設定します。
  4. 編集したジャーニーを実行します。Android Studio は、指定したターゲット アプリでジャーニーの手順を実行します。

コマンドラインからジャーニーを実行する

コマンドラインから Journeys を実行するには、Android CLI を使用します。

結果を表示

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

Android Studio のジャーニー テスト結果パネル。ステップの詳細と Gemini の推論が表示されています。
Android Studio のジャーニー テスト結果パネル。ステップの詳細と Gemini の推論が表示されています。

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

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

既知の問題

  • ジャーニーをテストする場合、アプリのすべての権限はデフォルトで付与されます。
  • Android 15(API レベル 35)を搭載したデバイスでジャーニーをテストすると、「AndroidX Crawler」に対して「安全でないアプリがブロックされました」という警告がデバイスに表示されることがあります。[インストール] をクリックすると、このチェックをバイパスできます。または、デバイスの開発者向けオプションを設定して、[USB 経由のアプリも検証] オプションを無効にすることもできます。