Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

gcloudCLIでテストする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このガイドでは、gcloud CLI を使用して XCTest またはゲーム ループ テストを実行する方法について説明します。

ステップ 1 : ローカルの Google Cloud SDK 環境を構成する

  1. Google Cloud SDK をダウンロードします。
  2. これには gcloud CLI ツールが含まれます。

  3. インストールが最新で、 gcloud firebaseコマンド
          gcloud components update
    が含まれていることを確認してください。
  4. Google アカウント
          gcloud auth login
    を使用して gcloud CLI にログインします。
  5. gcloud で Firebase プロジェクトを設定します。ここで、 PROJECT_IDは Firebase プロジェクトの ID です:
         gcloud config set project PROJECT_ID

ステップ 2 : テストを実行する

XCTest を実行する

  1. 次のコマンドを実行して、テストの .zip ファイルをアップロードします (アプリをまだパッケージ化していない場合は、 XCTest のパッケージ化 を参照してください)。

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. テスト ディメンションを選択します。

    Test Lab を使用すると、さまざまな iOS バージョン、デバイス、画面の向き、およびロケールでテストを実行できます。これらの構成は、テストのテスト ディメンションと呼ばれます。各ディメンションのオプション (デバイスの iOS バージョンでサポートされている Xcode バージョンなど) を表示するには、次のコマンドで、 dimensionmodelsversions 、またはlocalesに置き換えます。

    gcloud firebase test ios dimension list

    画面の向きは、オプションがportraitlandscapeしかないため、やや単純です。

    テスト ディメンションのリストに目を通し、テストを実行するいくつかの組み合わせを選択します。料金プランにアクセスして、1 日に実行できる組み合わせの最大数を確認してください。

  3. テスト ディメンションのセットを選択したら、 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 テストのタイプを指定します。テスト タイプxctest (デフォルト) またはgame-loopを入力できます。

--app

Required : アプリの IPA ファイルへの絶対パス (GCS またはファイルシステム)。このフラグは、ゲーム ループ テストを実行している場合にのみ有効です。

--scenario-numbers

アプリで実行するループ (別名シナリオ)。 1 つのループ、1 つまたは複数のループ、またはループの範囲を入力できます。デフォルトのループは 1 です。

たとえば、 --scenario-numbers=1-3,5は、ループ 1、2、3、および 5 を実行します。

--device-model

テストを実行する物理デバイス (使用できる使用可能なデバイスを確認します)。

--timeout

テストを実行する最大期間。整数を入力して期間を秒単位で表すか、整数と列挙を入力して期間をより長い時間単位として表すことができます。

例えば:

  • --timeout=200は、テストが最大 200 秒実行されると強制的に終了します。
  • --timeout=1hは、最大 1 時間実行すると、テストを強制的に終了します。

たとえば、次のコマンドは、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 のドキュメントを読んで、一般提供またはベータ版のテスト オプションを確認してください。