Zestaw testów dostawców Androida (VTS) zapewnia kompleksowe testowanie tych elementów:
- Bąbelki
- Warstwa abstrakcji sprzętowej (HAL)
VTS działa na komputerze stacjonarnym i uruchamia przypadki testowe bezpośrednio na podłączonych urządzeniach lub na emulatorach. Podobnie jak CTS, VTS to automatyczny zestaw testów, który korzysta z tych głównych komponentów oprogramowania:
- Testowy zestaw narzędzi VTS Trade Federation działa na komputerze hosta i zarządza wykonywaniem testów. Umożliwia konfigurowanie dzielenia na fragmenty na wielu testowanych urządzeniach. Możesz też użyć funkcji Ponowne uruchomienie testu, aby ponownie uruchomić tylko nieudane testy, a nie całe testy, co znacznie skróci czas ponownego uruchamiania.
- Poszczególne przypadki testowe są wykonywane na DUT. Przypadki testowe mogą być testami w stylu GTest, testami jądra lub testami w stylu JUnit napisanymi w języku Java.
Typy testów
Różne typy testów VTS są opisane w następnych sekcjach.
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 test GTest w VTS przechodzi przez każdą instancję danego interfejsu i uruchamia na niej wszystkie przypadki testowe. Przykładem jest VtsHalHealthStorageV1_0TargetTest
.
Testy jądra Linuksa
Kselftest (external/linux-kselftest) to zbiór testów dostępnych w repozytorium jądra Linuxa
tools/testing/selftests
, z których 23 są uwzględnione w VTS do uruchamiania na ARM.Projekt testów Linuksa (external/ltp) weryfikuje niezawodność, odporność i stabilność jądra Linuksa.
Testy w stylu JUnit
Niewielki zestaw testów sterowanych przez hosta w VTS to testy w stylu JUnit, na przykład:
KernelApiSysfsTest
.
Testy w języku Java są implementowane jako BaseHostJUnit4Test
, które jest powiązane z urządzeniem testowym i może wykonywać polecenia powłoki w celu weryfikacji.
Samodzielne testy Pythona 3
Niektóre testy VTS, takie jak vts_treble_sys_prop_test
, są napisane w Pythonie 3. 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.