このガイドでは、gcloud beta
device-run CLI を使用して iOS XCTest を実行し、 Google Cloud コンソールで結果を確認する方法について説明します。 Google Cloud アカウントとプロジェクトがあることを前提としています。
device-run CLI を使用するには、 Google Cloudプロジェクト ID を指定する必要があります。コマンドの概要については、gcloud beta device-run をご覧ください。
始める前に
以下の手順は、次の作業が完了していることを前提としています。
- Google Cloud プロジェクトを作成済みであること。
- クイックスタートに沿って、デベロッパー デバイス プラットフォームを設定します。
- ターミナルで
gcloudを使用して認証済み。 - 一般的な情報については、Device Run の概要を確認しました。
- テストをコンパイルして ZIP にパッケージ化した。
ステップ 1. デバイスの種類を選択する
device-run CLI を使用すると、利用可能な実機で iOS テストを実行できます。利用可能なデバイスの完全なリストを表示するには、インタラクティブなデバイス カタログにアクセスするか、次のコマンドを実行します。
gcloud beta 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)を送信コマンドに追加します。
ステップ 2. 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 が作成されます。
ステップ 3. XCTest を実行する
次のフラグは必須です。
- デバイス:
--deviceを使用してデバイスを指定します。--device iphonese3-18-4 - テスト:
--testを使用してテスト zip ファイルを指定します。--test ./MyTests.zip
XCTest を実行するには、gcloud beta device-run sessions submit xctest コマンドを使用します。前の手順でコンパイルしたテスト Zip ファイル(MyTests.zip)を指定する必要があります。
基本的なテスト セッションを実行するには:
gcloud beta 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....
ステップ 4. テスト実行を構成する
次のオプション フラグを使用してテスト実行をカスタマイズできます(ただし、--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を使用してカスタム構成ファイルを渡します。 - テストのタイムアウト: 実行時間を制限します。
--xctest-timeout=10m(有効な範囲は1m~1hで、デフォルトは5mです)。 - ラベル: ユーザー定義のメタデータをセッションに関連付けます。
--labels=env=staging,owner=my-team - デバイスにファイルを 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://パスを使用してファイルを直接参照することで、アップロード時間を短縮できます。
ステップ 5. テスト実行を探索して管理する
次のコマンドを使用して、アクティブな実行を追跡し、過去のセッションを管理できます。
- セッションの説明: セッションのライブ進行状況または最終結果をクエリします。
gcloud beta device-run sessions describe SESSION_ID--fullを追加すると、デバイス割り当て、実行 ID、Cloud Storage アーティファクト パスなどの詳細が表示されます。 - セッションを一覧表示: 最近の実行を表示します。
gcloud beta device-run sessions list --limit=10 - セッションをキャンセル: 実行中のテスト セッションを停止します。
gcloud beta device-run sessions cancel SESSION_ID - オペレーションをキャンセル: 保留中またはアクティブなオペレーションを停止します。
gcloud beta device-run operations cancel OPERATION_ID
次のステップ
次は、ログを検索して分析します。