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

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

Test Lab for iOS は、5 月 16 日まで gcloud コマンドラインで使用できません。 それ以前に iOS アプリをテストする場合は、Firebase コンソールを使用してください。

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 プロジェクトをプロジェクト ID に設定します。
    gcloud config set project PROJECT_ID
  4. 認証情報が最新であることを確認します。
    gcloud auth login

アプリの 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_PROJECT_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun

テストを実行する

テストを実行する前に、テストを実行する端末の組み合わせを選択する必要があります。端末のリストを表示するには、端末で次のコマンドを入力します。

gcloud alpha firebase test ios models list

選択したら、Test Lab でテストを実行します。

gcloud alpha firebase test ios run --test PATH/TO/MyTests.zip \
  --device model=MODEL_ID_1,version=VERSION_ID_1 \
  --device model=MODEL_ID_2,version=VERSION_ID_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 テスト インフラストラクチャのエラーが発生しました。

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

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