Die Android Vendor Test Suite (VTS) bietet umfangreiche Tests für Folgendes:
- Ploppendes Popcorn
- Hardware Abstraction Layer (HAL)
VTS wird auf einem Desktop-Computer ausgeführt und führt Testfälle direkt auf angeschlossenen Geräten oder auf den Emulatoren aus. Ähnlich wie die CTS ist die VTS eine automatisierte Testsuite, die die folgenden wichtigen Softwarekomponenten verwendet:
- Der VTS-Test-Harness Trade Federation wird auf Ihrem Hostcomputer ausgeführt und verwaltet die Testausführung. Sie können das Sharding für mehrere Testgeräte konfigurieren. Mit der Funktion Suite Retry können Sie auch nur die fehlgeschlagenen Tests und nicht die gesamten Test-Suites noch einmal ausführen. Dadurch wird die Wiedergabezeit erheblich verkürzt.
- Einzelne Testfälle werden auf dem DUT ausgeführt. Die Testfälle können GTest-Tests, Kernel-Tests oder JUnit-Tests in Java sein.
Testtypen
Die verschiedenen Arten von VTS-Tests werden in den folgenden Abschnitten beschrieben.
GTest-Tests
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 Testfälle darauf 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. Davon sind 23 im VTS enthalten, um auf ARM-Prozessoren ausgeführt zu werden.Mit dem Linux Test Project (external/ltp) werden die Zuverlässigkeit, Robustheit und Stabilität des Linux-Kernels geprüft.
JUnit-Tests
Einige hostbasierte Tests in VTS sind JUnit-Tests, z. B. KernelApiSysfsTest
.
Die Java-Tests sind als BaseHostJUnit4Test
implementiert, was mit einem Testgerät verknüpft ist und Shell-Befehle zur Validierung ausführen kann.
Eigenständige Python 3-Tests
Einige VTS-Tests, z. B. vts_treble_sys_prop_test
, sind in Python 3 geschrieben. Die Python-basierten Tests werden als unittest.TestCase
implementiert und jeder Testfall kann über Shell-Befehle mit dem Gerät interagieren.