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, ohne dass die CTS nicht bestanden wird.
OEMs, die die Android-Benutzeroberfläche während der Produktentwicklung anpassen und die CTS bestehen müssen, können 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. Ersetzen Sie die erforderlichen Interaktionen entsprechend der benutzerdefinierten Benutzeroberfläche. 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 Sie Ihre Helper-Implementierungen auf mehrere APKs verteilen müssen, kann diese Property eine durch Doppelpunkte 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 gegebenenfalls anhand der Logcat-Nachrichten, ob die erwartete Hilfsimplementierungsklasse ausgewählt wurde. - Optional, aber dringend empfohlen: Reichen Sie Ihre Hilfsimplementierung beim 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
heißt com.oem.cts.helpers
, was com.oem.cts.helpers.apk
ergibt, und interaction-helpers-prefix
wird in AndroidManifest.xml
als Oem
deklariert.
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 Benutzeroberflä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 Helferverhalten verwendet, wird in einer Schnittstelle dokumentiert, die unter cts/libs/helpers/core/src/com/android/cts/helpers
definiert ist.
CTS-Tests ausführen
Tests ohne Hilfsmittel
Mit Ausnahme einer Eigenschaft gibt es die Option zum Testen ohne Hilfsprogramme nicht zur Laufzeit auf dem Gerät. Sie können aber optional ändern, wie CTS-Tests mit dem Gerät interagieren. Wenn Sie CTS ohne die Hilfsimplementierungen ausführen möchten, haben Sie zwei Möglichkeiten:
- Entfernen Sie die
ro.vendor.cts_interaction_helper_packages
-Property vom Gerät. Dadurch wird verhindert, dass die Helfer für diesen 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.
Sie können die Standardeinstellungen mit Tradefed-Argumenten und dem ro.vendor.cts_interaction_helper_packages
-Eigenschaftskontrollelement ändern, von dem aus das Helper-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 den CTS-Test auf der Android-Standardversion. Prüfen Sie, ob die Implementierungen von Partnern den CTS mit UI-Anpassungen bestehen. Führen Sie die CTS-Module aus, die die von Ihnen angepasste Benutzeroberfläche oder Funktionen abdecken.
Bestimmte CTS-Module oder -Hilfsprogramme unterstützen einige Anpassungen möglicherweise noch nicht.
- Ein CTS-Modul, das mit der Benutzeroberfläche interagiert, die Sie anpassen möchten, verwendet möglicherweise nicht das Helper-Framework. CTS-Module werden voraussichtlich je nach Nachfrage und den Prioritäten des Testverantwortlichen in das Helper-Framework umgewandelt. Reichen Sie Conversion-Anfragen frühzeitig im Prozess ein, damit die Conversion rechtzeitig geplant werden kann. Das ist vergleichbar mit der Beantragung von CTS-Änderungen zur Unterstützung Ihrer geplanten Funktionen.
- Die Funktionen eines vorhandenen Helfers decken möglicherweise nicht vollständig die gewünschten Anpassungen ab. 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.