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.