Firebase Test Lab を使用すると、さまざまなデバイスや構成でアプリの品質をテストできます。このガイドでは、Test Lab の主なコンセプト、iOS サービス、テストの開始手順の概要を説明します。
Test Lab の割り当てと料金プランの詳細については、使用量、割り当て、料金をご覧ください。
主なコンセプトと用語
選択したデバイスと構成に対して、テストまたは一連のテストケースを実行すると、Test Lab はアプリに対してテストを一括して実行し、その結果をテスト マトリックスとして表示します。
デバイス × テスト実行 = テスト マトリックス
- デバイス
- スマートフォン、タブレット、ウェアラブル デバイスなど、テストを実行する実機または仮想デバイス(Android のみ)。テスト マトリックス内のデバイスは、デバイスモデル、OS のバージョン、画面の向き、ロケール(地域や言語の設定とも呼ばれます)で識別されます。
- テスト、テスト実行
- デバイス上で実行するテスト(または一連のテストケース)。テストは、デバイスごとに 1 つ実行するか、必要に応じてシャーディングし、そのテストケースを複数のデバイスで実行できます。
- テスト マトリックス
- テストの実行状況とテスト結果が含まれます。マトリックス内のいずれかのテスト実行が失敗すると、マトリックス全体が失敗となります。
ステップ 1: Test Lab にアップロードするテストを準備する
Test Lab では、次のテストを実行できます。実機では、すべてのテストタイプが最大 45 分実行できます。また、キャッチされない例外が発生すると、テストは失敗します。
XCTest(XCUITests を含む): XCTest フレームワークを使用して記述した単体テスト。Test Lab で実行する XCTest の変更手順については、XCTest の作成をご覧ください。
ゲームループ テスト: 「デモモード」を使用して、ゲームアプリでのプレーヤーの操作をシミュレートするテスト。複数のユーザーに対するゲームのパフォーマンスに問題がないことを確認できる、高速かつスケーラブルなテストです。ゲームループ テストの実行を選択すると、次のことを行えます。
ゲームエンジンにネイティブなテストを作成する。
異なる UI やテスト フレームワークに対する同じコードの記述を避ける。
必要に応じて、1 回のテスト実行で実行する複数のループを作成する。また、ループはラベルを使用して整理できるため、状況を常に把握して特定のループを再実行することが可能です。
Test Lab でテストを実行する手順については、ゲームループ テストの実行をご覧ください。
ステップ 2: テストを実行するツールを選択する
テストの実行には、次に挙げるツールを選択できます。
Firebase コンソールを使用すると、アプリをアップロードして、どこからでもテストを開始できます。このツールの使用方法については、Firebase コンソールを使用したテストをご覧ください。
gcloud コマンドライン インターフェース(CLI)では、コマンドラインからインタラクティブにテストを実行できます。また、自動化されたビルドとテストプロセスの一部として、スクリプト作成にも適しています。このツールの使用方法については、gcloud CLI を使用したテストをご覧ください。
実際のデバイスでテストする前に、シミュレータ上でローカルにテストを行い、意図したとおりに動作することを確認します。手順については、ローカルでテストを実行するをご覧ください。
ステップ 3: テストデバイスを指定する
Test Lab を使用すると、Google データセンターでホストされているさまざまな iOS デバイスやモデル上でアプリに対してテストを実行できます。詳細については、使用可能なデバイスをご覧ください。
ステップ 4: テスト結果を確認する
テストを開始する方法にかかわらず、すべてのテスト結果は Test Lab で管理され、オンラインで表示できます。
テスト結果の概要は、自動的に保存され、Firebase コンソールに表示できます。これには、テストケース固有の動画、スクリーンショット、合格、不合格、不安定な結果のテスト数など、テストに最も関連のあるデータが含まれています。
未処理のテスト結果はテストログとアプリのエラーの詳細を含み、Google Cloud バケットに自動的に保存されます。バケットを指定する場合は、ストレージの費用が発生します。指定しない場合、バケットは Test Lab によって無料で作成されます。
詳細については、Firebase Test Lab の結果を分析するをご覧ください。
デバイスのクリーンアップ
Google ではアプリデータのセキュリティを重要視しています。業界標準のベスト プラクティスに従い、テストが終了するごとに、アプリデータを削除し、実機のシステム設定をリセットして、新しいテストを行う準備を整えます。カスタムのリカバリ イメージでフラッシュできるデバイスの場合は、テストを実行するたびにデバイスをフラッシュするためのステップを加えています。
Test Lab で仮想デバイスを使用する場合は、デバイスの使用後にそれらのインスタンスが削除されるため、どのテストでも新しい仮想デバイス インスタンスが使用されます。
Test Lab デバイスにプライベート バックエンド サーバーへのアクセスを許可する
一部のモバイルアプリは、テスト中に正常に動作するために、プライベート バックエンド サービスと通信する必要があります。バックエンド サーバーがファイアウォール ルールで保護されている場合は、以下の IP アドレス ブロックを使用して、ファイアウォールにルートを開くことで、Test Lab の実機と仮想デバイスのアクセスを許可できます。
モバイル広告
Test Lab はアプリのテストを自動化するスケーラブルなインフラストラクチャを提供していますが、この機能は不正な広告収益を生むように設計された悪意のあるアプリによって悪用される可能性があります。
この問題には次のように対処してください。
サードパーティのデジタル広告プロバイダ(広告ネットワーク、デマンドサイド プラットフォームなど)をご利用の場合は、アプリの開発とテスト時に、実際の広告ではなくテスト広告を使用することをおすすめします。
テストで実際の広告を使用する必要がある場合は、以下の IP アドレス ブロックを使用して、Test Lab から発生する収益と、対応するすべてのトラフィックを除外するように、ご利用のデジタル広告プロバイダに通知してください。Google が所有する広告プロバイダの場合は、Test Lab が対応するため、この通知を行う必要はありません。
Test Lab デバイスで使用される IP アドレス
Test Lab デバイスによって生成されるすべてのネットワーク トラフィックは、次の IP アドレス ブロックから発信されます。gcloud CLI で gcloud beta firebase test ip-blocks list
コマンド を使用してこのリストにアクセスすることもできます。このリストは平均して年に 1 回更新されます。
プラットフォームとデバイスのタイプ | CIDR IP アドレス ブロック |
---|---|
Android および iOS 搭載の実機、Arm 仮想デバイス |
70.32.128.0/19(2022 年 2 月に追加) 108.177.6.0/23 108.177.18.192/26(2022 年 2 月に追加) 108.177.29.64/27(2022 年 2 月に拡張) 108.177.31.160/27(2022 年 2 月に追加) 199.36.156.8/29(2022 年 2 月に追加) 199.36.156.16/28(2022 年 2 月に追加) 209.85.131.0/27(2022 年 2 月に追加) 2001:4860:1008::/48(2022 年 2 月に追加) 2001:4860:1018::/48(2022 年 2 月に追加) 2001:4860:1019::/48(2022 年 2 月に追加) 2001:4860:1020::/48(2022 年 2 月に追加) 2001:4860:1022::/48(2022 年 2 月に追加) |
Android Virtual Device(非 Arm) |
34.68.194.64/29(2019 年 11 月に追加) 34.69.234.64/29(2019 年 11 月に追加) 34.73.34.72/29(2019 年 11 月に追加) 34.73.178.72/29(2019 年 11 月に追加) 34.74.10.72/29(2022 年 2 月に追加) 34.136.2.136/29(2022 年 2 月に追加) 34.136.50.136/29(2022 年 2 月に追加) 34.145.234.144/29(2022 年 2 月に追加) 35.192.160.56/29 35.196.166.80/29 35.196.169.240/29 35.203.128.0/28 35.234.176.160/28 35.243.2.0/27(2019 年 7 月に追加) 35.245.243.240/29(2022 年 2 月に追加) 199.192.115.0/30 199.192.115.8/30 199.192.115.16/29 |
現在は使用されていないデバイス IP ブロック |
74.125.122.32/29(2022 年 2 月に削除) 216.239.44.24/29(2022 年 2 月に削除) |