Developer Device Platform デバイスランへようこそ。このサービスを使用すると、クラウド内の物理デバイスと仮想 Android デバイス、物理 iOS デバイスでテストと実行可能ファイルを実行できます。このページでは、Android インストルメンテーション テスト、Android 実行可能ファイル、iOS テストの実行における機能と共通点について説明します。プラットフォーム固有の手順については、 Android 用 デバイスラン と iOS 用 デバイスラン を ご覧ください。
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)が含まれます。 - 柔軟なデバイス ターゲティング: OS とモデル
の識別子(Pixel モデルや iPhone モデルなど)を使用して、デバイス カタログにリストされている特定の物理デバイスまたは仮想デバイスを
ターゲットにします。
--deviceフラグを使用します。 - マルチデバイスの並列実行: カンマ区切りのデバイス
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://パスを使用して 直接参照することで、アップロード時間を短縮できます。 - [Result files]: 出力アーティファクトは、Cloud Storage
バケットにアップロードされます。
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/
入力の検証
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
次のステップ
Android のテストまたは実行可能ファイルを実行するまたは iOS テストを実行する with Developer Device Platform。