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

Android Vendor Test Suite (VTS) zapewnia obszerne testy 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 komponenty oprogramowania.

  • Wiązka testowa VTS Trade Federation działa na maszynie hosta i zarządza wykonywaniem testów. Oferuje możliwość konfiguracji dzielenia na wiele testowanych urządzeń (DUT). Możesz także użyć funkcji Suite Retry , aby ponawiać tylko awarie zamiast całych zestawów testów, co znacznie skraca czas ponownego uruchomienia.
  • Poszczególne przypadki testowe są wykonywane na badanym urządzeniu. Przypadki testowe mogą być testami w stylu gtest, testami jądra lub testami w stylu JUnit napisanymi 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 języku C++ i działa na urządzeniu. Typowy gtest VTS przechodzi przez każdą instancję danego interfejsu i uruchamia wszystkie przypadki testowe względem niego. 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 których 23 są zawarte w VTS do uruchamiania 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 języku Python3. Testy oparte na języku Python są implementowane jako unittest.TestCase , a każdy przypadek testowy może wchodzić w interakcje z urządzeniem za pomocą poleceń powłoki.