Pakiet Android Vendor Test Suite (VTS) umożliwia kompleksowe testowanie następujących elementów:
- Jądro
- Warstwa abstrakcji sprzętu (HAL)
VTS działa na komputerze stacjonarnym i wykonuje przypadki testowe bezpośrednio na podłączonych urządzeniach lub na emulatorach. Podobnie jak CTS , VTS to zautomatyzowany zestaw testów, który wykorzystuje następujące główne składniki oprogramowania.
- Wiązka testowa Federacji Handlowej VTS działa na komputerze hosta i zarządza wykonywaniem testów. Oferuje możliwość konfiguracji fragmentowania na wielu testowanych urządzeniach (DUT). Możesz także użyć funkcji Ponów próbę pakietu , aby ponowić tylko błędy, a nie całe zestawy testów, co znacznie skraca czas ponownego uruchomienia.
- Poszczególne przypadki testowe są wykonywane na urządzeniu DUT. Przypadkami testowymi mogą być testy w stylu gtest, testy jądra lub testy w stylu JUnit napisane w Javie.
Rodzaje testów
W kolejnych rozdziałach opisano różne typy testów VTS.
testy w stylu gtest
Większość testów w VTS to testy w stylu gtest, które sprawdzają implementację HAL. Test jest napisany w C++ i uruchamiany na urządzeniu. Typowy gtest VTS iteruje przez każdą instancję danego interfejsu i uruchamia dla niej wszystkie przypadki testowe. Przykład można znaleźć w VtsHalHealthStorageV1_0TargetTest
.
Testy jądra Linuksa
Kselftest ( external/linux-kselftest ) to zbiór testów zawartych w repozytorium jądra Linuksa pod adresem
tools/testing/selftests
, z czego 23 są zawarte w VTS do uruchomienia na ARM.Testy Linux Test Project ( external/ltp ) sprawdzają niezawodność, solidność i stabilność jądra Linuksa.
Testy w stylu JUnit
Mały zestaw testów sterowanych hostem w VTS to testy w stylu JUnit, na przykład KernelApiSysfsTest
. Testy Java są implementowane jako BaseHostJUnit4Test
, który jest powiązany z urządzeniem testowym i może uruchamiać polecenia powłoki w celu sprawdzenia poprawności.
Samodzielne testy Python3
Niektóre testy VTS, takie jak vts_treble_sys_prop_test
są napisane w Pythonie3. Testy oparte na języku Python są implementowane jako unittest.TestCase
, a każdy przypadek testowy może wchodzić w interakcję z urządzeniem za pomocą poleceń powłoki.