このページでは、Firebase Test Lab でのテスト実行に関するよくある質問と回答を紹介します。既知の問題も記載されています。お探しの情報が見つからない場合や、サポートが必要な場合は、Firebase Slack の #test-lab チャンネルに参加するか、Firebase サポートにお問い合わせください。
トラブルシューティング
テストの実行に長時間かかるのはなぜですか?
Test Lab カタログから大容量のデバイスを選択すると、テストの開始が早くなる場合があります。デバイスの容量が少ない場合、テストの実行に時間がかかることがあります。呼び出したテストの数が、選択したデバイスの容量を大幅に上回る場合、テストの完了に時間がかかることがあります。
デバイスの容量レベルにかかわらず、次の要因によりテストに長時間かかる場合があります。
- トラフィック。デバイスの可用性とテスト速度に影響します。
- デバイスやインフラストラクチャの障害(いつでも発生する可能性があります)。Test Lab で報告されているインフラストラクチャを確認するには、Firebase ステータス ダッシュボードをご覧ください。
Test Lab のデバイスの容量については、Android および iOS のデバイスの容量情報をご覧ください。
有意なテスト結果が得られないのはなぜですか?
有意なテスト結果が得られないことは、テスト実行のキャンセルやインフラストラクチャ エラーが原因でよく起こります。
インフラストラクチャ エラーは、ネットワーク エラーや予期しないデバイスの動作など、Test Lab の内部の問題が原因で発生します。Test Lab は有意な結果が得られないとのレポートを返す前に、インフラストラクチャ エラーが発生するテスト実行を内部で複数回再試行します。ただし、failFast を使用してこれらの再試行を無効にできます。
エラーの原因を判別するには、次の手順を実施します。
- Firebase ステータス ダッシュボードで既知のサービスの停止を確認します。
Test Lab でテストを再試行し、再現可能であることを確認します。
該当する場合は、別のデバイスまたはデバイスタイプでテストを実行してみてください。
問題が解決しない場合は、Firebase Slack の #test-lab チャンネルで Test Lab チームにお問い合わせください。
シャーディングによってテストの実行時間が長くなったのはなぜですか?
シャーディングを行うと、指定したシャードの数が Test Lab で使用できるデバイスの数を超えた場合に、テストの実行時間が長くなることがあります。この状況を回避するには、別のデバイスに切り替えてみてください。別のデバイスの選択について詳しくは、
デバイスの容量。
テストの開始に時間がかかるのはなぜですか?
テスト リクエストを送信すると、デバイスでテストを実行する準備として、まずアプリの検証、再署名などが行われます。通常、このプロセスは数秒未満で完了しますが、アプリのサイズなどの要因の影響を受ける可能性があります。
アプリの準備が完了すると、テスト実行がスケジュールされ、デバイスがテストを実行できるようになるまでキューに残ります。すべてのテスト実行が終了するまで、マトリックスのステータスは「保留中」になります(テスト実行がキューにあるか、アクティブかは関係ありません)。
テストが完了するまでに時間がかかるのはなぜですか?
テスト実行が完了すると、デバイスからテスト アーティファクトがダウンロードされ、処理を行った後に Cloud Storage にアップロードされます。このステップの所要時間は、アーティファクトの量とサイズに影響されることがあります。
よくある質問
Test Lab の無料の割り当てについて教えてください。割り当てを使い切った場合はどうなりますか?
Firebase Test Lab には、デバイスでのテストと Cloud APIs 使用に関する無料割り当てが用意されています。テストの割り当てでは標準の Firebase 料金プランが使用されますが、Cloud APIs の割り当てでは Firebase 料金プランは使用されないことに注意してください。
テストの割り当て
テストの割り当ては、テストの実行に使用されるデバイスの数によって決まります。Firebase Spark プランでは、テストに対する割り当てが固定されています(無料)。Blaze プランでは、時間の経過とともに Google Cloud の使用量が増加した場合、割り当て量を増やすことができます。現在 Spark プランをご利用で、テストの割り当て上限に達した場合は、翌日まで待つか、Blaze プランにアップグレードしてください。すでに Blaze プランをご利用の場合は、割り当ての増加をリクエストできます。詳細については、割り当てのテストをご覧ください。
テストの割り当て使用量は、Google Cloud コンソールでモニタリングできます。
Cloud Testing API の割り当て
Cloud Testing API には、プロジェクト 1 件の 1 日あたりのリクエスト数と、プロジェクト 1 件の 100 秒あたりのリクエスト数という 2 つの割り当て上限があります。使用状況は Google Cloud コンソールでモニタリングできます。
Cloud Tool Results API の割り当て
Cloud Tool Results API には、プロジェクト 1 件の 1 日あたりのクエリ数と、プロジェクト 1 件の 100 秒あたりのクエリ数という 2 つの割り当て上限があります。使用状況は Google Cloud コンソールでモニタリングできます。
API の上限の詳細については、Test Lab の Cloud APIs の割り当てをご覧ください。API の割り当てに達した場合:
バックエンドに到達したトラフィックが Test Lab から来たものであるかを判断するにはどうすればよいですか?
バックエンドで、IP 範囲と送信元 IP アドレスを照合することで、トラフィックの発信元が Firebase にホストされているテストデバイスかどうかを判断できます。
Test Lab は VPC-SC と連携しますか?
Test Lab は VPC-SC では機能しません。そのため、Test Lab の内部ストレージとユーザーの結果バケット間でのアプリとその他のテスト アーティファクトのコピーがブロックされます。
Test Lab で不安定なテストを検出するにはどうすればよいですか?
テストにおける不安定な動作を検出するには、
--num-flaky-test-attempts
オプションの使用をおすすめします。デフレークの再実行は、通常のテスト実行と同様に、1 日の割り当てに対して課金またはカウントされます。
次の点にご注意ください。
- 障害が検出されると、テスト実行全体が再び実行されます。失敗したテストケースのみを再試行することはできません。
- デフレークの再試行は、同時に実行されるようスケジュール設定されますが、トラフィックが使用可能なデバイスの数を超えている場合などには、同時に実行される保証はありません。
解像度などのデバイスの詳細はどこで確認できますか?
詳細なデバイス情報は API を介して確認できます。これは、describe コマンドを使用して gcloud クライアントからアクセスできます。
gcloud firebase test ios models describe MODEL
iOS テストでシャーディングを使用できますか?
Test Lab for iOS では、シャーディングはネイティブにサポートされていません。ただし、Flank クライアントを使用すると、iOS テストケースをシャーディングできます。
これを利用するには、.xctestrun
ファイルで OnlyTestIdentifiers
キーと値を設定します。詳しくは、xcodebuild.xctestrun
の man
ページをご覧ください。
既知の問題
ログイン キャプチャ
Robo テストは、ログイン用の認証情報に加えて、その他のユーザー操作(キャプチャの入力など)を必要とするログイン画面を迂回することはできません。
UI フレームワークのサポート
Robo テストは、Android UI フレームワークの UI 要素(View
、ViewGroup
、WebView
オブジェクトを含む)を使用するアプリに最適です。Robo テストを使用して、他の UI フレームワークを使用するアプリ(Unity ゲームエンジンを使用するアプリを含む)を実行する場合、テストは最初の画面を調べただけで終了することがあります。