Android Studio の Journeys は、AI のビジョン機能と推論機能を活用して、自然言語の指示に基づいてアプリをナビゲートしてテストします。 一連の指示(ジャーニー)は、AI がアプリに対して実行するアクションに変換されます。また、より複雑なアサーションを記述して説明することもできます。AI は、デバイスに表示される内容に基づいてアサーションを評価します。
Gemini は、目標を達成するために実行するアクションを推論するため、ジャーニーはアプリのレイアウトや動作のわずかな変更に対してより柔軟に対応できます。これにより、アプリのさまざまなバージョンやデバイス構成に対して実行する際のテストの不安定さが軽減されます。
ジャーニーは、Android Studio またはコマンドラインから、ローカルまたはリモートの Android 搭載デバイスに対して記述して実行できます。IDE には、ジャーニーを作成するための新しいエディタ エクスペリエンスと、Gemini の推論とジャーニーの実行をより適切に把握できる豊富な結果が用意されています。
ジャーニーを作成する
Android Studio には、ジャーニーの作成と編集を容易にするファイル テンプレートと新しいエディタ エクスペリエンスが用意されています。ジャーニーは XML 構文を使用して記述され、ジャーニーの説明と手順を整理します。
デバイスにプリインストールされているアプリに対してジャーニーを実行できます。
ジャーニーを作成して編集を開始する手順は次のとおりです。
- Android Studio の [Project] パネルで、ジャーニーを作成するアプリ モジュールを右クリックします。
- [New > Journey Test] を選択します。
表示されるダイアログで、ジャーニーの名前と説明を入力します。
の作成に使用します。
Android Studio のダイアログ。ジャーニー ファイル [Finish] をクリックします。Android Studio は、選択した名前でジャーニーの XML ファイルを作成します。[Code] ビューを使用して XML を直接編集することも、[Design] ビューを使用して編集を簡略化することもできます。
[Design] ビューでジャーニーを表示する場合は、テキスト フィールドを使用してジャーニーの各ステップを記述します。各ステップには、Gemini に実行させる説明アクションや、Gemini に評価させるアサーションを含めることができます。
キーボードで 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 回 連続してタップする操作。
- 画面の回転/折りたたみ - デバイスの向き (縦向きと横向きなど)や折りたたみ式デバイスの物理的な状態 (開閉など)の変化を処理する操作。
- メモリ - 以前のインタラクションやステップで特定の情報、コンテキスト、ユーザー 入力を保持して呼び出す操作。
- カウント - 数量、頻度、進捗状況を正確に追跡する操作。
- 条件文 - 指定された他の 条件が満たされているかどうかに基づいてアクションを実行する操作。
機能は常に改善されています。追加の機能については、後でこのページをご確認ください。Journeys の改善にご協力いただくため、フィードバックをお寄せください。
ジャーニーを実行する
他のインストルメンテーション テストと同様に、利用可能なローカルまたはリモート デバイスでジャーニーを実行できます。Android Studio は、ジャーニーの実行を把握するのに役立つ豊富な結果を生成します。
ジャーニーをテストする手順は次のとおりです。
- インストルメンテーション テストを実行する場合と同様に、メインツールバーから対象デバイスを選択します。
- テストするジャーニー XML ファイルに移動し、エディタで開きます。
- エディタで、次のいずれかを行います。
- [Design] ビューで、
[Run Journey] をクリックします。 - [Code] ビューで、XML でジャーニーの名前が定義されている場所の横にあるガターで
[Run 'test'] をクリックします。
- [Design] ビューで、
Android Studio は、Journeys Test 構成を作成し、対象デバイスで実行します。実行中、Android Studio はアプリをビルドしてデプロイし、Gemini に接続して、ジャーニーの各ステップで実行するアクションを決定します。
プリインストールされている任意のアプリに対してジャーニーを実行する
テストデバイスにプリインストールされているアプリでジャーニーを実行できます。これは、アプリのプロダクション バージョンをテストする場合や、アプリを Android Gradle プラグイン 9.0.0 以降にまだ更新していない場合に便利です。
- Android Gradle プラグイン 9.0.0 以降に 更新された新しいプロジェクトを開くか、作成します。
- ジャーニーを作成します。
- ジャーニーの
実行構成を編集し、次の環境変数を追加します。Android Studio からジャーニーを実行しようとすると、実行構成が自動的に作成されます。
JOURNEYS_CUSTOM_APP_IDをターゲット アプリのパッケージ ID に設定します。
- 編集したジャーニーを実行します。Android Studio は、指定したターゲット アプリでジャーニーのステップを実行します。
コマンドラインからジャーニーを実行する
コマンドラインから Journeys を実行するには、Android CLI を使用します。
結果を表示
Android Studio がジャーニーのテストを完了すると、テスト結果パネルが自動的に表示され、結果が表示されます。
Android Studio で実行する他のインストルメンテーション テストと比較して、ジャーニーの結果の表示方法にはいくつかの違いがあります。
- [Tests] パネルには、ジャーニーが個別のステップに分割されます。各ステップをクリックすると、Gemini がどのように実行したかについての詳細を確認できます。
- [Results] パネルには、Gemini がジャーニーをどのように理解して推論し、どのように実行されたかを把握するのに役立つ豊富な情報が表示されます。
- Gemini に送信されたスクリーンショットは、ステップ内の各アクションで視覚的な補助として表示されます。
- 各スクリーンショットの横には、実行されたアクションと、そのアクションを実行した理由が説明されています。
- ステップ内の各アクションには番号が付けられています。
既知の問題
Gradle 構成キャッシュの問題: Gradle 構成キャッシュが有効になっている場合、ジャーニーが予期しない動作をする可能性があります。たとえば、複数のジャーニー ファイルが存在する場合に、誤ったジャーニー ファイルが実行されることがあります。認証の問題が発生することもあります。
この問題を回避するには、プロジェクトの
gradle.propertiesファイルでorg.gradle.configuration-cache=falseを設定して、構成キャッシュを無効にします。ジャーニーをテストする場合、アプリのすべての権限がデフォルトで付与されます。
Android 15(API レベル 35)を実行しているデバイスでジャーニーをテストすると、デバイスに「Unsafe App Blocked」という警告が表示されることがあります。これは「AndroidX Crawler」に対して表示されます。[Install anyway] をクリックすると、このチェックをバイパスできます。または、 [デバイス上のデベロッパー向けオプションを構成]して、 オプション [**Verify apps over USB**]を無効にすることもできます。