Firebase Test Lab for Android の概要

Firebase Test Lab for Android は、さまざまな端末タイプと端末構成でアプリを検証するために作成したテスト マトリックスに対してテストを実行します。その仕組みを理解するには、まずテスト ディメンションとテスト実行について把握する必要があります。

  • テスト ディメンション。 テスト ディメンションは関連する端末属性のセットです。Test Lab で使用されるディメンションは、モデル、Android API レベル、ロケール、画面の向きです。

  • テスト実行。テスト実行とは、テスト マトリックス用に選択したテスト ディメンションの有効な各組み合わせのことを指します。Test Lab では、一度に最大 200 の一意の組み合わせでアプリをテストできます。アプリのテストに使用する特定のモデルと Android API のレベルの組み合わせを選択すると、たとえば、バグ修正を確認する場合などにアプリのテストに集中できます。各テスト実行の結果は成功または失敗のいずれかになります。1 つのテスト実行が失敗すると、テスト マトリックス全体が失敗になります。

  • テスト マトリックス。 テスト マトリックスは、選択したテスト実行のセットです。テスト マトリックスに対してアプリテストを実行すると、テスト ディメンション属性を組み合わせて作成した有効なテスト実行ごとにテスト結果が得られます。

アプリのテストを開始する方法を選択できます。

  • Android Studio の統合では、開発環境からアプリをテストできます。
  • gcloud コマンドライン インターフェースでは、コマンドラインからインタラクティブにテストを実行できます。また、自動化されたビルドとテストプロセスの一部として、スクリプト作成にも適しています。
  • Firebase コンソールの Test Lab UI では、アプリバイナリをアップロードし、どこからでもテストを開始できます。

アルファ チャネルまたはベータ チャネルを使用して Play ストアにアプリの APK ファイルをアップロードして公開するときも、Test Lab でアプリをテストできます。詳しくは、リリース前レポートを使って問題を特定する方法Robo テストをご覧ください。

テスト方法を選択する

Test Lab を使用して、さまざまな端末でアプリのユーザー エクスペリエンスの安定性とアプリの互換性を検証できます。

アプリのテストに役立つ 2 つのテスト方法として、インストゥルメンテーション テストと Test Lab Robo テストが用意されています。

インストゥルメンテーション テスト

インストゥルメンテーション テストは、Espresso および UI Automator 2.0 の Android テスト フレームワークを使用してアプリをテストするために特別に記述されたテストです。インストゥルメンテーション テストには、物理端末では最大 30 分、仮想端末では最大 60 分かかります。その時間内に実行が完了したすべてのテストのテスト結果が提供されます。

インストゥルメンテーション テストを記述する場合は、後でアプリの APK モジュールとともに Test Lab をアップロードする第 2 の APK モジュールを作成します。テスト APK の作成については、アプリのテストをご覧ください。

Robo テスト

アプリのインストゥルメンテーション テストを記述していない場合でも、Robo テストを使用して、ユーザー操作をシミュレートすることによってアプリを動かすことができます。詳しくは Robo テストについての記事をご覧ください。

ゲームループ テスト

ゲームアプリのテストをサポートするために、Test Lab に「デモモード」のベータサポートが追加されました。このモードを使用すると、プレーヤーの動作をシミュレートしながらゲームアプリを実行できます。このモードでは複数のループ(シナリオ)を実行できます。また、関連するループを一緒に実行できるように、ラベルで論理的にまとめることもできます。詳細は、ゲームループ テストをご覧ください。

端末タイプを選択する

Test Lab では、Google データセンターにインストールされ、動作している Android 端末の複数のメーカーとモデルに対してテストを実行できます。端末上のテストは、Android エミュレーターを使用してアプリをテストするときには発生しない問題を検出するのに役立ちます。

現在、以下のタイプの端末を使用できます。

表 1: Test Lab で使用される端末

メーカー 使用可能なモデル
Asus Nexus 7
Google] Nexus 6P、Pixel
HTC Nexus 9、HTC One(M8)
LG LG G4、LG G3、Nexus 5、Nexus 5X、Nexus 4
Motorola Moto E、Moto G(第 1 世代、第 2 世代、第 3 世代)、Moto G4、Moto G4 Plus、Moto X、Nexus 6
OnePlus OnePlus One
シャープ SH-04H
Samsung Galaxy J5、Galaxy Note 2、Galaxy Note 3 Duos、Galaxy Note 4、Galaxy S3、Galaxy S6、Galaxy S6 Edge、Galaxy S7、Galaxy S7 Edge Galaxy Tab 3、Nexus 10
ソニー Xperia Z2、Xperia Z3、Xperia Z5 Compact、Xperia X

テスト結果を確認する

テストを開始する方法にかかわらず、すべてのテスト結果は Test Lab で管理され、オンラインで表示できます。テスト結果には、テストログとアプリエラーの詳細が含まれます。Robo テストでは、動画とスクリーンショットも提供されます。詳細については、Firebase Test Lab for Android の結果を分析するをご覧ください。

Android Studio からテストを開始した場合は、開発環境内でテスト結果を確認することもできます。

割り当てと課金

Firebase は、Spark(無料)、Flame、および Blaze のすべての料金プランで使用できます。

Spark プランと Flame プランの割り当て

Spark プランと Flame プランでは、無料で Test Lab を使用できます。Spark と Flame のどちらのプランでも、テスト実行のみに限定された 1 日の割り当て(仮想端末 10 台と物理端末 5 台)を使用してテストできます。テスト マトリックスごとに最大 4 台の端末を使用できます。

Blaze プランの課金

1 日の使用量またはテスト マトリックスのサイズに対する制限なしで Test Lab を使用するには、プロジェクトの選択後に Firebase Blaze プランにアップグレードします。課金プランをアップグレードするには、Firebase コンソールで [アップグレード] をクリックし、[Blaze] プラン列の [プランを選択] をクリックします。

Blaze プランの場合、Test Lab を使用してアプリをテストする際の 1 時間あたりの料金は以下の通りです。

  • 各物理デバイスにつき 1 時間あたり 5 ドル
  • 仮想端末につき 1 時間あたり 1 ドル

料金は分単位で計算され、テストの実行に必要な時間のみ課金対象となります(アプリのインストールやテスト結果の収集にかかる時間に対しては課金されません)。テスト マトリックスを実行すると、テスト実行結果とテスト マトリックスの結果ページに、各端末でテストごとに実行に要した時間が表示されます。各テスト実行で課金される時間は、最も近い分の単位に切り上げられます。

Test Lab とモバイル広告

デジタル広告プロバイダ(広告ネットワーク、デマンドサイド プラットフォームなど)をご利用のアプリ デベロッパーの皆様と、デジタル広告プロバイダの皆様は、以下の問題にご注意ください。

Test Lab は、アプリのテストを自動化するスケーラブルなアプリテスト インフラストラクチャをデベロッパーに提供します。残念ながら、この機能は、不正な広告収益を生むように設計された悪意のあるアプリによって悪用される可能性があります。

この問題には次のように対処してください。

  • アプリ デベロッパーは、Test Lab を含むテスト プロバイダに属する端末から生じる収益と、対応するすべてのトラフィックを除外するように、ご利用のデジタル広告プロバイダに通知する必要があります。
  • デジタル広告プロバイダは、108.177.6.0/23(物理端末)と 104.196.0.0/16(仮想端末)の IP アドレス ブロックから発信されたトラフィックを除外することによって、Test Lab から生じる広告収益と、対応するすべてのトラフィックを除外することができます。

端末のクリーンアップ

Google ではアプリデータのセキュリティを重要視しています。Test Lab で物理端末を使用する場合は、業界標準のベスト プラクティスに従って、テスト完了後に必ず端末からアプリデータを削除し、新しいテストを実行できる状態にしています。カスタムの復旧イメージでフラッシュできる端末の場合は、テストを実行するたびに端末をフラッシュするためのステップを加えています。

Test Lab で仮想端末を使用する場合は、端末の使用後にそれらのインスタンスが削除されるため、どのテストでも新しい仮想端末インスタンスが使用されます。

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

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