CTS für Instant Apps

Instant Apps sind eine Schlüsselfunktion von 10, daher ist es wichtig, dass sie ordnungsgemäß funktionieren. Instant Apps werden implizit installiert, verfügen also nur über eingeschränkte Funktionen und werden in einer restriktiveren Sicherheits-Sandbox ausgeführt. Aufgrund der allgegenwärtigen Natur dieser Einschränkungen besteht das Risiko, dass jeder Teil des Systems nicht ordnungsgemäß mit Instant Apps funktioniert. Es wird eine CTS-Testteilmenge erstellt, um sicherzustellen, dass die von Instant Apps zugelassenen Verhaltensweisen funktionieren. Die Schlüsselidee besteht darin, das Größenwachstum von CTS zu minimieren, indem die minimale Anzahl von Tests auf die Portierung isoliert wird. Wenn CTS im Instant Apps-Modus ausgeführt wird, muss das Test-APK als Instant App installiert und die Tests ausgeführt werden.

Einschränkungen für Instant-Apps

Instant Apps werden nicht vom Benutzer installiert und laufen daher in einer eingeschränkten Sandbox mit den folgenden Einschränkungen:

  • Kann nur bestimmte Berechtigungen enthalten.
  • Andere Apps werden nur angezeigt, wenn sie als für Instant Apps sichtbar markiert sind.
  • Kann nur auf bestimmte Systemeinstellungen zugreifen.
  • Kann nur auf bestimmte Systemeigenschaften zugreifen.
  • Dienste/Anbieter können nicht verfügbar gemacht werden.
  • Kann mit speziellen Regeln rund um Sendungen empfangen und senden.

Darüber hinaus müssen Instant Apps zustimmen, dass die neue Sicherheits-Sandbox weitere Einschränkungen hinzufügt. Dieses breite Spektrum spezieller Verhaltensweisen rund um Instant Apps erstreckt sich über die gesamte Plattform. Daher muss eine Möglichkeit vorhanden sein, zu überprüfen, ob Instant Apps auf allen Geräten im Ökosystem wie erwartet funktionieren.

Tests, die im Instant Apps-Modus ausgeführt werden

Nicht alle CTS-Module verfügen über Tests, die auf Instant Apps anwendbar sind. Wenn die vom Modul getestete Funktionalität mit dem Systemserver interagiert, sollten diese Tests im Instant Apps-Modus ausgeführt werden. Beispielsweise interagieren die OpenGL-Tests nicht mit dem Systemserver und müssen daher nicht im Instant Apps-Modus ausgeführt werden, während die Barrierefreiheitstests mit dem Systemserver interagieren, sie jedoch im Instant Apps-Modus ausgeführt werden müssen.

Zusätzlich zur Identifizierung der anwendbaren Module müssen Benutzer bestimmen, welche Tests in diesen Modulen relevant sind. Das Testen dienstspezifischer Verhaltensweisen für eine steckbare Architektur (z. B. AccessibilityService) ist beispielsweise nicht für den Instant App-Modus anwendbar, da Instant Apps keine Dienste für andere Apps (einschließlich der Plattform) verfügbar machen kann, Tests zur Validierung app-seitiger Verhaltensweisen hingegen schon Gilt für den Instant Apps-Modus. Ein weiteres Beispiel ist ein Test, der überprüft, ob Verhaltensweisen hinter einer Berechtigung, die eine Instant App nicht halten kann, im Instant App-Modus nicht relevant sind. Es gibt eine Reihe von Tests, die nur für Instant Apps gelten und die Regeln für ihr Verhalten validieren, z. B. das Nicht-Offenlegen von Diensten oder das Nichtsehen anderer Apps. Normalerweise sind diese bereits geschrieben und erfordern keine Portierung.

Testfehler im Instant Apps-Modus

Wenn der Test fehlschlägt, weil er Funktionen validiert, auf die Instant Apps nicht zugreifen können, ist er im Instant Apps-Modus nicht anwendbar. Markieren Sie den Test so, dass er nur im vollständigen App-Modus ausgeführt wird, indem Sie ihn mit @AppModeFull annotieren. Sie können diese Annotation auf Klassenebene anwenden, um alle darin enthaltenen Tests auszuschließen.

Wenn der Test fehlschlägt, weil einige für Instant Apps zugängliche Funktionen fehlerhaft sind, melden Sie einen Fehler .

Fehlerbehebung

Wenn Ihr Test mit Failed to install MyCtsModule.apk on DEVICE fehlschlägt. Grund: '-116' , suchen Sie nach PackageManager-Meldungen in Logcat. Wenn beispielsweise die Meldung „Vollständige App kann nicht durch Instant App ersetzt werden: your_app“ angezeigt wird, deinstallieren Sie zuerst Ihre App mit adb.