W przypadku Androida 11 lub nowszego moduły pomocnicze do interakcji z urządzeniem w pakiecie Compatibility Test Suite (CTS) umożliwiają dostosowanie sposobu, w jaki określone testy CTS współdziałają z interfejsem użytkownika na konkretnym urządzeniu. Oznacza to, że można wykonywać czynności takie jak zastępowanie elementu interfejsu użytkownika, który nie jest objęty dokumentem definicji zgodności Androida (CDD) lub dokumentami interfejsu API, a jednocześnie przechodzić test CTS.
OEM, którzy chcą dostosować interfejs Androida podczas tworzenia produktu i muszą przejść CTS, mogą wdrożyć moduły pomocnicze. Jeśli używasz domyślnej implementacji na Androidzie, nie musisz nic robić.
Wdrażanie modułów pomocniczych
Wymagania dotyczące dostosowywania interfejsu
Sprawdź wymagania dotyczące interfejsu użytkownika w module CDD lub Mainline. Jeśli interfejs użytkownika jest objęty modułami CDD lub Mainline, nie można go dostosować.
Jeśli testy CTS, które współpracują z pożądanym interfejsem użytkownika, nie korzystają z ramy pomocniczej, nie można dostosować tego interfejsu. Współpracuj z właścicielem testu, aby przekonwertować moduł testu przed zmianą interfejsu.
W przeciwnym razie możesz dostosować interfejs.
Przepływ pracy dotyczący implementacji
- Dostosuj interfejs użytkownika do potrzeb konkretnego produktu.
- Oznacz istniejące moduły pomocnicze AOSP jako podklasy modułów testowych CTS, które muszą wchodzić w interakcje z interfejsem użytkownika. Zastąp interakcje wymagane do dostosowania interfejsu użytkownika. Zastąpienia różnią się w zależności od typu zmian.
- Podklasy OEM znajdują się w pakiecie OEM, np.
com.[oem].cts.helpers
. - Każda podklasa OEM ma nazwę z wspólnym prefiksem, który odróżnia ją od implementacji AOSP, która ma prefiks
Default
.
- Podklasy OEM znajdują się w pakiecie OEM, np.
- Utwórz pliki pomocnicze w pliku APK, przestrzegając tych konwencji mechanizmu uruchamiania testów.
Android.bp
powinien zadeklarowaćandroid_test_helper_app
taką samą nazwą jak zawarty w pakiecie.- Plik APK
AndroidManifest.xml
musi zawierać deklarację właściwości metadanych o nazwieinteraction-helpers-prefix
z wartością w postaci prefiksu klasy wybranego w poprzednim punkcie. - Aplikacja powinna zależeć od
cts-helpers-core
,cts-helpers-interfaces
icom.android.cts.helpers.aosp
. Jeśli pomocne narzędzia OEM w pełni implementują wszystkie odpowiednie interfejsy, parametrcom.android.cts.helpers.aosp
jest opcjonalny.
- Ustaw właściwość
ro.vendor.cts_interaction_helper_packages
w obrazie urządzenia, by uwzględnić nazwę pakietu APK. Jeśli musisz rozdzielić implementacje pomocnicze w wielu plikach APK, ta właściwość może zawierać listę pakietów rozdzielonych dwukropkiem. - Upewnij się, że pakiet APK jest dostępny w katalogu
testcases
podczas uruchamiania Tradefed dla CTS. W razie potrzeby sprawdź, czy wybrana jest oczekiwana klasa implementacji pomocniczej, sprawdzając komunikaty logcat. - Opcjonalnie, ale zdecydowanie zalecane: prześlij implementację pomocniczego interfejsu do AOSP lub udostępnij ją do testowania przez osoby trzecie.
Przykładowa implementacja pomocnika
Na przykład funkcja CtsPrintTestCases
oczekuje pomocnika z interfejsem zdefiniowanym w funkcji ICtsPrintHelper
. Implementacja AOSP nosi nazwę com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Po dostosowaniu interfejsu drukowania możesz utworzyć klasy com.oem.cts.helpers.OemCtsPrintHelper
, które będą podklasami DefaultCtsPrintHelper
.
android_test_helper_app
w Android.bp
ma nazwę com.oem.cts.helpers
, która zwraca com.oem.cts.helpers.apk
,
i deklaruje interaction-helpers-prefix
jako Oem
w AndroidManifest.xml
.
Właściwość urządzenia ro.vendor.cts_interaction_helper_packages
ma wartość com.oem.cts.helpers
.
Implementacje referencyjne
Implementacje referencyjne obejmują interfejsy w sekcji cts/libs/helpers
oraz domyślne pomocnicze interfejsy AOSP w sekcji cts/helpers
. Interfejs najwyższego poziomu jest opisany w dokumentacji cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
.
Aby połączyć test CTS z jego pomocnikami, właściciele testów mogą użyć definicji @Rule
opisanej w tabeli cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
.
Każdy moduł CTS, który korzysta z ramy i oczekiwanego zachowania pomocniczego, jest udokumentowany w interfejsie zdefiniowanym w sekcji cts/libs/helpers/core/src/com/android/cts/helpers
.
Przeprowadzanie testów CTS
Testowanie bez pomocy
Oprócz 1 właściwości opcja testowania bez elementów pomocniczych nie istnieje w środowisku wykonawczym urządzenia, ale opcjonalnie modyfikuje sposób interakcji testów CTS z urządzeniem. Jeśli chcesz uruchomić CTS bez implementacji pomocniczych, masz 2 opcje:
- Usuń z urządzenia właściwość
ro.vendor.cts_interaction_helper_packages
. Zapobiega to używaniu pomocników w całości w tej wersji. - Przed uruchomieniem CTS usuń plik APK pomocnika z katalogu
testcases
. Dzięki temu pomocnicze funkcje nie będą używane przez żadne uruchomienia, dopóki APK nie zostanie przywrócony do wartościtestcases
.
Możesz zmienić ustawienia domyślne za pomocą argumentów Tradefed i kontroli właściwości ro.vendor.cts_interaction_helper_packages
, z której wczytywany jest pomocniczy plik APK.
Poniżej znajdziesz oczekiwane wartości lub zakresy dla każdego z dostępnych ustawień.
ro.vendor.cts_interaction_helper_packages
to ciąg tekstowy rozdzielany dwukropkami, zawierający nazwy pakietów. Może on przyjmować dowolną wartość, która jest prawidłowym wyborem pakietu dla implementacji pomocnika OEM.- Funkcja
cts-tradefed
akceptuje argumentdevice-interaction-helper:property-name
, który tymczasowo zmienia oczekiwaną właściwość podczas jednego testu, np.--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
. Wartością nazwy właściwości może być dowolna właściwość ustawiona na urządzeniu. Wartość tej właściwości podlega tym samym ograniczeniom co właściwośćro.vendor.cts_interaction_helper_packages
opisana powyżej.
Testowanie z modyfikacjami
Domyślnie implementacje referencyjne przechodzą CTS na standardowym Androidzie. Sprawdź, czy implementacje partnerskie przechodzą CTS z dostosowaniami interfejsu. Uruchom te moduły CTS, które obejmują interfejs lub funkcje dostosowane przez Ciebie.
Niektóre moduły lub pomocnicze narzędzia CTS mogą jeszcze nie obsługiwać niektórych funkcji dostosowywania.
- Moduł CTS, który współpracuje z interfejsem, który chcesz dostosować, może nie używać pomocniczego frameworku. Moduły CTS powinny zostać przekształcone w platformę pomocniczą w zależności od zapotrzebowania i priorytetów właściciela testu. Prześlij prośby o konwersję na wczesnym etapie procesu, aby mieć pewność, że konwersja zostanie uwzględniona w harmonogramie. Możesz to zrobić podobnie jak w przypadku żądania zmian w CTS w celu obsługi zaplanowanych funkcji.
- Funkcje udostępniane przez istniejące narzędzie pomocnicze mogą nie w pełni odpowiadać wymaganiom dotyczącym zmian, które chcesz wprowadzić. Funkcje pomocnicze powinny abstrahować zależności od interfejsu użytkownika. Jeśli funkcja pomocnicza jest pośrednio zależna od interfejsu użytkownika, można to traktować podobnie do błędów w interfejsie CTS.