Developer Device Platform デバイスランへようこそ。このプラットフォームでは、クラウド内の物理および仮想 Android デバイスと物理 iOS デバイスでテストと実行可能ファイルを実行できます。このページでは、Android インストルメンテーション テスト、Android 実行可能ファイル、iOS XCTest テストの実行に関する機能の概要と共通点について説明します。
Firebase Test Lab から Developer Device Platform に移行する場合は、移行ガイド、コマンドとフラグの変換、AI エージェントの移行スキルをご覧ください。
この Google Cloud CLI を使用するには、 Google Cloud プロジェクト ID を指定する必要があります。コマンドの概要については、gcloud beta
device-run をご覧ください。
主な機能
Developer Device Platform のデバイスランは、物理モバイル デバイスと仮想モバイル デバイスで自動テストスイートを実行できる Google Cloud サービスです。最新の継続的インテグレーションと継続的デリバリー(CI/CD)ワークフロー向けに構築されたデバイスランは、Google Cloud CLI(gcloud beta device-run)を介したコマンドライン制御を提供します。これにより、チームは専用のハードウェア環境と仮想環境でテストスイートを実行、管理、スケーリングできます。
1. クロスプラットフォームの自動テスト
- Android と iOS のサポート: デバイスランは、Android インストルメンテーション テスト(
.apk)、Android 実行可能ファイル(コンパイル済みバイナリ)、iOS XCTest(.ipaまたは.zip)などの組み込みテスト フレームワークをサポートしています。 - 柔軟なデバイス ターゲティング:
--deviceフラグを使用して、OS とモデルの識別子(Google Pixel や iPhone のモデルなど)で、デバイス カタログに記載されている特定の物理デバイスまたは仮想デバイスをターゲットに設定します。 - マルチデバイスの並列実行: カンマ区切りのデバイス ID を指定するか、複数の
--deviceフラグを指定することで、複数のデバイスで同じテストスイートを同時に実行します。
2. 柔軟な実行モードと制御
- 同期送信と非同期送信: テスト実行はデフォルトで同期的に動作し、完了時に概要が表示されます。
--asyncフラグを追加すると、非ブロッキング実行のセッション ID がすぐに返されます。これは、後でgcloud beta device-run sessions waitを使用してモニタリングできます。 - カスタム実行タイムアウト*:
--instrumentation-timeoutまたは--xctest-timeoutを使用して、実行時間の制限を構成します。 - フレーキー テストの再試行:
--flaky-test-attemptsフラグを使用して、フレーキー テストのテスト実行の最大再試行回数を設定します。
3. ソフトウェア バージョンと依存関係の管理
- 構成可能なテスト環境*: テスト実行を開始する前に、AndroidX Test Orchestrator や Apple Xcode などの特定のソフトウェア環境バージョンを検出、検査、選択します。
- バージョンの検出:
gcloud beta device-run software-versions listコマンドとdescribeコマンドを使用して、アクティブなソフトウェア パッケージ、サポートされている OS バージョン、デフォルトのランタイム仕様を表示します。
4. ストレージとアーティファクトの管理
- Cloud Storage の統合: テスト入力(APK、IPA、サポートアプリ)と出力アーティファクト(ログ、テストレポート)は Cloud Storage に保存されます。
- バケットの柔軟性: デフォルトでは、
PROJECT_ID-devicerunという名前のプロジェクト バケットに自動的にルーティングされるか、--bucket-nameフラグで指定されたカスタム バケットにルーティングされます。このバケットは完全に制御できます。不要になった場合は、コンテンツを手動で削除するか、バケットで自動ライフサイクル管理を構成する必要があります。手順については、オブジェクトの削除についてをご覧ください。 - 直接クラウドパス: 大容量ファイルの場合は、既存の
gs://パスを直接参照して、アップロードのオーバーヘッドを排除します。
5. Android の高度なテスト機能
- Android Test Orchestrator: 各テストを独自の
Instrumentationインスタンスで実行してテスト実行を分離することで、アプリの状態の共有を防ぎ、アプリケーションのクラッシュを分離します。 - テスト シャーディング:
- 均一シャーディング: 指定された数のシャード(
--sharding-option=uniform)にテストケースを均等に分割します。 - スマート シャーディング: 過去のテスト実行データを使用して、特定の合計実行時間(
--sharding-option=smart)を目標に、シャード間でテストケースを動的に分散します。
- 均一シャーディング: 指定された数のシャード(
6. セッション管理と診断
- セッションの完全な制御:
sessions list、sessions describe、sessions cancelを使用して、アクティブなテスト実行または過去のテスト実行を一覧表示、記述、フィルタリング、キャンセルします。 - 早期入力検証: 送信されたテスト バイナリと構成アーティファクトの自動検証を実行し、エラーが発生した場合は、明示的なエラーの詳細と根本原因(ターゲット パッケージの不一致など)を表示します。
主要な設定
必須フラグ
次のフラグは必須です。
- デバイス:
--device:--device shiba-35または--device iphonese3-18-4を使用してデバイスを指定します。 - テストまたは実行可能ファイル: テスト実行の場合は
--test(--test /path/to/test.apkまたは--test /path/to/MyTests.zip)を使用してテスト パッケージを指定します。Android 実行可能ファイル実行の場合は--executable(--executable /path/to/my_executable)を使用して実行可能バイナリまたはスクリプトを指定します。
次の構成オプションは、デバイスラン セッション全体で共通です。
入力と出力の Cloud Storage パス
- カスタム Cloud Storage バケット: 入力と出力にカスタム Cloud Storage バケットを指定できます。
--bucket-name=my-custom-bucket--bucket-name=フラグを使用して Cloud Storage バケットを指定しない場合、Google Cloud CLI はPROJECT_ID-devicerunという名前のデフォルト バケットを使用します。 - 入力ファイル:
--test、--executable、--apps、--additional-apps、--other-files-to-push、--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 バケットにアップロードされます。
入力の検証
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 インストルメンテーション テスト、Android 実行可能ファイル、または iOS XCTest を実行します。