Android プラットフォームのテスト

このコンテンツは、Android プラットフォームのデベロッパーを対象としています。Android プラットフォームでのテストの実行方法を理解する前に、Android プラットフォームのアーキテクチャで概要をご覧ください。

このセクションでは次に、Vendor Test Suite(VTS)と無数の動画およびコードラボのチュートリアルなど、利用できるテクノロジーについて詳しく解説します。

デバイスの脆弱性の検出とデバイスの強化に使用できるセキュリティ固有のテスト メカニズムにも注意してください。

アプリのテストを行うには、まずテストの基礎に目を通し、提供されたサンプルを使用して Android テスト コードラボを実行します。

テストの内容と方法

プラットフォーム テストは通常、1 つ以上の Android システム サービス、またはハードウェア抽象化レイヤ(HAL)の各レイヤと連携し、テスト対象の機能を実行して、テスト結果の正当性についてアサーションを行います。

そのため、プラットフォーム テストでは次のことが可能です。

  1. アプリケーション フレームワークによりフレームワーク API を実行する。実行される特定の API には以下が含まれます。
    • サードパーティ製アプリケーション向けの公開 API
    • 特権アプリケーション向けの非公開 API(システム API)
    • 非公開 API(@hide、protected、package private)
  2. バインド元や IPC プロキシを直接介して Android システム サービスを呼び出す
  3. 低レベルの API または IPC インターフェースを介して HAL と直接通信する

タイプ 1 と 2 は通常、インストゥルメンテーション テストとして記述されますが、タイプ 3 は通常、gtest フレームワークを使用したネイティブ テストとして記述されます。

詳細については、エンドツーエンドの例をご覧ください。

上記ツールは Android でのテストに固有のものであるため、よく理解してください。

互換性テストスイート(CTS)

Android 互換性テストスイートは、さまざまなテストのスイートです。OEM パートナー間、プラットフォーム リリース間での Android フレームワーク実装の互換性を確認するために使用されます。また、インストゥルメンテーション テストやネイティブ テスト(gtest フレームワークも使用)も含まれています。

CTS とプラットフォーム テストは相互に排他的ではありません。一般的なガイドラインは次のとおりです。

  • テストがフレームワーク API の機能や動作の正当性についてアサーションを行い、OEM パートナー間で実施される場合は、CTS で行う必要があります
  • テストがプラットフォーム開発サイクル中に回帰をキャッチすることを目的としており、実行に特権的な許可が必要で、実装の詳細(AOSP でリリースされたとおり)に依存する場合、プラットフォーム テストのみ行う必要があります

ベンダー テストスイート(VTS)

ベンダー テストスイート(VTS)は、HAL と OS カーネルのテストを自動化します。VTS を使用して Android ネイティブ システムの実装をテストするには、テスト環境をセットアップした後、VTS プランを使用してパッチをテストします。

Trade Federation テスト インフラストラクチャ

Trade Federation は、Android デバイスでテストを実行するために設計された継続的なテスト フレームワークです。TF は機能テストをローカルに実行できます。自分のデスクにおいてプラットフォーム チェックアウト内で行うことができます。TF でテストを実行するには、Java テストソースと XML 設定の 2 つのファイルが必要です。例については、RebootTest.javareboot.xml をご覧ください。

デバッグ

デバッグ セクションでは、プラットフォーム レベルの機能を開発する際に Android ネイティブ プラットフォーム コードをデバッグ、トレース、プロファイリングするための便利なツールと関連コマンドをまとめています。