Das Android-Kompatibilitätsprogramm ist der Schlüssel, um das positive Feedback für das Android-Ökosystem aufrechtzuerhalten. CTS ist das wichtigste Tool, um die Qualität der Kompatibilität im Maßstab zu gewährleisten. Das Android-Team arbeitet kontinuierlich daran, das CTS-Tool und die Testabdeckung zu verbessern. Durch die regelmäßige Erweiterung der Testfälle konnte die Qualität der kompatiblen Geräte erheblich verbessert werden.
Allgemeine Fragen
In diesem Abschnitt finden Sie allgemeine FAQs zu CTS.
Was wird beim CTS getestet?
Der CTS-Test prüft, ob alle unterstützten stark typisierten Android-APIs vorhanden sind und ordnungsgemäß funktionieren. Der CTS testet auch andere nicht API-bezogene Systemverhalten wie den App-Lebenszyklus und die Leistung.
Wie wird die CTS-Lizenzierung durchgeführt?
Das CTS ist unter derselben Apache Software License 2.0 lizenziert, die auch für den Großteil von Android verwendet wird.
Werden Codecs von CTS überprüft?
Ja. Alle obligatorischen Codecs werden von CTS geprüft.
Testspezifische Fragen
In diesem Abschnitt finden Sie häufig gestellte Fragen, die Ihnen helfen, CTS-Tests effizienter durchzuführen.
Was ist der Unterschied zwischen CTS-Sharding und TF-Sharding?
CTS-Sharding und TF-Sharding sind völlig unterschiedliche Testpläne, die auf einer anderen Testinfrastruktur-Codebasis basieren. Der Befehl „run“ ist zwar für verschiedene Versionen identisch, das Sharding-Ergebnis verhält sich jedoch unterschiedlich. Beim CTS-Sharding werden Testfälle statisch so den zu testenden Geräten (Devices Under Test, DUTs) zugewiesen:
- Befehl: run cts
- Konfiguration für Android 8.1 und niedrigere Versionen: /tools/cts-tradefed/res/config/cts.xml
Beim TF-Sharding werden Testfälle dynamisch verfügbaren DUTs zugewiesen:
- Befehl: run cts
- Konfiguration für Android 9: /platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/cts-suite.xml
Was wird von einem Gerät erwartet, das mehrere ABIs unterstützt?
Das Gerät muss alle CTS- und CTS-Verifier-Tests für jeden ABI-Modus bestehen, den es angeblich unterstützt. Daher ist es erforderlich, eine App für die jeweiligen ABIs auszuführen. Für mehrere ABIs gelten folgende Richtlinien:
- Für CTS und CTS Verifier gibt es für jede Architektur ARM- und x86-Releases. Beide unterstützen den 32- oder 64-Bit-Modus.
- Wenn ein Gerät sowohl ARM als auch x86 unterstützt, muss es sowohl die ARM- als auch die x86-CTS-Tests ausführen und bestehen.
Siehe CDD 3.3.1. Anwendungsbinärschnittstellen für CDD-Anforderungen an ABI.
Reicht es aus, einen Test nur mit dem primären ABI (z. B. 64 Bit) auszuführen, um die Testausführungszeit zu verkürzen?
Nein. Eine Android-App wird in einer eigenen 32-Bit- oder 64-Bit-Laufzeit ausgeführt. Der tatsächliche Maschinencode, Codepfad und Status unterscheiden sich zwischen 32 und 64. Wenn Sie einen Modus überspringen, werden nur 50% des ABI des Geräts abgedeckt.
Warum werden so viele Testfälle als „Nicht ausgeführt“ gemeldet?
Sie sollten die Zahl Modul abgeschlossen anstelle der Zahl Nicht ausgeführt prüfen.
In den vorherigen Versionen wurden CTS-Module zu früh als Modul abgeschlossen gemeldet, bevor sie abgeschlossen waren. Daher wurde die Anzahl der Abgeschlossenen Module gemeldet, ohne dass der gesamte Test abgeschlossen war, auch wenn bei einigen Geräten Probleme aufgetreten sind. Der neue Test-Harness ist konservativer und meldet bei einem Problem eine höhere Anzahl von Tests, die nicht ausgeführt wurden.
Wenn ein Modul vollständig ausgeführt wurde, wird im Bericht bei der letzten Ausführung (done="false") Folgendes angezeigt: Modul nicht abgeschlossen.
- Ein Testlauf für das Modul wurde durch ein Problem mit der Geräteverbindung unterbrochen.
- Nicht alle erwarteten Testläufe für das Modul wurden durchgeführt.
Es wurde mit zusätzlichen Filteroptionen (über die Option
-r/--retry
) noch einmal versucht, z. B.:- --include-filter
- --exclude-filter
- -t/--test (Option wird beim Neustart noch nicht unterstützt)
- --retry-type fehlgeschlagen
- --subplan
Wenn Sie für diese Module den Status Modul fertig (done="true") erhalten möchten, wiederholen Sie die folgenden Schritte für die letzte Aufrufung:
run retry --retry <session_id> for Android 9 and later versions
run cts --retry <session_id> for Android 8.1 and previous versions
Ein Modul, das ohne eines der oben genannten Probleme ausgeführt wurde (auch wenn noch 0 Tests verbleiben), wird im neuen Bericht als Modul abgeschlossen gekennzeichnet.
Ausnahmen
- Bei CtsNNAPITestCases gibt es ein bekanntes Problem aufgrund von Einschränkungen von Linux/OS bei Argumenten.
Das Modul kann direkt über
run cts -m CtsNNAPITestCases
isoliert neu ausgeführt werden.
Wie kann ich verhindern, dass die Testvorbereitung hinter der Firewall des Unternehmens fehlschlägt?
Alle automatisierten Test-Suiten versuchen, während der Laufzeit entweder die CTS-Mediendateien oder die Dateien der Geschäftslogik herunterzuladen. In vielen Unternehmensumgebungen sind eine Firewall und ein Proxy üblich, was die Testvorbereitung erschwert. Führen Sie die folgende Zeile aus oder fügen Sie sie unter Ubuntu zu .profile hinzu.
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'
Benötige ich eine SIM-Karte für CTS für Secure Element?
Ob für den Test eine SIM-Karte erforderlich ist, hängt davon ab, ob die Funktion auf dem Testgerät unterstützt wird.
- Wenn Ihr Gerät NICHT Android-Apps unterstützen muss, die auf Secure Elements zugreifen – entweder in der UICC (z.B. einer SIM-Karte), die von Mobilfunkanbietern bereitgestellt wird, oder im Gerät eingebettet –, können Sie das HIDL-Manifest so konfigurieren, dass es das HAL-Element
android.hardware.secure_element
nicht enthält. In diesem Fall meldet die API android.se.omapi.SEService.getReaders() eine leere Liste und der CTS-Test wird automatisch bestanden. - Wenn Ihr Gerät Android-Apps unterstützen MUSS, die auf Secure Elements zugreifen, die entweder in der UICC (z.B. einer SIM-Karte) der Mobilfunkanbieter oder im Gerät eingebettet sind, müssen Sie das Secure Element ordnungsgemäß implementieren und intern testen. Im Artikel CTS-Test für Secure Element wird beschrieben, wie Sie sich auf die Ausführung der CTS-Tests vorbereiten, mit denen sichergestellt wird, dass das in Android 9 hinzugefügte API-Paket android.se.omapi funktioniert. Wir empfehlen Ihnen außerdem, zusätzliche Tests durchzuführen, da die Abdeckung der CTS-Tests minimal ist.
Wo erhalte ich die SIM-Karten für CTS für Secure Element?
Wenden Sie sich an Ihren bevorzugten SIM-Anbieter.
Warum wird bei der CTS-Ausführung mit Token-Sharding die orangefarbene SIM-Karte auf dem Sperrbildschirm angezeigt?
Der Testfall wird nicht gestartet, da die SIM-Karte gesperrt ist. Deaktivieren Sie die Option SIM-Karte sperren in den Einstellungen für die SIM-Kartensperrung, bevor Sie die CTS mit Token-Sharding ausführen.