このドキュメントでは、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 システムを実行するたびに、または pull リクエストの前に、仮想デバイスでアプリをテストします。CI システムで Test Lab を使用する方法については、継続的インテグレーション システムで Test Lab for Android を使用するをご覧ください。
アプリの重要なアップデートをリリースする前に Test Lab の実機でアプリをテストする
UI と機能に大規模な変更を行い、アプリのアップデートを取得する前に、Test Lab を使用して実機でアプリをテストすることをおすすめします。これにより、よく利用されている実機でアプリが問題なく動作することを確認できます。また、実機でテストすることで、仮想デバイスでシミュレーションされない機能を利用して、アプリの機能をテストできます。これらの機能の詳細については、既知の制限事項をご覧ください。
仮想デバイスのアップデート
Android チームは、定期的に新しい仮想デバイス イメージを追加し、古いイメージを非推奨にし、既存のイメージを更新しています。仮想デバイス イメージにこうしたアップデートを適用することにより、ユーザーのエクスペリエンスを反映した最新の Android バージョンでテストを行うことができます。
まれに、これらのアップデートによりテストが予期せず失敗することがあります。アップデートによって問題を引き起こす可能性があることが判明している場合は、Test Lab のリリースノートにその旨が記載されます。ベスト プラクティスとして、こうした変更に強いテスト フレームワーク(Espresso など)をできる限り使用することをおすすめします。それができない場合は、Arm 仮想デバイスをターゲットにすることをおすすめします。Arm 仮想デバイスはアップデートの頻度が低いと想定されます。
既知の制限事項
現時点で、実機の一部の機能は仮想デバイスでシミュレーションされないか、一部の制限のもとでシミュレーションされます。次の表に、現時点で仮想デバイスでは使用できない機能と、使用制限のある機能を示します。
機能 | 詳細 |
アプリケーション バイナリ インターフェース(ABI) | すべてのデバイスがすべての ABI に対応しているわけではありません。Android NDK で開発している場合は、ターゲットとするデバイスでサポートされている ABI のコードを必ず生成してください。詳細については、Test Lab で利用できるデバイスをご覧ください。ABI 管理の詳細については、Android ABI をご覧ください。デバイスでサポートされている ABI を確認するには、利用可能なテストデバイスを確認するをご覧ください。 注: テスト マトリックス内のテストが無効とマークされている場合は、デバイスの ABI でサポートされていないネイティブ コードにアプリが依存している可能性があります。 |
グラフィック パフォーマンス | Nexus や Pixel の仮想デバイスは、ソフトウェア グラフィックのレンダリングを使用します。グラフィックを多用するアプリはパフォーマンスが低下します。アプリがグラフィックを多用する場合は、代わりに SmallPhone.arm モデルと MediumPhone.arm モデル、または実機を使用してください。 |
画面の録画 | Nexus デバイスと Pixel デバイスの画面録画は 1 フレーム/秒です。 |
グラフィック API | API レベル 29 以前のデバイスでは、OpenGL ES 3.x はサポートされていません。新しいデバイスは、OpenGL / Vulkan API と 100% 互換性がありません。グラフィックに若干の違いが生じる可能性があります。 |