Moduł pomocniczy interakcji z urządzeniem w ramach CTS

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

  1. Dostosuj interfejs użytkownika do potrzeb konkretnego produktu.
  2. 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.
  3. Skompiluj pomocnicze pliki APK zgodnie z tymi konwencjami dotyczącymi narzędzia do testowania.
    • W komponencie Android.bp należy zadeklarować element android_test_helper_app o tej samej nazwie co zawarty pakiet.
    • Plik APK AndroidManifest.xml musi zawierać deklarację właściwości metadanych o nazwie interaction-helpers-prefix, której wartość to prefiks klasy wybrany w poprzednim punkcie.
    • Aplikacja powinna zależeć od cts-helpers-core, cts-helpers-interfacescom.android.cts.helpers.aosp. Jeśli pomocne narzędzia OEM w pełni implementują wszystkie odpowiednie interfejsy, parametr com.android.cts.helpers.aosp jest opcjonalny.
  4. 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.
  5. 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.
  6. 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_appAndroid.bp ma nazwę com.oem.cts.helpers, która zwraca com.oem.cts.helpers.apk, i deklaruje interaction-helpers-prefix jako OemAndroidManifest.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 @Ruleopisanej 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ści testcases.

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 argument device-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.