Zestaw testowy dostawcy (VTS) i infrastruktura

Pakiet Android 11 Vendor Test Suite (VTS) zapewnia obszerne testy w następujących kwestiach:

  • 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 komponenty oprogramowania.

  • Wiązka testowa VTS Trade Federation działa na komputerze głównym i zarządza wykonywaniem testów. Oferuje możliwość skonfigurowania dzielenia na fragmenty na wielu testowanych urządzeniach (DUT). Możesz również użyć funkcji Ponawiania 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 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 działa na urządzeniu. Typowy test gtest VTS przechodzi przez każdą instancję danego interfejsu i uruchamia na niej wszystkie przypadki testowe. Zobacz przykład VtsHalHealthStorageV1_0TargetTest .

Testy jądra Linux

  • Kselftest ( external/linux-kselftest ) to zbiór testów zawartych w repozytorium jądra Linuksa w tools/testing/selftests , z których 23 są zawarte w VTS do uruchomienia na ARM.

  • Testy projektu Linux Test Project ( external/ltp ) weryfikują niezawodność, solidność i stabilność jądra systemu Linux.

Testy w stylu JUnit

Niewielki zestaw testów host-driven w VTS to testy w stylu JUnit, na przykład KernelApiSysfsTest . Testy Java są zaimplementowane jako BaseHostJUnit4Test , które są skojarzone z urządzeniem testowym i mogą uruchamiać polecenia powłoki w celu przeprowadzenia walidacji.

Samodzielne testy Pythona3

Niektóre testy VTS, takie jak vts_treble_sys_prop_test , są napisane w Python3. Testy oparte na języku Python są zaimplementowane jako unittest.TestCase , a każdy przypadek testowy może wchodzić w interakcje z urządzeniem za pomocą poleceń powłoki.