Die Android Vendor Test Suite (VTS) bietet umfangreiche Tests zu Folgendem:
- Kernel
- Hardware-Abstraktionsschicht (HAL)
VTS läuft auf einem Desktop-Computer und führt Testfälle 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 Trade Federation- Testrahmen läuft auf Ihrem Host-Rechner und verwaltet die Testausführung. Es bietet die Möglichkeit, Sharding über mehrere zu testende Geräte (DUTs) hinweg zu konfigurieren . Sie können auch die Suite-Wiederholungsfunktion verwenden, um nur die Fehler und nicht die gesamten Testsuiten erneut zu versuchen, wodurch die Wiederholungszeit erheblich verkürzt wird.
- Einzelne Testfälle werden auf dem DUT ausgeführt. Die Testfälle können Tests im gtest-Stil, Kernel-Tests oder in Java geschriebene Tests im JUnit-Stil sein.
Arten von Tests
Tests im gtest-Stil
Die meisten Tests in VTS sind Tests im gtest-Stil, die die HAL-Implementierung überprüfen. Der Test ist in C++ geschrieben und läuft auf dem Gerät. Ein typischer VTS gtest durchläuft jede Instanz einer bestimmten Schnittstelle und führt alle Testfälle dagegen 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, von denen 23 in VTS enthalten sind, um auf ARM ausgeführt zu werden.Die Tests des Linux-Testprojekts ( external/ltp ) validieren die Zuverlässigkeit, Robustheit und Stabilität des Linux-Kernels.
Tests im JUnit-Stil
Eine kleine Gruppe hostgesteuerter Tests in VTS sind Tests im JUnit-Stil, z. B. KernelApiSysfsTest
. Die Java-Tests werden als BaseHostJUnit4Test
implementiert, das einem Testgerät zugeordnet ist und Shell-Befehle zur Validierung ausführen kann.
Eigenständige Python3-Tests
Einige VTS-Tests wie vts_treble_sys_prop_test
sind in Python3 geschrieben. Die Python-basierten Tests werden als unittest.TestCase
implementiert und jeder Testfall kann über Shell-Befehle mit dem Gerät interagieren.