Firebase Test Labは、Googleのデータセンターにある実機でモバイルアプリケーションの自動テストを行うためのGoogleのクラウドサービスです。Test Labを使用すると、独自のデバイスファームを維持する必要なく、AndroidおよびiOSの異なるバージョンの何百ものデバイス構成で、インストゥルメンテーションテスト、スクリーンショットテスト、ロボットテストを実行できます。Firebase Documentation、2026年によると、Firebaseロボットテストはアプリケーションのすべての画面を自動的に通過し、テストコードを1行も書かずにクラッシュ、ANR、UIの問題を検出します。このサービスはCI/CDシステムとの統合をサポートし、動画とログを含む詳細なレポートを提供します。
重要なポイント
Firebase Test Labは、Googleのグローバルデータセンターにある物理デバイスでモバイルアプリケーションの自動テストを行うためのGoogleのクラウドインフラストラクチャです。ローカルマシンのエミュレーターとは異なり、Test Labはさまざまなオペレーティングシステムバージョン、画面解像度、RAMサイズ、APIレベルの実際のAndroidデバイスとiOSデバイスでテストを実行します。このサービスはテスト結果を自動的に処理し、実行動画、ステップごとのスクリーンショット、詳細なログを提供します。
独自のデバイスファームを維持するには、物理デバイスの購入と保守に多大な設備投資が必要です。Firebase Test Labは、Sparkプランの無料枠で、従量課金制により何千ものデバイスへのアクセスを提供します。Test Labはデバイスプールを最新モデルに自動的に更新し、最新のフラッグシップであるGoogle Pixel、Samsung Galaxy、Xiaomi、iPhoneを含みます。テストは複数のデバイスで並行して実行され、アプリケーション検証の総時間を短縮します。
Androidの場合、Test LabはAPIレベル21から最新の安定版Androidまでのデバイスでのテストをサポートしています。iOSサポートには、iOS 15から最新の安定版までの実際のiPhoneおよびiPadデバイスが含まれます。iOSではロボットテストとXCTestが利用可能です。各テストは物理デバイスまたはエミュレーターで実行できます。最も正確な結果を得るには、Googleは物理デバイスの使用を推奨しています。物理デバイスはセンサー、カメラ、ネットワークインターフェースの問題を明らかにするからです。
Firebase Test Labは複数のテストタイプをサポートしており、それぞれが開発サイクルで独自の役割を果たします:迅速な安定性チェックのためのロボットテスト、機能検証のためのインストゥルメンテーションテスト、視覚的退行を検出するためのスクリーンショットテストです。テストタイプの選択は、開発段階と特定の実行の目的によって異なります。
ロボットテストは、テストコードを書く必要のないFirebase Test Labのユニークな機能です。Firebase Crawlerが自動的にアプリケーションを探索し、すべてのインタラクティブなUI要素を見つけ出し、クリックし、テストデータでフォームを入力し、画面間を移動し、障害(クラッシュ、ANR、例外)を記録します。ロボットテストはテストコードを1行も書かずに最大80%の重大なバグを検出し、開発の初期段階でアプリケーションの基本的な安定性を評価するための理想的なツールです。
インストゥルメンテーションテストは、開発者がEspresso(Android)またはXCTest(iOS)フレームワークを使用して記述するテストです。Test Labはテストを含むAPKをターゲットデバイスで実行し、実行結果を収集します。テストはシンプル(要素の表示確認)から複雑(エンドツーエンドシナリオ:ログイン、カートに追加、チェックアウト)まであります。Firebase Test LabはAndroid Test Orchestratorをサポートしており、テストを互いに分離して、1つのテストの失敗が他に影響するのを防ぎます。
スクリーンショットテストは、アプリケーションの視覚的退行を検出するために使用されます。Game loopは、インテントを介してアプリケーションにシナリオのリストを渡す特別なテストタイプで、アプリケーションはこれらのシナリオを実行し、主要画面のスクリーンショットを撮る必要があります。Test Labはマトリクス内のすべてのデバイスからスクリーンショットを収集し、参照画像と比較して差異を検出できます。このテストタイプは、異なるGPUでのレンダリングをチェックするためにゲームアプリケーションで特に人気があります。
| テストタイプ | コード | チェック内容 | 使用時期 |
|---|---|---|---|
| ロボットテスト | 不要 | クラッシュ、ANR、例外 | 迅速な安定性チェック |
| インストゥルメンテーション | Espresso / XCTest | シナリオ機能 | 回帰テスト |
| スクリーンショットテスト | Game loop | 視覚的退行 | 異なるデバイスでのUI確認 |
テストマトリクスはFirebase Test Labにおいて、選択されたテストが実行されるデバイス構成のセットです。各構成には、デバイスモデル、OSバージョン、画面の向き(縦/横)、地域設定(ロケール、言語)が含まれます。テストは選択されたすべての構成で並行して実行され、各デバイスで順次実行する場合と比較して総実行時間を大幅に短縮します。
Googleは、異なる特性を持つデバイスをマトリクスに含めることを推奨しています:フラッグシップモデル(Google Pixel、Samsung Galaxy S)、低価格デバイス(Moto G、Xiaomi Redmi)、アプリケーションがサポートする最小APIバージョンのデバイス。最適なマトリクスには、アプリケーションがサポートするすべてのOSバージョンをカバーする5〜10の構成が含まれます。iOSの場合は、異なる世代のiPhoneおよびiPadモデル(例:iPhone SE、iPhone 14、iPad Air)が異なるiOSバージョンで選択されます。
Test Labは自動的に選択されたデバイスにテストを分散し、各構成で各テストを実行します。マトリクス全体の実行時間は、最も遅いデバイスでの最も遅いテストの実行時間に等しく、その他はすべて並行して実行されます。1つのテストがすべてのデバイスで失敗した場合、Test Labはリソースを節約するために残りの構成での実行を停止します。結果はテストごと、デバイスごとにグループ化され、エラーが特定の構成に固有のものかどうかを迅速に特定できます。
ロボットテストはFirebase Test Labのフラッグシップ機能であり、1つもテストを書かずにアプリケーションを自動的に探索できます。Firebase Crawler(ロボット)はアプリケーションのUI階層を分析し、すべてのインタラクティブ要素(ボタン、テキストフィールド、リスト、メニュー)を見つけて、実際のユーザーの動作をシミュレートしながらそれらと対話します。ロボットテストは、テストがまだ書かれていない開発の初期段階や、レガシーコードのチェックに特に効果的です。
ロボットテストを実行するには、Firebase ConsoleにAPKまたはIPAをアップロードし、Robo testオプションを選択するだけです。ロボットは事前に構成された認証情報(ログイン/パスワード)を使用して自動的にアプリケーションにログインし、認証の背後にある画面にアクセスできます。探索の深さ(max depth)を設定してロボットのステップ数を制限したり、ロボットが優先的にクリックする特定の要素を指定したりすることもできます。
<!-- res/xml/robo_directives.xml -->
<!-- ロボットはログインとパスワードのフィールドに入力します -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
ロボットテストは、複雑なシナリオに対する手動テストや記述されたインストゥルメンテーションテストに代わるものではありません。ロボットはビジネスロジックをチェックできません:すべての要素を順番にクリックしますが、結果が正しいかどうかはわかりません。また、ロボットは標準のViewGroupから継承していないカスタムビューと対話できず、WebViewも処理できません。これらの場合は、インストゥルメンテーションテストまたはGame loopを使用する必要があります。
Firebase Test LabとCI/CDシステムの統合により、リポジトリへのプッシュのたびに自動的にテストを実行できます。Test LabはAndroidのGradleタスクと、両方のプラットフォームのFastlaneをサポートしています。CI/CDパイプラインの設定には、アプリケーションのビルド、Google Cloud StorageへのAPK/IPAのアップロード、Firebase CLIを介したテストの実行、ビルドステータスを表示するためのCIシステムへのレポートの取得が含まれます。
GoogleはGradle用のgcloud-test-labプラグインを提供しており、テストのアップロードと実行を自動化します。assembleAndroidTestタスクはテストを含むAPKをビルドし、gcloudタスクがTest Labにアップロードしてマトリクスを実行します。テスト結果はpass/failとしてGradleに返され、Gradleをサポートする任意のCIパイプラインにTest Labを統合できます。認証には、Test Labの権限を持つFirebaseサービスアカウントが使用されます。
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
FastlaneはiOSおよびAndroidテストと統合するためのfirebase_test_labプラグインを提供しています。Fastlaneレーンはビルドを実行し、テストを実行して結果を処理します。iOS XCTestの場合、Test Labはxctestrunファイルを必要とします。これはテストターゲットのビルド時に自動的に作成されます。Fastlaneは、各実行後のテストステータスについてチームに通知するために、テスト結果をSlackやその他のメッセンジャーにアップロードすることもできます。
テスト完了後、Firebase Test LabはFirebase Consoleおよびgcloud CLIから利用可能な包括的なレポートを提供します。レポートには、簡単なサマリー(合格、不合格、スキップされたテストの数)、各デバイスでの各テストの詳細情報、実行動画、主要なステップのスクリーンショット、デバイスログ(Androidのlogcat、iOSのシステムログ)が含まれます。失敗したテストについては、正確なエラー位置を含むスタックトレースが利用可能です。
ロボットテストの場合、レポートはインストゥルメンテーションテストとは異なります:テストケースごとの合格/不合格の代わりに、レポートは探索統計を表示します。主要な指標 — 発見されて訪問された画面の数、ロボットのインタラクション数(クリック、スワイプ、テキスト入力)、検出されたクラッシュとANR、アプリケーション内を移動した経路。ロボットの実行動画により、どの画面がテストされ、どの画面が未カバーのままかを視覚的に評価できます。
テスト結果は、プロジェクトに関連付けられたバケットのGoogle Cloud Storageに保存されます。データは外部分析システムへのエクスポートおよび統合に利用できます。実行間での長期保存と結果の比較には、BigQueryエクスポートを設定するか、プログラムによる結果取得にFirebase Test Lab APIを使用することをお勧めします。Googleは、各テスト実行の結果の完全なセットを含むZIPアーカイブをダウンロードする機能を提供しています。
よくある質問
Sparkプランには、1日あたり10回のRoboテストと月5時間のインストゥルメンテーションテストが無料で含まれています。Blazeプランは時間単位で課金されます:Roboテストは約1 USD/デバイスアワー、インストゥルメンテーションテストは約5 USDです。正確な料金は地域とデバイスの種類によって異なります。
物理デバイスは、センサー、カメラ、GPS、Bluetooth、実際のパフォーマンスに関する問題を含む、より正確な結果を提供します。エミュレーターはより速く起動し、安価ですが、ハードウェア機能に関連する問題を明らかにしません。Googleはリリース前テストには物理デバイスを推奨しています。
入力フィールド(ログイン、パスワード)とクリックするボタンを含むXMLファイルrobo_directives.xmlを作成します。Firebase ConsoleまたはCLIを介してテストを開始する際に、APKと一緒にファイルをアップロードします。ロボットは探索を開始する前に指定されたアクションを実行します。
はい、Firebase Test Labは2024年からiOSをサポートしています。実際のiPhoneおよびiPadデバイスでRoboテスト(自動探索)とXCTest(インストゥルメンテーションテスト)が利用可能です。アップロードにはテストターゲットを含むIPAファイルが必要です。
GitHub ActionsでFirebase CLIを使用します:Service Account JSONを介して認証を設定し、gcloud SDKをインストールし、APKと構成を指定してfirebase test android runコマンドを実行します。テスト結果はFirebase Consoleまたはgcloud CLIから利用できます。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。