CTS pour les applis instantanées

Les applications instantanées sont une fonctionnalité clé de 10, il est donc essentiel qu'elles fonctionnent correctement. Les applications instantanées sont installées de manière implicite. Elles disposent donc d'un ensemble limité de fonctionnalités et s'exécutent dans un bac à sable de sécurité plus restrictif. En raison de la nature omniprésente de ces restrictions, toute partie du système risque de ne pas fonctionner correctement avec les applications instantanées. Un sous-ensemble de tests CTS est créé pour s'assurer que les comportements autorisés par les Applis instantanées fonctionnent. L'idée principale est de minimiser la croissance de la taille du CTS en isolant l'ensemble minimal de tests à transférer. L'exécution du CTS en mode Applis instantanées consiste à installer l'APK de test en tant qu'appli instantanée et à exécuter les tests.

Restrictions concernant les applis instantanées

Les applications instantanées ne sont pas installées par l'utilisateur. Elles s'exécutent donc dans un bac à sable restreint avec les restrictions suivantes :

  • Ne peut détenir que certaines autorisations.
  • Vous ne pouvez pas voir les autres applications, sauf si elles sont marquées comme visibles pour les applications instantanées.
  • Il ne peut accéder qu'à certains paramètres système.
  • ne peut accéder qu'à certaines propriétés système.
  • Impossible d'exposer des services/fournisseurs.
  • Peut recevoir et envoyer des messages avec des règles spéciales concernant les diffusions.

De plus, les applications instantanées doivent accepter d'autoriser le nouveau bac à sable de sécurité pour ajouter d'autres restrictions. Cette large gamme de comportements spéciaux autour des applications instantanées traverse toute la plate-forme. Il doit donc exister un moyen de valider que les applications instantanées fonctionnent comme prévu pour tous les appareils de l'écosystème.

Tests exécutés en mode Applis instantanées

Tous les modules CTS ne comportent pas de tests applicables aux applications instantanées. Si la fonctionnalité testée par le module interagit avec le serveur système, ces tests doivent être exécutés en mode Applications instantanées. Par exemple, les tests OpenGL n'interagissent pas avec le serveur système. Il n'est donc pas nécessaire de les exécuter en mode Instant Apps. En revanche, les tests d'accessibilité interagissent avec le serveur système et doivent donc être exécutés en mode Instant Apps.

En plus d'identifier les modules applicables, les utilisateurs doivent déterminer les tests pertinents dans ces modules. Par exemple, le test des comportements spécifiques à un service pour une architecture enfichable (par exemple, AccessibilityService) ne s'applique pas au mode Instant Apps, car les applications instantanées ne peuvent pas exposer de services à d'autres applications (y compris la plate-forme), tandis que les tests validant les comportements côté application s'appliquent au mode Instant Apps. Un autre exemple est un test qui valide les comportements derrière une autorisation qu'une appli instantanée ne peut pas détenir, qui ne sont pas pertinents en mode appli instantanée. Il existe un ensemble de tests qui s'appliquent uniquement aux applications instantanées et qui valident les règles concernant leur comportement (par exemple, ne pas exposer de services ni voir d'autres applications). En règle générale, ces tests sont déjà écrits et ne nécessitent pas de portage.

Échecs des tests en mode Applis instantanées

Si le test échoue, car il valide une fonctionnalité à laquelle les applis instantanées ne peuvent pas accéder, il n'est pas applicable en mode Applis instantanées. Marquez le test pour qu'il ne s'exécute qu'en mode Application complète en l'annotant avec @AppModeFull. Vous pouvez appliquer cette annotation au niveau de la classe pour exclure tous les tests qu'elle contient.

Si le test échoue, car certaines fonctionnalités accessibles aux applications instantanées sont défectueuses, signalez un bug.

Dépannage

Si votre test échoue et que le message Failed to install MyCtsModule.apk on DEVICE. Raison : "-116", recherchez les messages PackageManager dans logcat. Par exemple, si le message Impossible de remplacer l'application complète par l'application instantanée : your_app s'affiche, désinstallez d'abord votre application avec adb.