Moduł pomocniczy interakcji urządzenia CTS

W przypadku systemu Android 11 lub nowszego moduły pomocnicze interakcji z urządzeniami pakietu Compatibility Test Suite (CTS) umożliwiają dostosowanie sposobu interakcji niektórych testów CTS z interfejsem użytkownika (UI) na określonym urządzeniu. Oznacza to, że czynności takie jak wymiana elementu interfejsu użytkownika, który nie jest objęty dokumentem definicji zgodności systemu Android (CDD) ani dokumentacją interfejsu API, można wykonywać w trakcie zaliczania testu CTS.

Producenci OEM, którzy chcą dostosować interfejs Androida podczas opracowywania produktu i muszą przejść CTS, mogą być w stanie zaimplementować moduły pomocnicze. Jeśli korzystasz z domyślnej implementacji Androida, nie jest wymagana żadna dodatkowa praca.

Implementacja modułów pomocniczych

Wymagania dotyczące dostosowania interfejsu użytkownika

Sprawdź moduły CDD lub Mainline pod kątem wymagań interfejsu użytkownika. Jeśli żądany interfejs użytkownika jest objęty modułami CDD lub Mainline, nie można go dostosować.

Jeśli testy CTS, które wchodzą w interakcję z żądanym interfejsem użytkownika, nie korzystają ze struktury pomocniczej, wówczas tego interfejsu użytkownika nie można dostosować. Współpracuj z właścicielem testu, aby przekonwertować moduł testowy, zanim będzie można zmienić interfejs użytkownika.

W przeciwnym razie możesz dostosować interfejs użytkownika.

Przebieg wdrożenia

  1. Dostosuj interfejs użytkownika do potrzeb konkretnego produktu.
  2. Wyznacz istniejące moduły pomocnicze AOSP jako podklasy dla modułów testowych CTS, które muszą współdziałać z interfejsem użytkownika. Zastąp odpowiednio niezbędne interakcje dostosowanym interfejsem użytkownika. Zamienniki różnią się w zależności od rodzaju zmian.
    • Podklasy OEM znajdują się w pakiecie OEM, takim jak com.[oem].cts.helpers .
    • Każda podklasa OEM ma nazwę ze wspólnym przedrostkiem, który odróżnia ją od implementacji AOSP, która ma przedrostek Default .
  3. Utwórz pomocników w pliku APK, stosując się do konwencji programu uruchamiającego testy.
    • Android.bp powinien zadeklarować android_test_helper_app o tej samej nazwie, co zawarty pakiet.
    • AndroidManifest.xml dla pliku APK musi deklarować właściwość metadanych o nazwie interaction-helpers-prefix z wartością prefiksu klasy wybranego w poprzednim punkcie.
    • Aplikacja powinna zależeć od cts-helpers-core , cts-helpers-interfaces i com.android.cts.helpers.aosp . Jeśli pomocnicy OEM w pełni zaimplementują wszystkie odpowiednie interfejsy, wówczas com.android.cts.helpers.aosp jest opcjonalny.
  4. Ustaw właściwość ro.vendor.cts_interaction_helper_packages w obrazie urządzenia, aby zawierała nazwę pliku APK. Jeśli chcesz oddzielić implementacje pomocnicze w wielu plikach APK, ta właściwość może zawierać listę pakietów rozdzielonych dwukropkami.
  5. Upewnij się, że plik APK jest dostępny w katalogu testcases podczas uruchamiania Tradefed for CTS. W razie potrzeby potwierdź, że wybrano oczekiwaną klasę implementacji pomocniczej, sprawdzając komunikaty logcat.
  6. Opcjonalne, ale wysoce zalecane: prześlij swoją implementację pomocniczą do AOSP lub udostępnij ją do testów przez strony trzecie.

Przykładowa implementacja pomocnika

Na przykład CtsPrintTestCases oczekuje pomocnika z interfejsem zdefiniowanym w ICtsPrintHelper . Implementacja AOSP nazywa się com.android.cts.helpers.aosp.DefaultCtsPrintHelper .

Jeśli dostosujesz interfejs drukowania, możesz utworzyć com.oem.cts.helpers.OemCtsPrintHelper , który będzie podklasą DefaultCtsPrintHelper . android_test_helper_app w Android.bp nosi nazwę com.oem.cts.helpers , co powoduje utworzenie com.oem.cts.helpers.apk i deklaruje prefiks interaction-helpers-prefix jako Oem w AndroidManifest.xml .

Właściwość urządzenia ro.vendor.cts_interaction_helper_packages jest ustawiona na com.oem.cts.helpers .

Implementacje referencyjne

Implementacje referencyjne obejmują interfejsy w cts/libs/helpers i domyślne pomocniki AOSP w cts/helpers . Interfejs najwyższego poziomu jest udokumentowany w 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ą skorzystać z definicji @Rule udokumentowanej w cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java .

Każdy moduł CTS korzystający z frameworka i jego oczekiwane zachowanie pomocnika jest udokumentowane w interfejsie zdefiniowanym w cts/libs/helpers/core/src/com/android/cts/helpers .

Przeprowadzanie testów CTS

Testowanie bez pomocników

Poza jedną właściwością opcja testowania bez pomocników 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 dwie możliwości:

  • Usuń właściwość ro.vendor.cts_interaction_helper_packages z urządzenia. Uniemożliwia to całkowite wykorzystanie pomocników w tej kompilacji.
  • Usuń pomocniczy plik APK z katalogu testcases przed uruchomieniem CTS. Zapobiega to używaniu pomocników w jakichkolwiek uruchomieniach, dopóki plik APK nie zostanie przywrócony do testcases .

Możesz zmienić ustawienia domyślne za pomocą argumentów Tradefed i kontrolki właściwości ro.vendor.cts_interaction_helper_packages , z której ładowany jest pomocniczy plik APK.

Poniżej znajdują się oczekiwane wartości lub zakresy każdego z dostępnych ustawień.

  • ro.vendor.cts_interaction_helper_packages to ciąg znaków oddzielony dwukropkami zawierający nazwy pakietów. Może przyjmować dowolną wartość, która jest prawidłowym wyborem pakietu dla implementacji pomocniczej producenta OEM.
  • cts-tradefed akceptuje argument device-interaction-helper:property-name , który tymczasowo zmienia oczekiwaną właściwość dla jednego przebiegu testu, taki jak --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ść właściwości podlega tym samym ograniczeniom, co właściwość ro.vendor.cts_interaction_helper_packages opisana powyżej.

Testowanie z dostosowaniami

Domyślnie implementacje referencyjne przechodzą CTS na standardowym systemie Android. Sprawdź, czy wdrożenia partnerów przechodzą CTS z dostosowaniami interfejsu użytkownika. Uruchom dowolne moduły CTS obejmujące dostosowany interfejs użytkownika lub funkcje.

Niektóre moduły lub pomocnicy CTS mogą jeszcze nie obsługiwać niektórych dostosowań.

  • Moduł CTS, który wchodzi w interakcję z interfejsem użytkownika, który chcesz dostosować, może nie korzystać ze struktury pomocniczej. Oczekuje się, że moduły CTS zostaną przekonwertowane do platformy pomocniczej w oparciu o zapotrzebowanie i priorytety właściciela testu. Zgłaszaj prośby o konwersję na wczesnym etapie procesu, aby mieć pewność, że konwersja przebiegnie zgodnie z harmonogramem, podobnie jak w przypadku żądania zmian CTS w celu obsługi planowanych funkcji.
  • Funkcje udostępniane przez istniejącego pomocnika mogą nie w pełni uwzględniać dostosowania, które chcesz wprowadzić. Funkcje pomocnicze powinny abstrahować od zależności interfejsu użytkownika. Jeśli funkcja pomocnicza pośrednio jest zależna od interfejsu użytkownika, można to potraktować podobnie jak błędy w CTS.