Firebase Test Lab for Android の概要

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

  • テスト ディメンション。 テスト ディメンションは関連する端末属性のセットです。Test Lab で使用されるディメンションは、端末タイプ、Android API レベル、ロケール、画面の向きです。アプリをテストする前に、各ディメンションから属性を選択すると、選択した属性のすべての有効な組み合わせのリストが Test Lab によって作成されます。Test Lab では、一度に最大 200 の一意の組み合わせでアプリをテストできます。

  • テスト実行。テスト マトリックス用に選択したテスト ディメンションの有効な組み合わせのそれぞれがテスト実行です。たとえば、5 つの端末タイプ(Asus Google Nexus 7、LG G3、Samsung Galaxy Note 2 など)、2 つの Android API レベル(21、22)、2 つのロケール(en_US、es_ES)、2 つの画面の向き(横、縦)を選択した場合、テストには 5 x 2 x 2 x 2 = 40 のテスト実行が含まれます。各テスト実行の結果は成功または失敗のいずれかになります。1 つのテスト実行が失敗すると、テスト マトリックス全体が失敗になります。

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

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

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

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

端末タイプを選択する

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

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

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

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

テスト方法を選択する

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

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

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

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

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

Robo テスト

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

テスト結果を確認する

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

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

割り当てと課金

Firebase は、Spark(無料)、FlameBlaze の 3 つの料金プランすべてに使用できます。

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

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

Blaze プランの課金

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

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

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

料金は分単位で計算され、テストの実行に必要な時間のみ課金されます(アプリのインストールやテスト結果の収集にかかる時間に対しては課金されません)。

Test Lab とモバイル広告

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

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

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

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

端末のクリーンアップ

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

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

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