CTS-Hilfsmodul für Geräteinteraktion

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

  1. Passen Sie die Benutzeroberfläche nach Bedarf für Ihr spezifisches Produkt an.
  2. 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.
  3. Bauen Sie die Helfer gemäß diesen Testläuferkonventionen in ein APK ein.
    • Android.bp sollte android_test_helper_app mit demselben Namen wie das enthaltene Paket deklarieren.
    • AndroidManifest.xml für das APK muss eine Metadateneigenschaft namens interaction-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 und com.android.cts.helpers.aosp abhängen. Wenn die OEM-Helfer alle relevanten Schnittstellen vollständig implementieren, ist com.android.cts.helpers.aosp optional.
  4. 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.
  5. 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.
  6. 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 in testcases 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 ein device-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 Eigenschaft ro.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.