このガイドでは、gcloud CLI を使用して XCTest またはゲーム ループ テストを実行する方法について説明します。
ステップ 1 : ローカルの Google Cloud SDK 環境を構成する
- Google Cloud SDK をダウンロードします。
- インストールが最新で、
gcloud firebase
コマンドgcloud components update
が含まれていることを確認してください。 - Google アカウント
gcloud auth login
を使用して gcloud CLI にログインします。 - gcloud で Firebase プロジェクトを設定します。ここで、 PROJECT_IDは Firebase プロジェクトの ID です:
gcloud config set project PROJECT_ID
これには gcloud CLI ツールが含まれます。
ステップ 2 : テストを実行する
XCTest を実行する
次のコマンドを実行して、テストの .zip ファイルをアップロードします (アプリをまだパッケージ化していない場合は、 XCTest のパッケージ化 を参照してください)。
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
テスト ディメンションを選択します。
Test Lab を使用すると、さまざまな iOS バージョン、デバイス、画面の向き、およびロケールでテストを実行できます。これらの構成は、テストのテスト ディメンションと呼ばれます。各ディメンションのオプション (デバイスの iOS バージョンでサポートされている Xcode バージョンなど) を表示するには、次のコマンドで、
dimension
をmodels
、versions
、またはlocales
に置き換えます。gcloud firebase test ios dimension list
画面の向きは、オプションが
portrait
とlandscape
しかないため、やや単純です。テスト ディメンションのリストに目を通し、テストを実行するいくつかの組み合わせを選択します。料金プランにアクセスして、1 日に実行できる組み合わせの最大数を確認してください。
テスト ディメンションのセットを選択したら、
firebase test ios run
コマンドを使用して Test Lab でテストを実行できます。テストするテスト ディメンションの組み合わせごとに、個別の--device
フラグを含めます。gcloud firebase test ios run --test PATH/TO/MyTests.zip \ --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \ --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \ etc...
テストがビルドされた Xcode バージョンと Test Lab で使用されるデフォルトの Xcode バージョンとの間の非互換性が原因で、テストが失敗する可能性があります。テストでサポートされている Xcode バージョンを指定するには、
--xcode-version
フラグを使用します。gcloud firebase test ios run --test PATH/TO/MyTests.zip \ --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \ --xcode-version=11.3
特別資格のテスト
明示的なアプリ ID を必要とする資格をテストするには、 --test-special-entitlements
フラグを設定します。 Test Lab は、特別な資格をサポートするために新しいバンドル ID を使用してアプリケーションに再署名します。そのため、アプリのバンドル ID への直接参照を含むリソースが zip ファイルに含まれていないことを確認してください。プッシュ通知
プッシュ通知リクエストを承認するために、ユーザーは秘密署名キーとキー ID - C7FD9DJAA8およびチーム ID - 9CKCGNNUQNを使用して JSON Web トークンを作成できます。生成されたトークンは 1 時間有効で、60 分ごとに更新する必要があります。詳細については、APNs へのトークンベースの接続の確立を参照してください。
アプリ グループアプリ グループ ID は普遍的に一意です。これは、ユーザー アプリに再署名するときに、Test Lab 開発者アカウントに関連付けられているアプリ グループ ID のみを使用できることを意味します。テストがアプリ グループに依存している場合、テストは失敗します。
ゲーム ループ テストを実行する
gcloud beta firebase test ios run
コマンドを実行し、次のフラグを使用して実行を構成します。
ゲーム ループ テストのフラグ | |
---|---|
--type | Required : 実行する iOS テストのタイプを指定します。テスト タイプ |
--app | Required : アプリの IPA ファイルへの絶対パス (GCS またはファイルシステム)。このフラグは、ゲーム ループ テストを実行している場合にのみ有効です。 |
--scenario-numbers | アプリで実行するループ (別名シナリオ)。 1 つのループ、1 つまたは複数のループ、またはループの範囲を入力できます。デフォルトのループは 1 です。 たとえば、 |
--device-model | テストを実行する物理デバイス (使用できる使用可能なデバイスを確認します)。 |
--timeout | テストを実行する最大期間。整数を入力して期間を秒単位で表すか、整数と列挙を入力して期間をより長い時間単位として表すことができます。 例えば:
|
たとえば、次のコマンドは、iPhone 8 Plus でループ 1、4、6、7、および 8 を実行するゲーム ループ テストを実行します。
gcloud beta firebase test ios run --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8 --device-model=iphone8plus
gcloud CLI の詳細については、リファレンス ドキュメントをご覧ください。
ステップ 4 (オプション) : 作成する将来のテストを自動化する
Test Lab を使用した gcloud コマンドのスクリプト作成
シェル スクリプトまたはバッチ ファイルを使用して、gcloud コマンドラインを使用して実行するモバイル アプリのテスト コマンドを自動化できます。このサンプル bash スクリプトは、2 分間のタイムアウトで XCTest を実行し、テストの実行が正常に完了したかどうかを報告します。
if gcloud firebase test ios run --test MyTest.zip --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
スクリプト終了コード
Test Lab には、スクリプトまたはバッチ ファイルを使用して実行したテストの結果をよりよく理解するために使用できるいくつかの終了コードが用意されています。
終了コード | ノート |
---|---|
0 | すべてのテスト実行に合格しました。 |
1 | 一般障害が発生しました。考えられる原因には、存在しないファイル名または HTTP/ネットワーク エラーが含まれます。 |
2 | 不明なコマンドまたは引数が指定されたため、テストは終了しました。 |
10 | テスト実行内の 1 つ以上のテスト ケース (テストされたクラスまたはクラス メソッド) が合格しませんでした。 |
15 | 予期しないエラーが発生したため、Firebase Test Lab はテスト マトリックスが成功したか失敗したかを判断できませんでした。 |
19 | テスト マトリックスはユーザーによってキャンセルされました。 |
20 | テスト インフラストラクチャ エラーが発生しました。 |
ステップ 5 : テスト結果の調査
テストが開始されると、テスト結果ページへのリンクが表示されます。選択したさまざまな構成の数と、テストに設定されたテスト タイムアウト時間によっては、テストの実行に数分かかる場合があります。テストの実行後、テスト結果を確認できます。テスト結果を解釈する方法の詳細については、 Firebase テスト ラボの結果の分析をご覧ください。
次のステップ
Google Cloud SDK のドキュメントを読んで、一般提供またはベータ版のテスト オプションを確認してください。