このドキュメントでは、Test Lab の AVD について、利点と既知の制限事項を含めて説明します。また、開発ライフサイクル全体でアプリをテストする方法に関する推奨事項も提供します。
Test Lab AVD はAndroid Studio の AVDに似ていますが、両者にはいくつかの違いがあります。たとえば、Test Lab の AVD には、Wi-Fi 接続ではなくエミュレートされたデータ接続があります。
.arm
または (ARM) サフィックスが付いた Test Lab AVD は、次の利点を提供する高度なエミュレーターです。
テスト実行時間の短縮
一貫性を保つため、Android Studio の AVD に合わせた画面サイズと密度
.arm
または (ARM) サフィックスを持つ AVD を使用すると、他のタイプの物理デバイスよりも次の利点があります。
利点 | 説明 | ユースケース |
高可用性 | 仮想デバイスを使用してテストすると、テストを実行してテスト結果をより迅速に取得できます。仮想デバイスはオンデマンドで作成されるため、テストはほぼ即座に開始され、アプリの検証が迅速に行われます。 | アプリの小規模な更新のテスト、または回帰テスト用。 |
より長いテスト期間 | 物理デバイスでのテストは、各デバイスで 45 分のテスト期間に制限されています。仮想デバイスは、最大 60 分のテスト期間をサポートします。 | より長いテストの実行。 |
低コスト | 仮想デバイスの料金は、アプリのテストに使用される仮想デバイスごとに 1 時間あたり 1 ドルです。 | 継続的インテグレーション システムを使用した毎日のテスト、またはコードのチェックイン前。詳細については、「 Test Lab の使用レベル、クォータ、および価格」を参照してください。 |
仮想デバイスでアプリをテストする
物理デバイスでテストするのと同じ方法で、仮想デバイスでアプリをテストできます。テスト ディメンションを選択してテスト マトリックスを構成するときに、仮想デバイスを選択するだけです。 Test Lab でのテストの実行について詳しくは、Firebase Test Lab で Android のテストを開始する をご覧ください。
サポートされているモデルと API を表示する
Test Lab でサポートされている AVD モデルと API を表示するには、次のコマンドを実行します。
gcloud firebase test android models list --filter=virtual
アプリをテストするためのベスト プラクティス
仮想デバイスを使用すると、Test Lab でアプリをテストする際のオプションの範囲が広がります。このセクションのベスト プラクティスを使用して、アプリの開発ライフサイクル全体でアプリをテストすることをお勧めします。
Android Studio エミュレーターまたは接続された物理デバイスを使用する
アプリを開発するときは、Android Studio エミュレーターまたは接続された物理デバイスを使用して、初期検証のために各ビルドを調べます。インストルメンテーション テストがある場合は、Test Lab が提供する物理デバイスまたは仮想デバイスで Android Studio からこれらのテストを実行することもできます。
共有プロジェクトで作業するときは、コードを変更するたびに CI システムを使用する
大規模なプロジェクトに取り組んでいる場合、または GitHub または同様のサービスを使用して共有されているプロジェクトに貢献している場合は、継続的インテグレーション (CI) システムを使用することをお勧めします。
CI システムが実行されるたびに、または各プル リクエストの前に、仮想デバイスでアプリをテストします。 CI システムで Test Lab を使用する方法の詳細については、継続的インテグレーション システムで Android 用の Test Lab を使用する を参照してください。
重要なアプリの更新をリリースする前に、Test Lab を使用して物理デバイスでアプリをテストします
UI と機能が大幅に変更されたアプリの更新プログラムをリリースする前に、Test Lab を使用して物理デバイスでアプリをテストすることをお勧めします。これにより、アプリがさまざまな一般的な物理デバイスで安定してパフォーマンスを発揮できるようになります。また、物理デバイスでのテストにより、仮想デバイスによってシミュレートされない物理デバイスの機能に依存するすべてのアプリ機能のテスト カバレッジが保証されます。これらの機能の詳細については、既知の制限を参照してください。
仮想デバイスの更新
Android チームは定期的に新しい仮想デバイス イメージを追加し、古いイメージを非推奨にし、既存のイメージを更新します。これらの更新を仮想デバイス イメージに適用して、ユーザーのエクスペリエンスを反映した最新の Android バージョンに対してテストを実施できるようにします。
まれに、これらの更新により、テストが予期せず失敗することがあります。互換性を損なう可能性のある既知の更新がある場合、Test Lab はリリース ノートに情報を含めます。ベスト プラクティスとして、これらの変更に対して可能な限り堅牢なテスト フレームワーク ( Espressoなど) を使用することをお勧めします。それが不可能な場合は、更新頻度の低い ARM 仮想デバイスをターゲットにすることをお勧めします。
既知の制限
一部の物理デバイス機能は、現在仮想デバイスによってシミュレートされていないか、いくつかの制限付きでシミュレートされています。次の表は、仮想デバイスで現在利用できない機能、または特定の制限付きで利用できる機能をまとめたものです。
特徴 | 詳細 |
アプリケーション バイナリ インターフェイス (ABI) | すべてのデバイスがすべての ABI をサポートしているわけではありません。 Android NDK を使用して開発している場合は、対象のデバイスでサポートされている ABI のコードを必ず生成してください。詳細については、「 Test Lab で利用可能なデバイス」を参照してください。 ABI 管理の詳細については、 Android ABIを参照してください。デバイスでサポートされている ABI を確認するには、使用可能なテスト デバイスを確認する を参照してください。 注:テスト マトリックスのテストが無効とマークされている場合、アプリがデバイス ABI でサポートされていないネイティブ コードに依存していることが原因である可能性があります。 |
グラフィック性能 | Nexus および Pixel 仮想デバイスは、ソフトウェア グラフィック レンダリングを使用します。グラフィックスを多用するアプリケーションでは、パフォーマンスが低下します。アプリがグラフィックを多用する場合は、代わりにSmallPhone.arm およびMediumPhone.arm モデルまたは物理デバイスを使用してください。 |
画面収録 | Nexus および Pixel デバイスでの画面記録は、1 秒あたり 1 フレームです。 |
グラフィック API | OpenGL ES 3.x は、API レベル 29 未満のデバイスではサポートされていません。新しいデバイスは、OpenGL/Vulkan API と 100% 互換ではありません。グラフィックの小さな違いに気付くかもしれません。 |