Unter Android 11 oder höher können Sie mithilfe der CTS-Hilfemodule für die Geräteinteraktion (Compatibility Test Suite, CTS) anpassen, wie bestimmte CTS-Tests mit der Benutzeroberfläche (User Interface, UI) auf einem bestimmten Gerät interagieren. Das bedeutet, dass Aktionen wie das Ersetzen eines UI-Elements, das nicht vom Android Compatibility Definition Document (CDD) oder den API-Dokumenten abgedeckt ist, durchgeführt werden können, während die CTS bestanden wird.
OEMs, die die Android-UI während der Produktentwicklung anpassen möchten und CTS bestehen müssen, können möglicherweise Hilfsmodule implementieren. Wenn Sie die Standardimplementierung für Android verwenden, sind keine weiteren Maßnahmen erforderlich.
Hilfsmodule implementieren
Anforderungen an die Anpassung der Benutzeroberfläche
Prüfen Sie die CDD- oder Mainline-Module auf UI-Anforderungen. Wenn die gewünschte Benutzeroberfläche durch die CDD- oder Mainline-Module abgedeckt ist, kann sie nicht angepasst werden.
Wenn die CTS-Tests, die mit der gewünschten Benutzeroberfläche interagieren, das Hilfs-Framework nicht verwenden, kann diese Benutzeroberfläche nicht angepasst werden. Arbeiten Sie mit dem Testinhaber zusammen, um das Testmodul umzuwandeln, bevor die Benutzeroberfläche geändert werden kann.
Andernfalls können Sie die Benutzeroberfläche anpassen.
Implementierungsablauf
- Passen Sie die Benutzeroberfläche nach Bedarf an Ihr Produkt an.
- Weisen Sie die vorhandenen AOSP-Hilfsmodule als Unterklassen für die CTS-Testmodule zu, die mit der Benutzeroberfläche interagieren müssen. Ersetze die erforderlichen Interaktionen für die benutzerdefinierte UI entsprechend. Die Ersatzleistungen variieren je nach Art der Änderungen.
- Die OEM-Unterklassen befinden sich in einem OEM-Paket, z. B.
com.[oem].cts.helpers
. - Jede OEM-Unterklasse hat ein gemeinsames Präfix, das sie von der AOSP-Implementierung mit dem Präfix
Default
unterscheidet.
- Die OEM-Unterklassen befinden sich in einem OEM-Paket, z. B.
- Erstellen Sie die Hilfsprogramme in einem APK gemäß diesen Testlauf-Konventionen.
Android.bp
sollteandroid_test_helper_app
mit demselben Namen wie das enthaltene Paket deklarieren.AndroidManifest.xml
für das APK muss eine Metadateneigenschaft namensinteraction-helpers-prefix
mit dem Wert des im vorherigen Aufzählungspunkt ausgewählten Klassenpräfixes deklariert werden.- Die App sollte von
cts-helpers-core
,cts-helpers-interfaces
undcom.android.cts.helpers.aosp
abhängen. Wenn die OEM-Hilfsprogramme alle relevanten Schnittstellen vollständig implementieren, istcom.android.cts.helpers.aosp
optional.
- Legen Sie die Property
ro.vendor.cts_interaction_helper_packages
im Geräte-Image so fest, dass sie den Namen der APK enthält. Wenn du deine Hilfsimplementierungen auf mehrere APKs aufteilen musst, kann dieses Attribut eine durch Doppelpunkt getrennte Liste von Paketen enthalten. - Achten Sie darauf, dass das APK im Verzeichnis
testcases
verfügbar ist, wenn Sie Tradefed für CTS ausführen. Prüfen Sie bei Bedarf, ob die erwartete Hilfsimplementierungsklasse ausgewählt wurde. Sehen Sie sich dazu Logcat-Nachrichten an. - Optional, aber dringend empfohlen: Reichen Sie Ihre Hilfsimplementierung bei AOSP ein oder stellen Sie sie für Tests durch Drittanbieter zur Verfügung.
Beispiel für eine Hilfsimplementierung
Beispiel: CtsPrintTestCases
erwartet einen Helfer mit der in ICtsPrintHelper
definierten Benutzeroberfläche. Die AOSP-Implementierung heißt com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Wenn Sie die Druckoberfläche anpassen, können Sie com.oem.cts.helpers.OemCtsPrintHelper
als Unterklasse von DefaultCtsPrintHelper
erstellen.
android_test_helper_app
in Android.bp
hat den Namen com.oem.cts.helpers
, wodurch com.oem.cts.helpers.apk
erzeugt und interaction-helpers-prefix
in AndroidManifest.xml
als Oem
deklariert wird.
Die Geräteeigenschaft ro.vendor.cts_interaction_helper_packages
ist auf com.oem.cts.helpers
festgelegt.
Referenzimplementierungen
Referenzimplementierungen umfassen Schnittstellen unter cts/libs/helpers
und die standardmäßigen AOSP-Hilfsprogramme unter cts/helpers
. Die Oberfläche der obersten Ebene ist in cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
dokumentiert.
Um den CTS-Test mit seinen Hilfsmitteln zu verknüpfen, können Testinhaber die @Rule
-Definition verwenden, die in cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
dokumentiert ist.
Jedes CTS-Modul, das das Framework und sein erwartetes Hilfsverhalten verwendet, ist in einer unter cts/libs/helpers/core/src/com/android/cts/helpers
definierten Schnittstelle dokumentiert.
CTS-Tests ausführen
Tests ohne Hilfsmittel
Abgesehen von einem Attribut gibt es die Option zum Testen ohne Hilfsfunktionen nicht zur Laufzeit auf dem Gerät. Sie ändert aber optional die Interaktion von CTS-Tests mit dem Gerät. Wenn Sie CTS ohne die Hilfsimplementierungen ausführen müssen, haben Sie zwei Möglichkeiten:
- Entfernen Sie das Attribut
ro.vendor.cts_interaction_helper_packages
vom Gerät. Dadurch wird verhindert, dass die Helfer in diesem Build vollständig verwendet werden. - Entfernen Sie das Helper-APK aus dem Verzeichnis
testcases
, bevor Sie CTS ausführen. So wird verhindert, dass die Helpers von Ausführungen verwendet werden, bis das APK wieder auftestcases
zurückgesetzt wurde.
Du kannst die Standardeinstellungen mit Tradefed-Argumenten und der Property-Steuerung ro.vendor.cts_interaction_helper_packages
ändern, über die das Hilfs-APK geladen wird.
Im Folgenden finden Sie die erwarteten Werte oder Bereiche für jede der verfügbaren Einstellungen.
ro.vendor.cts_interaction_helper_packages
ist ein durch Doppelpunkte getrennter String mit Paketnamen. Es kann jeder Wert verwendet werden, der eine gültige Paketauswahl für die Hilfsimplementierung des OEMs ist.cts-tradefed
akzeptiert eindevice-interaction-helper:property-name
-Argument, mit dem die erwartete Property für einen Testlauf vorübergehend geändert wird, z. B.--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
. Der Wert des Property-Namens kann eine beliebige Property sein, die Sie auf dem Gerät festgelegt haben. Für den Wert der Property gelten dieselben Einschränkungen wie für die oben beschriebene Propertyro.vendor.cts_interaction_helper_packages
.
Mit Anpassungen testen
Standardmäßig bestehen Referenzimplementierungen die CTS auf der Android-Standardversion. Prüfe, ob Partnerimplementierungen CTS mit UI-Anpassungen bestehen. Führen Sie CTS-Module aus, die die von Ihnen angepasste Benutzeroberfläche oder die angepassten Funktionen abdecken.
Bestimmte CTS-Module oder -Hilfsprogramme unterstützen möglicherweise noch nicht einige Anpassungen.
- Ein CTS-Modul, das mit der UI interagiert, die Sie anpassen möchten, verwendet möglicherweise nicht das Hilfs-Framework. CTS-Module werden voraussichtlich je nach Nachfrage und den Prioritäten des Testverantwortlichen in das Helper-Framework umgewandelt. Reichen Sie frühzeitig Conversion-Anfragen ein, damit die Conversion in den Zeitplan aufgenommen wird. Das ist vergleichbar mit der Beantragung von CTS-Änderungen zur Unterstützung Ihrer geplanten Funktionen.
- Die von einem vorhandenen Hilfsprogramm bereitgestellten Funktionen berücksichtigen die gewünschten Anpassungen möglicherweise nicht vollständig. Hilfsfunktionen sollten UI-Abhängigkeiten abstrahieren. Wenn eine Hilfsfunktion indirekt eine UI-Abhängigkeit hat, kann dies ähnlich wie bei Fehlern in CTS behandelt werden.