Moduł pomocniczy interakcji z urządzeniem w ramach CTS

W Androidzie 11 lub nowszym moduły pomocnicze pakietu CTS (Compatibility Test Suite) do interakcji z urządzeniem umożliwiają dostosowanie sposobu, w jaki niektóre testy CTS wchodzą w interakcję z interfejsem użytkownika na konkretnym urządzeniu. Oznacza to że można wykonywać działania, takie jak zastępowanie elementu interfejsu użytkownika, który nie jest objęty dokumentem definicji zgodności z Androidem (CDD) ani dokumentacją interfejsu API, a jednocześnie przechodzić testy CTS.

Producenci OEM, którzy chcą dostosować interfejs użytkownika Androida podczas tworzenia produktu i muszą przejść testy CTS, mogą zaimplementować moduły pomocnicze. Jeśli używasz domyślnej implementacji Androida, nie musisz wykonywać żadnych dodatkowych działań.

Implementowanie modułów pomocniczych

Wymagania dotyczące dostosowania interfejsu użytkownika

Sprawdź, czy w dokumencie CDD lub modułach Mainline nie ma wymagań dotyczących interfejsu użytkownika. Jeśli żądany interfejs użytkownika jest objęty dokumentem CDD lub modułami Mainline, nie można go dostosować.

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

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

Przepływ pracy implementacji

  1. Dostosuj interfejs użytkownika do potrzeb konkretnego produktu.
  2. Wyznacz istniejące moduły pomocnicze AOSP jako podklasy modułów testowych CTS, które muszą wchodzić w interakcję z interfejsem użytkownika. Zastąp niezbędne interakcje odpowiednio do dostosowanego interfejsu użytkownika. Zastąpienia różnią się w zależności od rodzaju zmian.
    • Podklasy OEM znajdują się w pakiecie OEM, np. com.[oem].cts.helpers.
    • Każda podklasa OEM ma wspólną nazwę z prefiksem, który odróżnia ją od implementacji AOSP, która ma prefiks Default.
  3. Skompiluj moduły pomocnicze do pliku APK zgodnie z tymi konwencjami narzędzia do uruchamiania testów.
    • W pliku Android.bp należy zadeklarować android_test_helper_app o tej samej nazwie co pakiet.
    • W pliku AndroidManifest.xml pliku APK należy zadeklarować 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 moduły pomocnicze OEM w pełni implementują wszystkie odpowiednie interfejsy, com.android.cts.helpers.aosp jest opcjonalne.
  4. Ustaw właściwość ro.vendor.cts_interaction_helper_packages w obrazie urządzenia, aby uwzględnić nazwę pliku APK. Jeśli musisz rozdzielić implementacje modułów pomocniczych na kilka plików 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 dla CTS. W razie potrzeby sprawdź, czy wybrana jest oczekiwana klasa implementacji modułu pomocniczego, analizując wiadomości logcat.
  6. Opcjonalnie, ale zdecydowanie zalecane: prześlij implementację modułu pomocniczego do AOSP lub udostępnij ją do testowania przez inne firmy.

Przykładowa implementacja modułu pomocniczego

Na przykład CtsPrintTestCases oczekuje modułu pomocniczego z interfejsem zdefiniowanym w ICtsPrintHelper. Implementacja AOSP nosi nazwę com.android.cts.helpers.aosp.DefaultCtsPrintHelper.

Jeśli dostosujesz interfejs 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, co powoduje utworzenie com.oem.cts.helpers.apk, i zadeklarowanie 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 moduły pomocnicze AOSP w cts/helpers. Interfejs najwyższego poziomu jest opisany w cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java.

Aby połączyć test CTS z jego modułami pomocniczymi, właściciele testów mogą użyć definicji @Rule opisanej w cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java.

Każdy moduł CTS, który korzysta z platformy i oczekiwanych działań modułu pomocniczego, jest opisany w interfejsie zdefiniowanym w cts/libs/helpers/core/src/com/android/cts/helpers.

Uruchamianie testów CTS

Testowanie bez modułów pomocniczych

Oprócz jednej właściwości opcja testowania bez modułów pomocniczych nie jest dostępna w czasie działania na urządzeniu, ale opcjonalnie modyfikuje sposób, w jaki testy CTS wchodzą w interakcję z urządzeniem. Jeśli musisz uruchomić CTS bez implementacji modułów pomocniczych, masz 2 możliwości:

  • Usuń właściwość ro.vendor.cts_interaction_helper_packages z urządzenia. Uniemożliwi to korzystanie z modułów pomocniczych w tej kompilacji.
  • Przed uruchomieniem CTS usuń plik APK modułu pomocniczego z katalogu testcases. Uniemożliwi to korzystanie z modułów pomocniczych w przypadku wszystkich uruchomień, dopóki plik APK nie zostanie przywrócony do testcases.

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

Oczekiwane wartości lub zakresy poszczególnych dostępnych ustawień znajdziesz poniżej.

  • ro.vendor.cts_interaction_helper_packages to ciąg tekstowy zawierający nazwy pakietów rozdzielone dwukropkami. Może przyjmować dowolną wartość, która jest prawidłowym wyborem pakietu dla implementacji modułu pomocniczego OEM.
  • cts-tradefed akceptuje argument device-interaction-helper:property-name, który tymczasowo zmienia oczekiwaną właściwość dla jednego uruchomienia testu, np. --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. Wartość nazwy właściwości może być dowolną właściwością ustawioną 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ą testy CTS w przypadku standardowego Androida. Sprawdź, czy implementacje partnerów przechodzą testy CTS z dostosowaniami interfejsu użytkownika. Uruchom moduły CTS, które obejmują dostosowany interfejs użytkownika lub funkcje.

Niektóre moduły lub moduły pomocnicze 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ć z platformy pomocniczej. Oczekuje się, że moduły CTS zostaną przekonwertowane na platformę pomocniczą 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, podobnie jak w przypadku próśb o zmiany w CTS w celu obsługi planowanych funkcji.
  • Funkcje udostępniane przez istniejący moduł pomocniczy mogą nie w pełni uwzględniać dostosowań, które chcesz wprowadzić. Funkcje pomocnicze powinny abstrahować od zależności interfejsu użytkownika. Jeśli funkcja pomocnicza ma pośrednią zależność od interfejsu użytkownika, można ją traktować podobnie jak błędy w CTS.