W przypadku Androida 11 lub nowszego moduły pomocnicze interakcji z urządzeniem w pakiecie Compatibility Test Suite (CTS) umożliwiają dostosowywanie 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 API, a jednocześnie przechodzić test CTS.
Producenci OEM, którzy chcą dostosować interfejs użytkownika Androida podczas opracowywania produktu i chcą przejść test CTS, mogą stosować moduły pomocnicze. Jeśli używasz domyślnej implementacji na Androida, nie musisz nic robić.
Implementowanie modułów pomocniczych
Wymagania dotyczące dostosowywania interfejsu
Sprawdź wymagania dotyczące interfejsu użytkownika w modułach 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 wdrażania
- 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.
- Skompiluj pomocnicze pliki APK zgodnie z tymi konwencjami dotyczącymi narzędzia do testowania.
- W komponencie
Android.bp
należy zadeklarować elementandroid_test_helper_app
o tej samej nazwie co zawarty pakiet. - Plik APK
AndroidManifest.xml
musi zawierać deklarację właściwości metadanych o nazwieinteraction-helpers-prefix
, której wartość to prefiks klasy wybrany 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.
- W komponencie
- W obrazie urządzenia ustaw właściwość
ro.vendor.cts_interaction_helper_packages
, aby uwzględnić nazwę pliku APK. Jeśli chcesz oddzielić implementacje pomocy w kilku plikach APK, ta właściwość może zawierać listę pakietów oddzielonych dwukropkami. - 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 pomocnika, przeglądają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 nazywa się com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Jeśli dostosowywanie interfejsu drukowania, możesz utworzyć com.oem.cts.helpers.OemCtsPrintHelper
, który jest podklasą 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 pomocniczymi testami, właściciele testów mogą użyć definicji @Rule
opisanej w dokumentacji 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
Z wyjątkiem jednej właściwości opcja testowania bez pomocy nie istnieje w czasie wykonywania na urządzeniu, ale opcjonalnie modyfikuje sposób interakcji testów CTS z urządzeniem. Jeśli chcesz uruchomić CTS bez implementacji pomocniczych, masz 2 opcje:
- Usuń właściwość
ro.vendor.cts_interaction_helper_packages
z urządzenia. Zapobiega to używaniu pomocników w całości w tej wersji. - Przed uruchomieniem CTS usuń plik APK pomocniczego z katalogu
testcases
. Zapobiega to używaniu pomocników przez żadne uruchomienia, dopóki APK nie zostanie przywrócony do wartościtestcases
.
Domyślne ustawienia możesz zmienić za pomocą argumentów Tradefed i elementu ro.vendor.cts_interaction_helper_packages
, z którego ładowany 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 znaków rozdzielony dwukropkami, zawierający nazwy pakietów. Może ona przyjmować dowolną wartość, która jest prawidłowym wyborem pakietu dla implementacji pomocnika OEM.- Funkcja
cts-tradefed
przyjmuje argumentdevice-interaction-helper:property-name
, który tymczasowo zmienia oczekiwaną właściwość na potrzeby jednego uruchomienia 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 personalizacją
Domyślnie implementacje referencyjne przechodzą CTS na standardowym Androidzie. Sprawdź, czy implementacje partnerów przechodzą CTS z ustawieniami niestandardowymi interfejsu użytkownika. Uruchom moduły CTS, które obejmują interfejs użytkownika lub funkcje, które zostały przez Ciebie dostosowane.
Niektóre moduły lub pomocnicze narzędzia CTS mogą jeszcze nie obsługiwać niektórych funkcji dostosowywania.
- Moduł CTS, który wchodzi w interakcję z interfejsem, który chcesz dostosować, może nie używać frameworku pomocniczego. Modułom CTS należy przekształcić w ramy pomocnicze na podstawie 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 planowanych funkcji.
- Funkcje udostępniane przez istniejący moduł pomocniczy 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 pośrednio zależy od interfejsu użytkownika, można ją traktować podobnie jak błędy w CTS.