Firebase Test Lab を使用すると、gcloud コマンドライン インターフェースを使用して複数のデバイスで iOS アプリをテストできます。ご利用方法については、こちらをお読みください。
Firebase プロジェクトを作成する
アプリの Firebase プロジェクトがない場合は、Firebase コンソールで [新規プロジェクトを作成] をクリックし、プロジェクトを作成します。テストを実行するには、プロジェクトの所有権または編集権限が必要です。
Spark プランと Flame プランをご利用の場合、1 日あたり限られた数のテスト実行を Test Lab で実施できます。毎日の割り当て制限なしで Test Lab を使用するには、Firebase Blaze プランにアップグレードする必要があります。
ローカル Google Cloud SDK 環境を構成する
- gcloud コマンドライン ツールをまだダウンロードしていない場合は、こちらからダウンロードします。Google Cloud SDK
- Cloud SDK インストールが最新であり、
gcloud firebaseコマンドが含まれていることを確認します。gcloud components update
- 認証情報が最新であることを確認します。
gcloud auth login
- gcloud で現在のプロジェクトを設定します。
gcloud config set project PROJECT_ID
アプリの XCtest をビルドする
テストをビルドするには、デバイスで次のコマンドを使用します。
プロジェクト
xcodebuild -project PATH/TO/YOUR_WORKSPACE.xcodeproj \ -scheme YOUR_SCHEME \ -derivedDataPath FOLDER_WITH_TEST_OUTPUT \ -sdk iphoneos build-for-testing
ワークスペース
xcodebuild -workspace PATH/TO/YOUR_WORKSPACE.xcworkspace \ -scheme YOUR_SCHEME \ -derivedDataPath FOLDER_WITH_TEST_OUTPUT \ -sdk iphoneos build-for-testing
テストが正常にビルドされたら、Test Lab にアップロードするために圧縮します。
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
テストを実施する
テスト ディメンションを選択する
Test Lab では、さまざまな iOS バージョン、デバイス、画面の向き、ロケールでテストを実施できます。これらの構成は、テストのテスト ディメンションと呼ばれます。各ディメンションのオプションを表示するには、次のコマンドの dimension を models、versions、または locales に置き換えます。
gcloud firebase test ios dimension list
画面の向きは多少わかりやすく、オプションは portrait と landscape だけです。
テスト ディメンションのリストを確認し、テストを実施するいくつかの組み合わせを選択します。Spark プランまたは Flame プランの場合、1 日に最大 5 つの組み合わせを実施できます。Blaze プランの場合は、テストの実施において 1 日あたりの組み合わせの数に制限はありませんが、1 回の実施に含めることができる組み合わせの数は最大 200 です。テストの制限と料金の詳細については、料金プランをご覧ください。
テストを実施する
一連のテスト ディメンションを選択したら、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=9.4
テスト結果を分析する
テストが終了すると、gcloud ツールによってテスト結果の基本サマリーが表示されます。サマリーには、Firebase コンソールで詳細な結果を表示するためのリンクが含まれています。結果の見方について詳しくは、Firebase テスト結果の分析をご覧ください。
今後のテストを自動化する
Test Lab で gcloud コマンドのスクリプトを作成する
シェル スクリプトまたはバッチファイルを使用してモバイルアプリのテストコマンドを自動化できます。自動化しない場合は gcloud コマンドラインを使用して実行します。次の bash スクリプトの例では、XCTest テストをタイムアウト 2 分で実行し、テストが正常に完了したかどうかを報告します。
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 にはいくつかの終了コードが用意されており、スクリプトまたはバッチファイルを使用して実行したテストの結果を詳細に把握することができます。
Test Lab のスクリプト終了コード
| 終了コード | 説明 |
|---|---|
| 0 | すべてのテスト実行が成功しました。 |
| 1 | 一般的なエラーが発生しました。ファイル名が存在しないか HTTP エラーやネットワーク エラーの可能性があります。 |
| 2 | 不明なコマンドまたは引数が指定されたため、テストが終了しました。 |
| 10 | テスト実行内の 1 つ以上のテストケース(テストしたクラスまたはクラスメソッド)が成功しませんでした。 |
| 15 | テスト マトリックスが成功したのか、または予期しないエラーで失敗したのかを Firebase Test Lab が判断できませんでした。 |
| 19 | ユーザーがテスト マトリックスをキャンセルしました。 |
| 20 | テスト インフラストラクチャのエラーが発生しました。 |
次のステップ
Test Lab for iOS コマンドライン SDK を確認する: gcloud firebase test ios

