Moduł pomocniczy dotyczący interakcji z urządzeniem CTS

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

  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. 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 nazwie interaction-helpers-prefix z wartością w postaci prefiksu klasy wybranego 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. 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.
  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 pomocniczej, sprawdzają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 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_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 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ści testcases.

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