Firebase Test Lab を使って Android アプリのテストを実施する場合は、コマンドライン インターフェース、Android Studio、Firebase コンソールの Test Lab UI、Testing API など、複数の方法を使用できます。どの方法でテストを開始しても、結果は指定した Firebase プロジェクトに保存されます。上記のツールに加えて、ToolResults API を使用して結果を調べることができます。このページでは、テストの結果を確認し、分析する方法について説明します。
基本概念
これまでに実行したすべてのテストの結果を参照するには、Firebase コンソールでプロジェクトの左側にあるナビゲーション パネルから [Test Lab] を選択します。このページには、Test Lab を使用してプロジェクトでテストしたアプリのすべてのテスト結果が表示されます。
テスト結果を確認するには、まず次の 3 つの概念を理解する必要があります。
選択したデバイスと構成に対して、テストまたは一連のテストケースを実行すると、Test Lab はアプリに対してテストを一括して実行し、その結果をテスト マトリックスとして表示します。
デバイス × テスト実行 = テスト マトリックス
- デバイス
- スマートフォン、タブレット、ウェアラブル デバイスなど、テストを実行する実機または仮想デバイス(Android のみ)。テスト マトリックス内のデバイスは、デバイスモデル、OS のバージョン、画面の向き、ロケール(地域や言語の設定とも呼ばれます)で識別されます。
- テスト、テスト実行
- デバイス上で実行するテスト(または一連のテストケース)。テストは、デバイスごとに 1 つ実行するか、必要に応じてシャーディングし、そのテストケースを複数のデバイスで実行できます。
- テスト マトリックス
- テストの実行状況とテスト結果が含まれます。マトリックス内のいずれかのテスト実行が失敗すると、マトリックス全体が失敗となります。
以下のセクションでは、テスト結果に移動する方法について説明します。
テスト結果の履歴の見方
[Test Lab] を選択してテスト結果に移動すると、それまでに実行したテストの結果が表示されます。
テスト結果の履歴はアプリごとに分類され、アプリごとに直近の 5 つのテスト マトリックスのみが表示されます。6 つ以上ある場合は、アプリテスト リストの下部にある [すべてのマトリックス] リンクをクリックすると、そのアプリの一覧を表示できます。
テスト マトリックスの結果の見方
Test Lab UI からテストを開始すると、リダイレクトされたページにテスト マトリックスが表示され、特定のテスト実行をクリックしてテスト結果を表示することができます。Android Studio と gcloud コマンドにもテスト マトリックス結果ページの URL が表示されます。
一般的なテスト マトリックスでは、十数種のデバイスに対してテストを実行できます。テスト実行ごとに異なる結果が得られます。テスト マトリックス内のテスト実行の結果には、次のものがあります。
- 成功 : 正常に終了しました。
- 失敗 : 1 つ以上のエラーが発生しました。
- 不確定 : テスト結果が不確定です。Test Lab のエラーが原因である可能性があります。
- スキップ : マトリックス内の一部のテスト実行に対して選択されたディメンション値が適合していません。これは、選択したデバイスが、選択した Android API のレベルに対応していない場合に発生します。
Firebase プロジェクト内の特定のアプリに対するすべてのテスト マトリックスのテスト結果をまとめた一覧を表示するには、次の例に示すようにアプリの名前をクリックします。
4 件のテスト実行のみが記載されたテスト マトリックス結果ページの例
アプリのテスト マトリックス リストが表示されます。テスト マトリックスの名前をクリックすると、そのテスト マトリックスの結果が表示されます。アプリの名前(下の赤いボックス)をクリックすると、Firebase プロジェクトに関連する他のアプリのテスト マトリックス リストが表示されます。
テスト マトリックス リスト ページの例
テスト マトリックスの結果は、成功、失敗、不確定のいずれかです。テスト マトリックス内のテスト実行が 1 つでも失敗または不確定となった場合、そのテスト マトリックスは失敗または不確定と表示されます。
Robo テストの結果を解釈する
Robo でテストを実行した場合、結果には通常のテスト指標に加えて、UI をクロールした Robo の動画とスクリーンショットが表示されます。このような動画とスクリーンショットでは、Android の「Show touches」機能と同様に、Robo によってクロール中に行われた操作が視覚的に示されます。Robo による操作の進行を追跡し、判明したバグを再現するためにこの表示を役立てることができます。
Robo テストの結果動画の例
1 回のテスト実行結果を解釈する
テスト マトリックス結果ページでいずれかのテスト実行をクリックすると、そのテスト実行の結果が表示されます。
テスト実行結果ページの例
このページには、テスト実行にかかった時間が表示されます。また、テスト APK のメソッドに対応する特定のテストケースの結果(インストルメンテーション テストの場合)と、テストログ、スクリーンショット、動画などの詳細なテスト結果も確認できます。Robo テストの詳細なテスト結果には、Robo テストによってアクセスされた UI パスをグラフィカルに表示するアクティビティ マップも含まれます。
分割されたインストゥルメンテーション テスト結果
インストゥルメンテーション テストの結果を解釈するのに役立つように、Test Lab ではスタック トレース、ログ、動画を含む独自の詳細なレポートページがテストごとに分けられて提供されます。この機能は、Android Orchestrator を使用しているかどうかにかかわらずご利用いただけます。
テストケース結果ページの例
ユーザー補助の結果を解釈する
Robo テストでは、Android のユーザー補助検証ツールを使用してアプリのユーザー補助の問題を検出します(デバイス上でローカルにアプリをスキャンすることもできます)。Robo テストのユーザー補助の結果を確認、解釈する方法については、ユーザー補助検証ツールのスタートガイドをご覧ください。
アプリのユーザー補助機能を改善する方法に関する一般的な情報については、Android デベロッパー向けのユーザー補助機能に関するドキュメントをご覧ください。
パフォーマンス指標
物理端末で実行されるテストについても、パフォーマンス指標が返されます。
指標 | 必要な端末構成 |
---|---|
アプリ起動時間 | API 19 以上 |
CPU 使用率 | API 21 以上 |
メモリ使用量 | |
ネットワーク アクティビティ | |
フレーム/秒 | API 21 以降(SurfaceView を含む) |
グラフィック パフォーマンス | API 23 以上 |
グラフィック パフォーマンスの詳細
グラフィック パフォーマンスのレポートには、いくつかの重要なグラフィックスの指標に関する統計情報が含まれています。
- 見つからなかった Vsync: 見つからなかった Vsync イベントの数を、レンダリングに 16 ミリ秒以上かかったフレーム数で割ったもの。
- 高い入力レイテンシ: 24 ミリ秒を超えた入力イベントの数を、レンダリングに 16 ミリ秒以上かかったフレーム数で割ったもの。
- 遅い UI スレッド: UI スレッドの完了に 8 ミリ秒以上かかった回数を、レンダリングに 16 ミリ秒以上かかったフレーム数で割ったもの。
- 遅い描画コマンド: 描画コマンドを GPU に送信するのに 12 ミリ秒かかった回数を、レンダリングに 16 ミリ秒以上かかったフレーム数で割ったもの。
- 遅いビットマップ アップロード: GPU へのアップロードにビットマップが 3.2 ミリ秒以上かかった回数を、レンダリングに 16 ミリ秒以上かかったフレーム数で割ったもの。
- レンダリング時間: テストの実行の各フレームにおける、レンダリング時間の分布。レンダリング時間が 32 ミリ秒を超えると、UI がかなり遅くなる可能性があります。700 を超えるレンダリング時間は、フリーズしたフレームを示します。レンダリング データは
dumpsys graphicsstats
から収集されます。
詳細なテスト結果
詳細なテスト結果は、テストの実行後 90 日間表示でき、Google Cloud Storage バケットに保存されます(Firebase コンソールにも表示されます)。Cloud Storage バケットの詳細なテスト結果を表示するには、テスト実行結果ページで [テスト結果] をクリックします。詳細なテスト結果が表示されなくなった後も、テストの結果が成功と失敗のどちらであったかは確認できます。
詳細なテスト結果を 90 日より長く保持するには、--results-bucket gcloud コマンドライン オプションを使用して、ご自身で所有する Cloud Storage バケットにそのテスト結果を送信する必要があります。その後、保存期間の設定を行って、結果を Cloud Storage バケットに保存する期間を指定します。保存期間の設定を変更する方法については、Lifecycle の条件をご覧ください。