Moduł pomocniczy interakcji z urządzeniem w ramach CTS

W przypadku Androida 11 lub nowszego moduły pomocnicze pakietu CTS (Compatibility Test Suite) do interakcji z urządzeniem umożliwiają dostosowywanie sposobu, w jaki niektóre testy CTS wchodzą w interakcję z interfejsem użytkownika na konkretnym urządzeniu. Oznacza to, że działania takie jak zastąpienie elementu interfejsu, który nie jest objęty dokumentem CDD (Android Compatibility Definition Document) ani dokumentacją interfejsu API, można wykonać, zachowując zgodność z CTS.

Producenci OEM, którzy chcą dostosować interfejs Androida podczas tworzenia produktu i muszą przejść testy CTS, mogą wdrożyć moduły pomocnicze. Jeśli używasz domyślnej implementacji na Androidzie, nie musisz niczego robić.

Wdrażanie modułów pomocniczych

Wymagania dotyczące dostosowywania interfejsu

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

Jeśli testy CTS, które wchodzą w interakcję z odpowiednim interfejsem, nie korzystają z frameworka pomocniczego, nie można dostosować tego interfejsu. Przed zmianą interfejsu współpracuj z właścicielem testu, aby przekonwertować moduł testowy.

W przeciwnym razie możesz dostosować interfejs.

Przepływ pracy związany z wdrażaniem

  1. W razie potrzeby dostosuj interfejs do konkretnego produktu.
  2. Wyznacz istniejące moduły pomocnicze AOSP jako podklasy modułów testowych CTS, które muszą wchodzić w interakcję z interfejsem. Zastąp odpowiednio niezbędne interakcje w dostosowanym interfejsie. Zamienniki 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ólny prefiks, który odróżnia ją od implementacji AOSP, która ma prefiks Default.
  3. Skompiluj narzędzia w plik APK, postępując zgodnie z tymi konwencjami narzędzia do testowania.
    • Android.bp powinna deklarować android_test_helper_app o tej samej nazwie co pakiet, który zawiera.
    • AndroidManifest.xml musi deklarować właściwość metadanych o nazwie interaction-helpers-prefix z wartością prefiksu klasy wybraną w poprzednim punkcie.
    • Aplikacja powinna zależeć od cts-helpers-core, cts-helpers-interfacescom.android.cts.helpers.aosp. Jeśli pomocnicze aplikacje 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, aby uwzględnić nazwę pliku APK. Jeśli musisz rozdzielić implementacje pomocnicze na kilka plików APK, ta właściwość może zawierać listę pakietów rozdzielonych dwukropkami.
  5. Upewnij się, że podczas uruchamiania Tradefed w przypadku CTS plik APK jest dostępny w katalogu testcases. W razie potrzeby sprawdź, czy wybrano oczekiwaną klasę implementacji pomocnika, przeglądając wiadomości logcat.
  6. Opcjonalne, ale zdecydowanie zalecane: prześlij implementację funkcji pomocniczej do AOSP lub udostępnij ją do testów przez firmy zewnętrzne.

Przykładowa implementacja funkcji pomocniczej

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

Jeśli dostosujesz interfejs drukowania, możesz utworzyć klasę, która jest podklasą klasy DefaultCtsPrintHelper.com.oem.cts.helpers.OemCtsPrintHelper android_test_helper_appAndroid.bp ma nazwę com.oem.cts.helpers, która generuje com.oem.cts.helpers.apk i deklaruje interaction-helpers-prefix jako OemAndroidManifest.xml.

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

Przykładowe implementacje

Implementacje referencyjne obejmują interfejsy w sekcji cts/libs/helpers i domyślne funkcje pomocnicze AOSP w sekcji 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 pomocnikami, właściciele testów mogą użyć @Ruledefinicji opisanej w cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java.

Każdy moduł CTS, który korzysta z ram i oczekiwanego działania pomocniczego, jest udokumentowany w interfejsie zdefiniowanym w cts/libs/helpers/core/src/com/android/cts/helpers.

Przeprowadzanie testów CTS

Testowanie bez funkcji pomocniczych

Oprócz jednej właściwości opcja testowania bez funkcji 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 chcesz uruchomić CTS bez implementacji pomocniczych, masz 2 możliwości:

  • Usuń urządzenie ro.vendor.cts_interaction_helper_packages. Uniemożliwi to całkowite korzystanie z pomocników w tej kompilacji.
  • Przed uruchomieniem CTS usuń pomocniczy plik APK z katalogu testcases. Dopóki pakiet APK nie zostanie przywrócony do stanu testcases, nie będzie można używać programów pomocniczych w żadnych uruchomieniach.

Ustawienia domyślne możesz zmienić za pomocą argumentów Tradefed i ro.vendor.cts_interaction_helper_packages kontroli właściwości, 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 rozdzielony dwukropkami zawierający nazwy pakietów. Może przyjmować dowolną wartość, która jest prawidłowym wyborem pakietu w przypadku implementacji pomocniczej OEM.
  • cts-tradefed przyjmuje argument device-interaction-helper:property-name, który tymczasowo zmienia oczekiwaną usługę na potrzeby 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ść właściwości podlega tym samym ograniczeniom co opisana powyżej właściwość ro.vendor.cts_interaction_helper_packages.

Testowanie z dostosowaniami

Domyślnie implementacje referencyjne przechodzą testy CTS na standardowym Androidzie. Sprawdź, czy implementacje partnerów przechodzą testy CTS z dostosowaniami interfejsu. Uruchom moduły CTS, które obejmują dostosowany interfejs lub funkcje.

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

  • Moduł CTS, który wchodzi w interakcję z interfejsem, który chcesz dostosować, może nie korzystać z frameworka pomocniczego. Oczekuje się, że moduły CTS zostaną przekształcone w platformę pomocniczą w zależności od zapotrzebowania i priorytetów właściciela testu. Wcześniej w procesie przesyłaj prośby o konwersję plików, aby mieć pewność, że konwersja zostanie uwzględniona w harmonogramie. Podobnie jak w przypadku próśb o zmiany w CTS, które mają na celu obsługę planowanych funkcji.
  • Funkcje udostępniane przez istniejącego pomocnika mogą nie w pełni odpowiadać dostosowaniom, które chcesz wprowadzić. Funkcje pomocnicze powinny abstrahować od zależności interfejsu. Jeśli funkcja pomocnicza ma pośrednią zależność od interfejsu, można ją traktować podobnie jak błędy w CTS.