ベンダー テストスイート(VTS)とインフラストラクチャ

Android ベンダー テストスイート(VTS)には、以下に関する幅広いテストが用意されています。

  • カーネル
  • Hardware Abstraction Layer(HAL)

VTS は、デスクトップ マシン上で動作し、接続されたデバイスまたはエミュレータで直接テストケースを実行します。CTS と同じように、VTS は、次の主要ソフトウェア コンポーネントを使用する自動テストスイートです。

  • VTS Trade Federation テストハーネス: ホストマシン上で実行され、テストの実行を管理します。複数のテスト対象デバイス(DUT)でシャーディングを設定することができます。また、スイート リトライ機能を使用して、テストスイート全体ではなく不合格となった部分のみを再試行し、再実行時間を大幅に短縮できます。
  • 個々のテストケース: DUT で実行されます。テストケースは、Java で記述された GTest スタイルのテスト、カーネルテスト、または JUnit スタイルのテストです。

テストの種類

以下のセクションでは、VTS テストのさまざまなタイプについて説明します。

GTest スタイルのテスト

VTS のほとんどのテストは、HAL 実装をチェックする GTest スタイルのテストです。テストは C++ で記述され、デバイス上で実行されます。一般的な VTS GTest では、特定のインターフェースの各インスタンスに対して、すべてのテストケースを実行します。例として VtsHalHealthStorageV1_0TargetTest を参照してください。

Linux カーネルのテスト

  • Kselftest(external/linux-kselftest)は、tools/testing/selftests の Linux カーネル リポジトリに含まれるテストの集まりであり、そのうちの 23 個が ARM で実行する VTS に含まれています。

  • Linux テスト プロジェクト(external/ltp)のテストは、Linux カーネルの信頼性、堅牢性、安定性を検証します。

JUnit スタイルのテスト

VTS のホスト駆動型テストには、JUnit スタイルのテストの小規模なセットが含まれています(例: KernelApiSysfsTest)。Java テストは BaseHostJUnit4Test として実装されます。これはテストデバイスに関連付けられ、シェルコマンドで検証を実行できます。

スタンドアロン Python3 テスト

vts_treble_sys_prop_test などの一部の VTS テストは Python3 で記述されています。Python ベースのテストは unittest.TestCase として実装され、各テストケースはシェルコマンドによってデバイスとやり取りできます。