このガイドでは、gcloud alpha device-run CLI を使用して iOS XCTest を実行し、 Google Cloud コンソールで結果を確認する方法について説明します。Google Cloud アカウントとプロジェクトがあることを前提としています。
Firebase Test Lab から Developer Device Platform に移行する場合は、移行ガイド、コマンドとフラグの変換、AI エージェントの移行スキルをご覧ください。
device-run CLI を使用するには、 Google Cloudプロジェクト ID を指定する必要があります。コマンドの概要については、gcloud alpha
device-run をご覧ください。
始める前に
以下の手順は、すでに次の処理が行われていることを前提としています。
- Google Cloud プロジェクトを作成済みであること。
- クイックスタートに沿って Developer Device Platform を設定します。
- ターミナルで
gcloudを使用して認証されている。 - 一般的な情報については、デバイスランの概要を確認しました。
- テストをコンパイルして ZIP にパッケージ化している。
ステップ 1. テスト実行を構成する
次のオプション フラグを使用して、テスト実行をカスタマイズできます(ただし、--device フラグのインスタンスが少なくとも 1 つ必要です)。
- 複数のデバイス:
--deviceフラグを複数回指定して、複数のデバイスで同時に同じテストを実行します。--device iphonese3-18-4 --device iphonese3-26-3または--device iphonese3-18-4,iphonese3-26-3 - 追加のアプリ:
--additional-appsを使用してテストを起動する前に、1 つ以上の追加の.ipaパッケージをインストールします。--additional-apps=/path/to/AdditionalApp.ipa - カスタム
.xctestrunファイル:--xctestrun-fileを使用してカスタム構成ファイルを渡します。--xctestrun-file=/path/to/CustomTests.xctestrun - Apple Xcode のバージョン: CLI でサポートされている Xcode のバージョンに
--xcode-versionフラグを使用して直接アクセスします。例:--xcode-version=xcode-16-4 - テスト タイムアウト: 実行時間を制限します。
--xctest-timeout=10m(有効な範囲は1m~1h、デフォルトは5m)。 - ラベル: ユーザー定義のメタデータをセッションにアタッチします。
--labels=env=staging,owner=my-team - 言語 / 地域: デバイスの言語 / 地域を設定します。
--locale=en-US - ファイルをデバイスに push する: テスト実行前にファイルをアプリデータ コンテナに push します。
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - デバイスからファイルを取得: テスト実行後にアプリデータ コンテナからファイルを取得します。
--paths-to-pull=com.example.app:/Documents/output.txt - フレーキー テストの再試行: フレーキー テストを再実行する最大試行回数を設定します。
--flaky-test-attempts=3(デフォルトは 1 回)。 - カスタム Cloud Storage バケット: 入力と出力にカスタム Cloud Storage バケットを指定します。
--bucket-name=my-custom-bucket(デフォルトはPROJECT_ID-devicerun)。 - サイズの大きい ZIP ファイルや IPA ファイルのアップロードには時間がかかることがあるため、Cloud Storage の
gs://パスを使用してファイルを直接参照することで、アップロード時間を短縮できます。
同期実行と非同期実行
デフォルトでは、送信コマンドはブロッキング(同期)です。テストが完了するまで待機し、結果の概要テーブルを出力します。
セッションを送信し、ファイルを Cloud Storage にアップロードした直後に戻るには、--async フラグを追加します。
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
これにより、セッション ID がすぐに返されます。sessions wait コマンドを使用して待機できます。
gcloud alpha device-run sessions wait SESSION_ID
このコマンドは、ジョブが完了するまでブロックされます。
複数のデバイス
複数のデバイスで同じテストを実行するには、--device フラグに複数のデバイス ID をカンマ区切りで指定するか、それぞれ異なるデバイス ID を指定する複数の --device フラグを指定します。
カンマ区切り
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
複数のフラグ
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
テストのタイムアウト
テストの実行時間を制限します。
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xctest-timeout=10m
有効範囲は 1m~1h で、デフォルトは 5m です。
ソフトウェア バージョン
利用可能なソフトウェア パッケージと Apple Xcode のバージョンを検出して使用し、テスト実行を構成する前に、ライフサイクル、サポートされているバージョン、メタデータを検査します。
まず、利用可能なすべてのソフトウェア パッケージとそのバージョンを一覧表示します。
gcloud alpha 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 を使用して、特定のパッケージを記述します。
gcloud alpha device-run software-versions describe xcode-16-4
出力は次のようになります。
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'
利用可能なソフトウェア バージョンがわかったので、次のように --xcode-version フラグを使用してテスト実行で使用できます。
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
ステップ 2. デバイスの種類を選択する
device-run CLI を使用すると、利用可能な物理デバイスで iOS テストを実行できます。利用可能なデバイスの完全なリストを表示するには、インタラクティブなデバイス カタログにアクセスするか、次のコマンドを実行します。
gcloud alpha device-run devices list
出力例:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
このリストをフィルタする方法については、デバイス カタログをご覧ください。テスト実行の対象として特定のデバイスを指定するには、対応する ID(例: iphonese3-18-4)を指定します。
ステップ 3. XCTest を準備してパッケージ化する
テストを実行する前に、テストをコンパイルし、署名されていることを確認し、コード署名を検証して、結果のアーティファクトを .xctestrun 構成とアプリケーション テスト バンドルを含む ZIP ファイルにパッケージ化する必要があります。
1. 物理的な iOS デバイス用のテストをビルドする
Xcode でプロジェクトを開き、テスト用にアプリとテスト ターゲットをビルドします。
- アプリ ターゲットとテストランナー ターゲットの両方で、Xcode でコード署名が正しく構成されていること(有効なプロビジョニング プロファイルとデベロッパー ID を指定していること)を確認します。
Xcode([Product] > [Build For] > [Testing])または
xcodebuildを使用して、テスト用にビルドします。ワークスペースの場合:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"スタンドアロン プロジェクトの場合:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
これにより、ビルド プロダクトが ./build/Build/Products に生成されます。
2. ビルド プロダクトと署名を確認する
ビルド後、アプリケーション、ランナー、.xctestrun マニフェストが ./build/Build/Products/ に生成されたことを確認します。ローカルで署名されている場合は、codesign を使用してバンドル署名を検証できます。
App Bundle を確認します。
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app予想される出力:
YourApp.app: valid on diskXCUITest を実行している場合は、テストランナー バンドルも検証します。
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.app予想される出力:
YourApp-Runner.app: valid on disk
3. ZIP アーカイブを作成する
ビルド出力プロダクト フォルダにある Debug-iphoneos ディレクトリと .xctestrun ファイルの両方を 1 つの ZIP アーカイブに圧縮します。
ビルド プロダクト ディレクトリから次のコマンドを実行します。
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
これにより、--test フラグで使用できるパッケージ化された MyTests.zip が作成されます。
ステップ 4. XCTest を実行する
次のフラグは必須です。
- デバイス:
--deviceを使用してデバイスを指定します。--device iphonese3-18-4 - テスト:
--testを使用してテスト zip ファイルを指定します。--test ./MyTests.zip
XCTest を実行するには、gcloud alpha device-run sessions submit xctest コマンドを使用します。前の手順でコンパイルしたテスト Zip ファイル(MyTests.zip)を指定する必要があります。
基本的なテスト セッションを実行するには:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
実行が開始されると、CLI に作成されたセッション ID と、結果が保存される Cloud Storage の宛先が表示されます。
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
ステップ 5. テスト実行の探索と管理
次のコマンドを使用して、アクティブな実行を追跡し、過去のセッションを管理できます。
- セッションの説明: セッションのライブ進行状況または最終結果をクエリします。
gcloud alpha device-run sessions describe SESSION_ID--fullを追加すると、デバイスの割り当て、実行 ID、Cloud Storage アーティファクト パスなどの詳細が表示されます。 - セッションを一覧表示する: 最近の実行を表示します。
gcloud alpha device-run sessions list --limit=10 - セッションをキャンセル: 実行中のテスト セッションを停止します。
gcloud alpha device-run sessions cancel SESSION_ID - オペレーションのキャンセル: 保留中またはアクティブなオペレーションを停止します。
gcloud alpha device-run operations cancel OPERATION_ID
次のステップ
次は、ログを検索して分析します。