デベロッパー デバイス プラットフォームのデバイス実行の概要

Developer Device Platform Device Run へようこそ。このサービスでは、クラウド内の物理 Android デバイス、仮想 Android デバイス、物理 iOS デバイスでテストを実行できます。このページでは、Android テストと iOS テストの実行における共通点について説明します。プラットフォーム固有の手順については、Android のデバイス実行と iOS のデバイス実行をご覧ください。

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

次のフラグは必須です。

  • デバイス: --device: --device shiba-35 または --device iphonese3-18-4 を使用してデバイスを指定します。
  • Test: --test: --test /path/to/test.apk または --test /path/to/test.ipa を使用してテスト APK または IPA を指定します。

次の構成オプションは、Android テストと iOS テストの両方に共通です。

入力と出力の Cloud Storage パス

  • カスタム Cloud Storage バケット: 入力と出力にカスタム Cloud Storage バケットを指定できます。--bucket-name=my-custom-bucket --bucket-name= フラグを使用して Cloud Storage バケットを指定しない場合、Google Cloud CLI は PROJECT_ID-devicerun という名前のデフォルト バケットを使用します。
  • 入力ファイル: --test、--additional-apps、または --xctestrun-file フラグを使用してローカルパスを指定すると、コマンドを実行するたびに、Google Cloud CLI は gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ の下の Cloud Storage バケットに自動的にコピーします。ここで、BUCKET_NAME のデフォルトは PROJECT_ID-devicerun です。
  • クラウドパス: 大量のファイルをアップロードすると時間がかかるため、Cloud Storage の gs:// パスを使用して直接参照し、アップロード時間を短縮できます。
  • 結果ファイル: 出力アーティファクトは、gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/ の Cloud Storage バケットにアップロードされます。

同期実行と非同期実行

デフォルトでは、送信コマンドはブロッキング(同期)です。テストが完了するまで待機し、結果の概要テーブルを出力します。

セッションを送信し、ファイルを Cloud Storage にアップロードした直後に戻るには、--async フラグを追加します。

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --async

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --async

これにより、セッション ID がすぐに返されます。sessions wait コマンドを使用して待機できます。

gcloud beta device-run sessions wait SESSION_ID

コマンドは、ジョブが完了するまでブロックされます。

複数のデバイス

複数のデバイスで同じテストを実行するには、カンマで区切られた複数のデバイス ID を指定した --device フラグを指定するか、それぞれ異なるデバイス ID を指定した複数の --device フラグを指定します。

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34,tokay-36 \
  --test ./ANDROID_TESTS.apk

または

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34 \
  --device tokay-36 \
  --test ./ANDROID_TESTS.apk

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4,iphonese3-26-3 \
  --test ./IOS_TESTS.zip

または

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --device iphonese3-26-3 \
  --test ./IOS_TESTS.zip

テストのタイムアウト

テストの実行時間を制限します。

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --instrumentation-timeout=10m

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xctest-timeout=10m

有効な範囲は 1m~1h で、デフォルトは 5m です。

ソフトウェアのバージョン

利用可能なソフトウェア パッケージと AndroidX Test Orchestrator および Apple Xcode のバージョンを検出して使用し、テスト実行を構成する前に、ライフサイクル、サポートされているバージョン、メタデータを検査します。

まず、利用可能なすべてのソフトウェア パッケージとそのバージョンを一覧表示します。

gcloud beta device-run software-versions list

次のような出力が返されます。

ID                                NAME                              SOFTWARE_TYPE               VERSION  STATE   IS_DEFAULT
androidx-test-orchestrator-1-4-1  AndroidX Test Orchestrator 1.4.1  ANDROIDX_TEST_ORCHESTRATOR  1.4.1    ACTIVE  True
androidx-test-orchestrator-1-6-1  AndroidX Test Orchestrator 1.6.1  ANDROIDX_TEST_ORCHESTRATOR  1.6.1    ACTIVE
xcode-16-4                        Xcode 16.4                        XCODE                       16.4     ACTIVE
xcode-26-2                        Xcode 26.2                        XCODE                       26.2     ACTIVE  True

次に、リストから正確なリソース ID を使用して特定のパッケージを記述します。

Android

gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1

iOS

gcloud beta device-run software-versions describe xcode-16-4

次のような出力が返されます。

Android

id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
  state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1

iOS

id: xcode-16-4
lifecycle:
  state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:

-   '15.0'
-   '15.1'
-   '15.2'
-   '15.4'
-   '15.7'
-   '16.0'
-   '16.1'
-   '16.2'
-   '16.3'
-   '16.5'
-   '16.6'
-   '18.0'
-   '18.3'
-   '18.4'
version: '16.4'

利用可能なソフトウェア バージョンがわかったので、--orchestrator-version フラグまたは --xcode-version フラグを使用して、次のようにテスト実行で使用できます。

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --orchestrator-version=1.4.1

詳細については、Orchestrator を有効にするをご覧ください。

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

詳しくは、iOS 向けデバイスランをご覧ください。

入力の検証

Developer Device Platform は、アーティファクトなどの入力を検証しようとします。エラーのある入力が検出された場合は、PASSED や FAILED ではなく ERROR を返します。

Session [session-94b57778] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   ERROR

次に、sessions describe コマンドに --full を追加して、セッションの詳細を表示します。

gcloud beta device-run sessions describe --full session-94b57778

出力は次のようになります。

name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
  displayName: instrumentation-session
  jobConfigs:
  -   action:
      androidInstrumentationTest:
        testInstallable:
          files:
          -   gcsInputFile:
              path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
    allocationConfig:
      deviceConfigs:
      -   actions:
        -   androidLogcat: {}
        requirement:
          deviceId: mediumphone-arm-34
    displayName: job-000
  outputDirectoryConfig:
    gcsOutputDirectory:
      path: gs://user-test1-devicerun/automation/sessions
sessionReport:
  endTime: '2026-09-16T18:55:49.721Z'
  id: ed681f23-669b-4464-8a93-b28456e58136
  jobReports:
  -   displayName: job-000
    endTime: '2026-09-16T18:55:45.839Z'
    executionReports:
    -   displayName: execution-000
      endTime: '2026-09-16T18:55:46.694Z'
      id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
      result:
        cause:
          summary:
            message: The instrumentation target package does not match any of the
              installable packages.
            reason: INSTRUMENTATION_TARGET_MISMATCH
            type: CUSTOMER
        resultType: ERROR
      startTime: '1970-01-01T00:00:00Z'
      status:
        statusType: PENDING
    id: 953b5106-3c20-40f0-aceb-18af89cd1b83
    result:
      cause:
        summary:
          message: The instrumentation target package does not match any of the installable
            packages.
          reason: INSTRUMENTATION_TARGET_MISMATCH
          type: CUSTOMER
      resultType: ERROR
    startTime: '2026-09-16T18:55:31.651Z'
    status:
      statusType: DONE
  result:
    resultType: ERROR
  startTime: '2026-09-16T18:55:24.442Z'
  status:
    statusType: DONE

次のステップ

Developer Device Platform で Android テストを実行するか、iOS テストを実行する。