Anbietertestsuite (VTS) und Infrastruktur

Die Android Vendor Test Suite (VTS) bietet umfangreiche Tests für Folgendes:

  • Kernel
  • Hardwareabstraktionsschicht (HAL)

VTS wird auf einem Desktopcomputer ausgeführt und führt Testläufe direkt auf angeschlossenen Geräten oder auf den Emulatoren aus. Ähnlich wie CTS ist VTS eine automatisierte Testsuite, die die folgenden wichtigen Softwarekomponenten verwendet:

  • Der VTS-Testharness Trade Federation wird auf Ihrem Hostcomputer ausgeführt und verwaltet die Testausführung. Damit können Sie Sharding auf mehreren zu testenden Geräten (DUTs) konfigurieren. Mit der Funktion Suite Retry können Sie auch nur die fehlgeschlagenen Tests wiederholen, anstatt die gesamte Testsuite. Dadurch wird die Ausführungszeit erheblich verkürzt.
  • Einzelne Testläufe werden auf dem DUT ausgeführt. Die Testläufe können GTest-Tests, Kernel-Tests oder JUnit-Tests in Java sein.

Arten von Tests

Die verschiedenen Arten von VTS-Tests werden in den folgenden Abschnitten beschrieben.

Tests im GTest-Stil

Die meisten Tests in VTS sind GTest-Tests, die die HAL-Implementierung prüfen. Der Test ist in C++ geschrieben und wird auf dem Gerät ausgeführt. Ein typischer VTS-GTest durchläuft jede Instanz einer bestimmten Schnittstelle und führt alle Testläufe für sie aus. Ein Beispiel finden Sie unter VtsHalHealthStorageV1_0TargetTest.

Linux-Kernel-Tests

  • Kselftest (external/linux-kselftest) ist eine Sammlung von Tests, die im Linux-Kernel-Repository unter tools/testing/selftests enthalten sind. 23 davon sind in VTS enthalten und werden auf ARM ausgeführt.

  • Mit Tests des Linux Test Project (external/ltp) werden die Zuverlässigkeit, Robustheit und Stabilität des Linux-Kernels validiert.

Tests im JUnit-Stil

Eine kleine Gruppe von hostgesteuerten Tests in VTS sind Tests im JUnit-Stil, z. B. KernelApiSysfsTest. Die Java-Tests werden als BaseHostJUnit4Test implementiert, die einem Testgerät zugeordnet ist und Shell-Befehle zur Validierung ausführen kann.

Eigenständige Python3-Tests

Einige VTS-Tests, z. B. vts_treble_sys_prop_test, werden in Python3 geschrieben. Die Python-basierten Tests werden als unittest.TestCase implementiert und jeder Testlauf kann über Shell-Befehle mit dem Gerät interagieren.