Für Android 11 oder höher können Sie mit den Geräteinteraktions-Hilfsmodulen der Compatibility Test Suite (CTS) anpassen, wie bestimmte CTS-Tests mit der Benutzeroberfläche (UI) auf einem bestimmten Gerät interagieren. Dies bedeutet, dass Aktionen wie das Ersetzen eines UI-Elements, das nicht durch das Android Compatibility Definition Document (CDD) oder API-Dokumente abgedeckt ist, durchgeführt werden können, während CTS weiterhin übergeben wird.
OEMs, die die Android-Benutzeroberfläche während der Produktentwicklung anpassen möchten und CTS bestehen müssen, können möglicherweise Hilfsmodule implementieren. Wenn Sie die Standard-Android-Implementierung verwenden, ist kein zusätzlicher Aufwand erforderlich.
Implementieren von Hilfsmodulen
Anforderungen zum Anpassen der Benutzeroberfläche
Überprüfen Sie die CDD- oder Mainline-Module auf etwaige UI-Anforderungen. Wenn die gewünschte Benutzeroberfläche durch die CDD- oder Mainline-Module abgedeckt wird, kann diese Benutzeroberfläche nicht angepasst werden.
Wenn die CTS-Tests, die mit der gewünschten Benutzeroberfläche interagieren, das Hilfsframework nicht verwenden, kann diese Benutzeroberfläche nicht angepasst werden. Arbeiten Sie mit dem Testeigentümer zusammen, um das Testmodul zu konvertieren, bevor die Benutzeroberfläche geändert werden kann.
Andernfalls können Sie die Benutzeroberfläche anpassen.
Implementierungsworkflow
- Passen Sie die Benutzeroberfläche nach Bedarf für Ihr spezifisches Produkt an.
- Bestimmen Sie die vorhandenen AOSP-Hilfsmodule als Unterklassen für die CTS-Testmodule, die mit der Benutzeroberfläche interagieren müssen. Ersetzen Sie die erforderlichen Interaktionen entsprechend der angepassten Benutzeroberfläche. Der Ersatz variiert je nach Art der Änderungen.
- Die OEM-Unterklassen befinden sich in einem OEM-Paket, z. B.
com.[oem].cts.helpers
. - Jede OEM-Unterklasse wird mit einem gemeinsamen Präfix benannt, das sie von der AOSP-Implementierung unterscheidet, die das Präfix
Default
hat.
- Die OEM-Unterklassen befinden sich in einem OEM-Paket, z. B.
- Bauen Sie die Helfer gemäß diesen Testläuferkonventionen in ein APK ein.
-
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 deklarieren. - Die App sollte von
cts-helpers-core
,cts-helpers-interfaces
undcom.android.cts.helpers.aosp
abhängen. Wenn die OEM-Helfer alle relevanten Schnittstellen vollständig implementieren, istcom.android.cts.helpers.aosp
optional.
-
- Legen Sie die Eigenschaft
ro.vendor.cts_interaction_helper_packages
im Geräte-Image so fest, dass sie den Namen des APK enthält. Wenn Sie Ihre Hilfsimplementierungen auf mehrere APKs aufteilen müssen, kann diese Eigenschaft eine durch Doppelpunkte getrennte Liste von Paketen enthalten. - Stellen Sie sicher, dass das APK im
testcases
Verzeichnis verfügbar ist, wenn Sie Tradefed für CTS ausführen. Bestätigen Sie bei Bedarf, dass die erwartete Hilfsimplementierungsklasse ausgewählt ist, indem Sie die Logcat-Meldungen untersuchen. - Optional, aber dringend empfohlen: Senden Sie Ihre Hilfsimplementierung an AOSP oder stellen Sie sie für Tests durch Dritte zur Verfügung.
Beispiel einer Hilfsimplementierung
Beispielsweise erwartet CtsPrintTestCases
einen Helfer mit der in ICtsPrintHelper
definierten Schnittstelle. Die AOSP-Implementierung heißt com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Wenn Sie die Druck-Benutzeroberfläche anpassen, können Sie com.oem.cts.helpers.OemCtsPrintHelper
erstellen, das eine Unterklasse DefaultCtsPrintHelper
ist. android_test_helper_app
in Android.bp
heißt com.oem.cts.helpers
, wodurch com.oem.cts.helpers.apk
erzeugt wird, und in AndroidManifest.xml
wird interaction-helpers-prefix
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 Standard-AOSP-Helfer unter cts/helpers
. Die Schnittstelle der obersten Ebene ist in cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
dokumentiert.
Um den CTS-Test mit seinen Helfern zu verbinden, können Testbesitzer 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 verwendet, und sein erwartetes Hilfsverhalten werden in einer Schnittstelle dokumentiert, die unter cts/libs/helpers/core/src/com/android/cts/helpers
definiert ist.
Ausführen von CTS-Tests
Testen ohne Helfer
Abgesehen von einer Eigenschaft ist die Option zum Testen ohne Helfer zur Laufzeit auf dem Gerät nicht vorhanden, ä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 die Eigenschaft
ro.vendor.cts_interaction_helper_packages
vom Gerät. Dadurch wird verhindert, dass die Helfer vollständig für diesen Build verwendet werden. - Entfernen Sie das Hilfs-APK aus dem
testcases
Verzeichnis, bevor Sie CTS ausführen. Dadurch wird verhindert, dass die Helfer von irgendwelchen Läufen verwendet werden, bis das APK intestcases
wiederhergestellt ist.
Sie können die Standardeinstellungen mit Tradefed-Argumenten und der Eigenschaftssteuerung ro.vendor.cts_interaction_helper_packages
ändern, von der aus 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 eine durch Doppelpunkte getrennte Zeichenfolge, die Paketnamen enthält. Es kann jeden Wert annehmen, der eine gültige Paketauswahl für die Hilfsimplementierung des OEM darstellt. -
cts-tradefed
akzeptiert eindevice-interaction-helper:property-name
Argument, das die erwartete Eigenschaft für einen Testlauf vorübergehend ändert, wie zum Beispiel--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
. Der Wert des Eigenschaftsnamens kann eine beliebige Eigenschaft sein, die Sie auf dem Gerät festlegen. Der Wert der Eigenschaft unterliegt denselben Einschränkungen wie die oben beschriebene Eigenschaftro.vendor.cts_interaction_helper_packages
.
Testen mit Anpassungen
Standardmäßig übergeben Referenzimplementierungen CTS auf Standard-Android. Überprüfen Sie, ob Partnerimplementierungen CTS mit UI-Anpassungen bestehen. Führen Sie die CTS-Module aus, die die Benutzeroberfläche oder die von Ihnen angepassten Funktionen abdecken.
Bestimmte CTS-Module oder Hilfsprogramme unterstützen möglicherweise einige Anpassungen noch nicht.
- Ein CTS-Modul, das mit der Benutzeroberfläche interagiert, die Sie anpassen möchten, verwendet möglicherweise nicht das Hilfsframework. Von CTS-Modulen wird erwartet, dass sie je nach Bedarf und den Prioritäten des Testeigentümers in das Hilfsframework konvertiert werden. Reichen Sie Konvertierungsanfragen frühzeitig im Prozess ein, um sicherzustellen, dass die Konvertierung im Zeitplan verläuft, ähnlich wie bei der Anforderung von CTS-Änderungen zur Unterstützung Ihrer geplanten Funktionen.
- Die von einem vorhandenen Hilfsprogramm bereitgestellten Funktionen berücksichtigen möglicherweise nicht vollständig die von Ihnen vorgenommenen Anpassungen. Hilfsfunktionen sollten UI-Abhängigkeiten abstrahieren. Wenn eine Hilfsfunktion indirekt eine UI-Abhängigkeit aufweist, kann dies ähnlich wie Fehler in CTS behandelt werden.