Android 向け Developer Device Platform Device Run

このガイドでは、gcloud beta device-run CLI を使用して Android インストルメンテーション テストを実行し、 Google Cloud コンソールで結果を確認する方法について説明します。 Google Cloud アカウントとプロジェクトがあることを前提としています。

この Google Cloud CLI を使用するには、 Google Cloud プロジェクト ID を指定する必要があります。コマンドの概要については、gcloud beta device-run をご覧ください。

始める前に

以下の手順は、次の作業が完了していることを前提としています。

  1. Google Cloud プロジェクトを作成済みであること。
  2. クイックスタートに沿って、デベロッパー デバイス プラットフォームを設定します。
  3. ターミナルで gcloud を使用して認証済み。
  4. 一般的な情報については、Device Run の概要を確認しました。
  5. Android 用のインストルメント化されたテストを構築しました。

ステップ 1. デバイスを選択する

device-run CLI を使用すると、利用可能な物理デバイスと仮想デバイスで Android テストを実行できます。利用可能なデバイスの完全なリストを表示するには、インタラクティブなデバイス カタログにアクセスするか、次のコマンドを実行します。

gcloud beta device-run devices list

出力例:

ID        MAKE    NAME     MODEL FORM      OS_VERSION CAPACITY  AVAILABILITY  PRODUCTS
tegu-35   Google  Pixel 9a tegu  PHYSICAL  35         MEDIUM    LOW           Automation, Streaming
tokay-34  Google  Pixel 9  tokay PHYSICAL  34         HIGH      HIGH          Automation, Streaming

このリストをフィルタする方法については、デバイス カタログをご覧ください。テスト実行の対象を特定のデバイスにするには、対応する ID(例: tegu-35)を送信コマンドに追加します。

ステップ 2. インストルメンテーション テストを実行する

Android テストでは以下のフラグが必要です。

  • デバイス: --device を使用してデバイスを指定します。--device shiba-35
  • テスト: --test を使用してテスト APK を指定します。--test /path/to/test.apk

テストを実行するには、次のコマンドに似たコマンドを発行します。ただし、デバイス ID とテストパスはご自身のものを使用してください。

gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--apps /path/to/app.apk \
--test /path/to/test.apk

ジョブの結果レポート フォルダは、gs://BUCKET_NAME/automation/sessions/SESSION_ID/ などの Cloud Storage パスにあります。リンクのテスト出力は https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/ のようになります。

ステップ 3. テスト実行を構成する

テストを実行したら、構成オプションを確認します。

  • 複数のデバイス: 複数のデバイスで同じテストを実行するには、--device フラグに複数のデバイス ID をカンマ区切りで指定します(例: --device shiba-34,tokay-36)。または、複数の --device フラグを指定し、それぞれに異なるデバイス ID を指定します(例: --device shiba-34 --device tokay-36)。
  • 追加のアプリ: --apps=path1,path2,...,path_n フラグを使用して、テストの実行前にインストールする APK を 1 つ以上指定することもできます。指定した順序でアプリがインストールされます。
  • テスト タイムアウト: 実行時間を制限します。--instrumentation-timeout=10m(有効な範囲は 1m1h で、デフォルトは 5m です)。
  • カスタム Cloud Storage バケット: --bucket-name= フラグを使用して Cloud Storage バケットを指定しない場合、Google Cloud CLI は PROJECT_ID-devicerun という名前のデフォルト バケットを使用します。
  • フレーキー テストの再試行: フレーキー テストを再実行する最大試行回数を設定します。--flaky-test-attempts=3(デフォルトは 1 回)。

ステップ 4. シャーディングを使用する

Developer Device Platform を継続的インテグレーションと継続的デリバリー(CI/CD)のワークフローに含めるには、テストのシャーディングを検討する必要があります。テストのシャーディングによって、一連のテストをサブグループ(シャード)に分割し、それぞれ分離して実行できるようにします。Developer Device Platform は自動的に各シャードを複数のデバイスで並行して実行するため、テスト全体を完了するまでの時間が短縮されます。

ステップ 4.1. シャーディング オプションの選択

ジョブのテストケースの数が少ない場合や、すべてのテストケースの合計実行時間が長くない場合は、シャーディングを使用する必要はありません。テストケースの数が多かったり、すべてのテストケースの合計実行時間が長い場合は、シャーディングの使用を検討してください。

デベロッパー デバイス プラットフォームは、スマート シャーディングと均一シャーディングの両方をサポートしています。テストをシャーディングする方法を決定する際は、次のオプションを検討してください。

  • すべてのテストケースに同じくらいの時間がかかる場合は、すべてのテストケースを n シャードに分割して、均一なシャーディングを使用します。

  • さまざまなテストケースの実行時間が大きく異なる場合は、スマート シャーディングを使用します。Developer Device Platform は、過去のテスト実行時間を使用してさまざまなシャードを作成し、すべてのシャードを同様の時間で完了しようとします。

均一なシャーディング

均一シャーディングでテストをシャーディングするには、次のように sessions submit instrumentation コマンドに --sharding-option=uniform フラグと --uniform-sharding-count= フラグを含めます。

gcloud beta device-run sessions submit instrumentation \
    --test path/to/test.apk \
 --device shiba-34,tokay-36 \
    --sharding-option=uniform \
    --uniform-sharding-count=2

Job status: 2 running を示す出力が表示されます。サービスは、デバイスごとに 1 つずつ、2 つのジョブを作成します。両方のジョブの入力は同じであるため、サービスは検証を一元化し、1 回だけ実行します。

完了すると、コマンドの最終出力に 2 つのジョブが別々に表示されます。

JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   PASSED
job-001   execution-000   PASSED

スマート シャーディング

スマート シャーディングでテストをシャーディングするには、次のように sessions submit instrumentation コマンドに --sharding-option=smart--smart-sharding-max-shard-count=--smart-sharding-target-duration=(分または 1 時間単位)、--smart-sharding-record-name= フラグを指定します。

gcloud beta device-run sessions submit instrumentation \
    --test path/to/test.apk \
    --device shiba-34,shiba-35,tokay-36 \
    --sharding-option=smart \
    --smart-sharding-max-shard-count=3 \
    --smart-sharding-target-duration=5m \
    --smart-sharding-record-name=test.yaml

3 つのジョブが実行されたことを示す最終出力が表示されます。

Session [session-3cd0564a] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   PASSED
job-001   execution-000   PASSED
job-002   execution-000   PASSED

ここで使用されるスマート シャーディング フラグの概要は次のとおりです。

  • --smart-sharding-max-shard-count=SMART_SHARDING_MAX_SHARD_COUNT - スマート シャーディング用に作成するシャードの最大数を指定します。設定されていない場合、または 0 に設定されている場合は、システム定義の最大制限が使用されます。有効な範囲は、物理デバイスの場合は 0 ~ 20、仮想デバイスの場合は 0 ~ 200 です。

  • --smart-sharding-target-duration=SMART_SHARDING_TARGET_DURATION - スマート シャーディングのシャードあたりの目標実行時間(2 分、10 分、1 時間など)を指定します。有効な範囲は 2 分~ 1 時間です。--sharding-option=smart の場合は必須。

  • --smart-sharding-record-name=SMART_SHARDING_RECORD_NAME - ファイル拡張子を除いた、スマート シャーディング レコード ファイルの名前を指定します。--sharding-option=smart の場合は必須。この YAML ファイルは、smart-sharding/ ディレクトリの --bucket-name で指定された Google CloudStorage バケットにあります。ファイルが存在しない場合は自動的に作成されます。存在する場合は、セッションの完了時に内容が更新されます。

ステップ 5. テスト実行を探索して管理する

sessions submit instrumentation コマンドの非同期モードと同期モードの両方で、sessions describe コマンドを使用して、実行中にジョブのステータスをクエリするか、完了後に結果を取得できます。

gcloud beta device-run sessions describe SESSION_ID

出力には、テスト結果の概要と、 Google Cloud コンソールの結果へのリンクが表示されます。次に例を示します。

Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   all             FAILED: 2 test cases failed, 5 passed

実行中および完了したすべてのセッションを一覧表示するには、次のコマンドを使用します。

gcloud beta device-run sessions list

プロジェクト内のセッションのリストを含む次のような出力が返されます。

SESSION_ID                                    START_TIME                STATE
session-4825e153                              2026-07-28T16:38:43.155Z  DONE
session-813ca602                              2026-07-28T22:40:32.415Z  DONE
session-67cd0570                              2026-07-16T08:25:55.474Z  DONE
session-17cc299c                              2026-07-14T14:31:33.649Z  DONE
session-911d0763                              2026-07-09T00:39:02.051Z  DONE
session-4e943fea                              2026-07-15T23:08:32.252Z  DONE
session-0132e458                              2026-08-20T18:33:19.751Z  DONE
session-1077f07b                              2026-07-28T22:35:43.848Z  DONE
session-71b054c6                              2026-07-15T01:15:41.643Z  DONE
session-4f8b2e45                              2026-08-06T23:11:56.161Z  DONE

sessions list コマンドは、すべての標準の Google Cloud CLI フラグ オプションをサポートしています。次に例を示します。

gcloud beta device-run sessions list --limit 5

次のような結果が返されます。

SESSION_ID                            START_TIME                STATE
session-4825e153                      2026-07-28T16:38:43.155Z  DONE
session-813ca602                      2026-07-28T22:40:32.415Z  DONE
93ec2df2-d5bf-4c36-b7f7-c2a4fb0dc3ce  2026-07-03T05:10:58.015Z  DONE
session-67cd0570                      2026-07-16T08:25:55.474Z  DONE
session-17cc299c                      2026-07-14T14:31:33.649Z  DONE

実行中のすべてのセッションを検索するには、次のコマンドを実行します。

gcloud beta device-run sessions list --filter RUNNING

実行中のセッションがある場合は、次のような結果が表示されます。

SESSION_ID        START_TIME  STATE
session-d7ff8b81              RUNNING

それ以外の場合は、Listed 0 items. が返されます。

実行中のセッションをキャンセルするには、セッション ID を指定して次のコマンドを実行します。

gcloud beta device-run sessions cancel SESSION_ID

セッションはキャンセルされるようにマークされるだけなので、コマンドはすぐに返されます。キャンセルはバックエンドで非同期的に行われます。

セッションがすでに終了している場合は、現在のステータスのみが出力されます。終了したセッションのキャンセルをリクエストしてもエラーにはなりません。

次のステップ

次は、ログを検索して分析します。