gcloud コマンドラインから Firebase Test Lab を使ってみる

Firebase Test Lab を使用すると、gcloud コマンドライン インターフェースを使用して複数の端末で iOS アプリをテストできます。ご利用方法については、こちらをお読みください。

Firebase プロジェクトを作成する

アプリの Firebase プロジェクトがない場合は、Firebase コンソールで [新規プロジェクトを作成] をクリックし、プロジェクトを作成します。テストを実行するには、プロジェクトの所有権または編集権限が必要です。

Spark プランと Flame プランをご利用の場合、1 日あたり限られた数のテスト実行を Test Lab で実施できます。毎日の割り当て制限なしで Test Lab を使用するには、Firebase Blaze プランにアップグレードする必要があります。

ローカル Google Cloud SDK 環境を構成する

  1. gcloud コマンドライン ツールをまだダウンロードしていない場合は、こちらからダウンロードします。Google Cloud SDK
  2. Cloud SDK インストールが最新であり、gcloud firebase コマンドが含まれていることを確認します。
    gcloud components update
  3. 認証情報が最新であることを確認します。
    gcloud auth login
  4. gcloud で現在のプロジェクトを設定します。
    gcloud config set project PROJECT_ID
  5. 請求先 / 割り当てプロジェクトとして現在のプロジェクトを使用するように、gcloud を構成します。
    gcloud config set billing/quota_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 バージョン、端末、画面の向き、ロケールでテストを実施できます。これらの構成は、テストのテスト ディメンションと呼ばれます。各ディメンションのオプションを表示するには、次のコマンドの dimensionmodelsversions、または locales に置き換えます。

gcloud alpha firebase test ios dimension list

画面の向きは多少わかりやすく、オプションは portraitlandscape だけです。

テスト ディメンションのリストを確認し、テストを実施するいくつかの組み合わせを選択します。Spark プランまたは Flame プランの場合、1 日に最大 5 つの組み合わせを実施できます。Blaze プランの場合は、テストの実施において 1 日あたりの組み合わせの数に制限はありませんが、1 回の実施に含めることができる組み合わせの数は最大 200 です。テストの制限と料金の詳細については、料金プランをご覧ください。

テストを実施する

一連のテスト ディメンションを選択したら、firebase test ios run コマンドを使用して Test Lab でテストを実施できます。テストするテスト ディメンションの組み合わせごとに、個別の --device フラグを含めます。

gcloud alpha 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...

テスト結果を分析する

テストが終了すると、gcloud ツールによってテスト結果の基本サマリーが表示されます。サマリーには、Firebase コンソールで詳細な結果を表示するためのリンクが含まれています。結果の見方について詳しくは、Firebase テスト結果の分析をご覧ください。

今後のテストを自動化する

Test Lab で gcloud コマンドのスクリプトを作成する

シェル スクリプトまたはバッチファイルを使用してモバイルアプリのテストコマンドを自動化できます。自動化しない場合は gcloud コマンドラインを使用して実行します。次の bash スクリプトの例では、XCTest テストをタイムアウト 2 分で実行し、テストが正常に完了したかどうかを報告します。

if gcloud alpha 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 alpha firebase test ios

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。