Konfiguracja testowa

Zestaw testów

Aby test został częścią VTS, musi mieć to ustawienie w usłudze Android.bp.

test_suites: ["vts"],

Dodanie testu do pakietu general-tests umożliwia jego uwzględnienie w pakiecie mapowania testów używanym w sprawdzeniu przed przesłaniem.

Testowanie konfiguracji

W większości przypadków konfiguracja testu, czyli plik XML używany przez Trade Federation do przeprowadzania testu VTS, jest generowany automatycznie podczas kompilacji. Możesz jednak dostosować konfigurację testu.

Tworzenie dostosowanego testowego pliku konfiguracji

Tworzenie nowego pliku XML testu od podstaw może być skomplikowane, ponieważ wymaga zrozumienia działania testu oraz różnic między poszczególnymi narzędziami do testowania. Wygenerowany automatycznie plik konfiguracji testu ułatwia ten proces.

Jeśli musisz dostosować testowy plik XML, możesz użyć polecenia automatycznie wygenerowanego pliku.

Aby znaleźć wygenerowany automatycznie plik konfiguracji testowej, najpierw uruchom polecenie make, aby utworzyć konfigurację, jak pokazano poniżej.

$ m VtsHalUsbV1_1TargetTest

W katalogu build out możesz wyszukać plik konfiguracji na podstawie nazwy modułu, jak pokazano poniżej.

$ find out/ -name VtsHalUsbV1_1TargetTest.config

Taki plik może mieć wiele kopii i możesz korzystać z każdej z nich. Skopiuj plik .config do katalogu, w którym znajduje się plik Android.bp.

Jeśli plik Android.bp zawiera tylko jeden moduł testowy, zmień nazwę pliku XML na AndroidTest.xml, aby system kompilacji używa go jako pliku konfiguracji modułu testowego. W przeciwnym razie dodaj do modułu atrybut test_config, tak jak w tagu przykład poniżej.

test_config: "VtsHalUsbV1_1TargetTest.xml",

Masz teraz testowy plik konfiguracji, z którym możesz pracować i wdrożyć personalizację.

Wymuś test z użyciem poziomu głównego adb

Uruchamianie większości testów VTS wymaga uprawnień użytkownika root. Jeśli plik konfiguracji testu jest generowany automatycznie, możesz dodać do niego ten atrybut: Android.bp.

require_root: true,

Jeśli plik konfiguracji testu jest niestandardowy, dodaj do pliku XML testu następujące informacje.

<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>

Zatrzymywanie frameworku podczas testu

Wiele testów VTS nie wymaga platformy Androida do uruchomienia test z zatrzymaną platformą umożliwia działanie testu ze stabilnością i nie pada ofiarą płatków na urządzeniu. Jeśli plik konfiguracji testu jest generowany automatycznie, możesz dodać do niego ten atrybut: Android.bp.

disable_framework: true,

Jeśli plik konfiguracji testu jest niestandardowy, dodaj do pliku XML testu następujące informacje.

<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>

Dodawanie dodatkowych argumentów testu

Niektóre testy gtest mogą wymagać więcej czasu. W takich przypadkach możesz dodać opcje testów w pliku XML.

Na przykład ustawienie native-test-timeout w następujący sposób pozwala na uruchomienie testu z upływem 3 minut, a nie domyślna wartość to 1 minuta.

   <test class="com.android.tradefed.testtype.GTest" >
       <option name="native-test-device-path" value="/data/local/tmp" />
       <option name="module-name" value="VtsHalNfcV1_0TargetTest" />
       <option name="native-test-timeout" value="180000"/>
   </test>

Wymagaj minimalnego poziomu interfejsu API

Niektóre testy VTS można uruchamiać tylko na urządzeniach z minimalnym poziomem interfejsu API. Jeśli testowy plik konfiguracji jest generowany automatycznie, dla atrybutu Android.bp.

min_shipping_api_level: 29,

lub

vsr_min_shipping_api_level: 202404,

Jeśli plik konfiguracji testu jest dostosowany, dodaj parametr do testowego pliku XML.

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="min-api-level" value="29" />
   </object>

lub

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="vsr-min-api-level" value="202404" />
   </object>

Właściwości na poziomie interfejsu API

Android 12 definiuje właściwości ro.board.first_api_levelro.board.api_level, aby wyświetlać poziom interfejsu API obrazów dostawcy na tych urządzeniach. Łącząc te właściwości z usługą ro.product.first_api_level, zestawy testowe dobierają odpowiednie przypadki testowe dla urządzeń.

Android 13 definiuje zasadę ro.vendor.api_level, która jest jest ustawiany automatycznie przez obliczenie wymaganego poziomu interfejsu API dostawcy za pomocą ro.product.first_api_level, ro.board.first_api_level i ro.board.api_level usług.

Więcej informacji znajdziesz w artykule Poziom interfejsu Vendor API.

ro.board.first_api_level

Właściwość ro.board.first_api_level to poziom interfejsu API, na którym obrazy dostawcy dla SoC kwalifikujące się do zamrożenia dostawcy są po raz pierwszy udostępniane z tą właściwością. Nie zależy to od poziomu interfejsu API używanego przez urządzenie, ale tylko od pierwszego poziomu interfejsu API w systemie SoC, który definiuje tę wartość. jest stała przez cały okres użytkowania układów SOC.

Aby ustawić ro.board.first_api_level, producenci mogą określić BOARD_SHIPPING_API_LEVEL w pliku device.mk, jak w tym przykładzie przykład:

  # BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
  # the first api level that the device has been commercially launched on.
  BOARD_SHIPPING_API_LEVEL := 23

Zostaną automatycznie zdefiniowane właściwość ro.board.first_api_level jako vendor/build.prop. Właściwość jest konfigurowana przez dostawcę init proces tworzenia konta.

ro.board.api_level (poziom ro.board.api)

Właściwość ro.board.api_level to aktualny poziom interfejsu API dostawcy. obrazy w formacie YYYYMM, w którym interfejs API dostawcy został zablokowany. Jest ustawiane automatycznie przez system kompilacji.

ro.vendor.api_level

Właściwość ro.vendor.api_level została wprowadzona w Androidzie 13, aby wyświetlać poziom interfejsu API, który musi obsługiwać obraz dostawcy. Ta wartość jest automatycznie ustawiona jako ro.product.first_api_level lub ro.board.api_level, jeśli Wartość ro.board.first_api_level jest obecna, a ro.board.api_level ma wartość poprzedni poziom interfejsu API niż ro.product.first_api_level. Wersja zostanie zastąp odpowiednim poziomem interfejsu API dostawcy, jeśli jest ustawiony na wersję od ro.product.first_api_level, która jest większa lub równa 35. Testy implementacji dostawcy, które wymagają uaktualnienia obrazu dostawcy, mogą być wykluczone z wymagań dostawcy dotyczących SoC przez odniesienie do tej właściwości.

Proces dzielenia za pomocą VTS

W przypadku Androida w wersji 10 lub nowszej możesz przeprowadzić proces dzielenia na fragmenty na wielu urządzeniach podczas testowania z planami VTS i CTS-on-GSI, wykonując podane niżej instrukcje.

run vts --shard-count <number of devices> -s <device serial> ...

To polecenie dzieli plan VTS na fragmenty i uruchamia je na wielu urządzeniach.

run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...

To polecenie dzieli plan CTS-on-GSI na fragmenty i uruchamia je w wielu urządzenia.