CTS pour les applis instantanées

Les applications instantanées sont une fonctionnalité clé de la version 10. Il est donc essentiel qu'elles fonctionnent correctement. Les applis instantanées sont installées implicitement. 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 applis instantanées. Un sous-ensemble de test 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 de CTS en isolant l'ensemble minimal de tests à porter. L'exécution du CTS en mode Instant Apps implique d'installer l'APK de test en tant qu'application instantanée et d'exécuter les tests.

Restrictions concernant les applications instantanées

Les applis 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 contenir que certaines autorisations.
  • ne peuvent pas voir d'autres applications, sauf si celles-ci sont marquées comme visibles par les applications instantanées ;
  • 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 annonces avec des règles spéciales.

De plus, les applications instantanées doivent être activées pour permettre au nouveau bac à sable de sécurité d'ajouter d'autres restrictions. Cette large gamme de comportements spéciaux autour des applications instantanées traverse l'ensemble de 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 disposent pas de tests applicables aux applis 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 Instant Apps. 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, tandis que les tests d'accessibilité interagissent avec le serveur système, mais doivent être exécutés en mode Instant Apps.

En plus d'identifier les modules applicables, les utilisateurs doivent déterminer les tests de ces modules qui sont pertinents. Par exemple, le test des comportements spécifiques au service pour une architecture enfichable (par exemple, AccessibilityService) n'est pas applicable au mode Instant App, 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 sont applicables au mode Instant App. Un autre exemple est un test qui valide les comportements derrière une autorisation qu'une application instantanée ne peut pas détenir et qui ne sont pas pertinents en mode application instantanée. Un ensemble de tests ne s'applique qu'aux applications instantanées et valide les règles concernant leur comportement, par exemple, en ne révélant pas de services ni en ne voyant pas d'autres applications. En règle générale, ils sont déjà écrits et ne nécessitent pas de portage.

Échecs des tests en mode Applis instantanées

Si le test échoue parce qu'il valide des fonctionnalités auxquelles 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 que 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 avec 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 une application Instant: votre_app s'affiche, adb désinstalle d'abord votre application.