Zestaw testów dostawców (VTS) i infrastruktura

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 skorzystać z funkcji Ponawianie pakietu, aby ponawiać 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

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

Niewielki 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 przeprowadzenia walidacji.

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.