CTS per le app istantanee

Le app istantanee sono una funzionalità chiave di 10, quindi è essenziale che funzionino correttamente. Le app istantanee vengono installate in modo implicito, quindi dispongono di un insieme limitato di funzionalità e vengono eseguite in una sandbox di sicurezza più restrittiva. A causa della natura pervasiva di queste restrizioni, qualsiasi parte del sistema rischia di non funzionare correttamente con le app istantanee. Viene creato un sottoinsieme di test CTS per garantire che i comportamenti consentiti dalle app istantanee funzionino. L'idea chiave è ridurre al minimo la crescita dimensionale del CTS isolando l'insieme minimo di test da portare. L'esecuzione di CTS in modalità App istantanee implica l'installazione dell'APK di prova come app istantanea e l'esecuzione dei test.

Restrizioni dell'app istantanea

Le app istantanee non vengono installate dall'utente, quindi vengono eseguite in una sandbox ristretta con le seguenti restrizioni:

  • Può contenere solo determinate autorizzazioni.
  • Non è possibile visualizzare altre app a meno che tali app non siano contrassegnate come visibili nelle app istantanee.
  • Può accedere solo a determinate impostazioni di sistema.
  • Può accedere solo a determinate proprietà del sistema.
  • Impossibile esporre servizi/fornitori.
  • Può ricevere e inviare con regole speciali relative alle trasmissioni.

Inoltre, le app istantanee devono consentire alla nuova sandbox di sicurezza di aggiungere ulteriori restrizioni. Questa vasta gamma di comportamenti speciali relativi alle app istantanee è trasversale all'intera piattaforma, quindi è necessario che ci sia un modo per verificare che le app istantanee funzionino come previsto per tutti i dispositivi nell'ecosistema.

Test eseguiti in modalità App istantanee

Non tutti i moduli CTS prevedono test applicabili alle App istantanee. Se la funzionalità testata dal modulo interagisce con il server di sistema, questi test devono essere eseguiti in modalità App istantanee. Ad esempio, i test OpenGL non interagiscono con il server di sistema e quindi non è necessario eseguirli in modalità App istantanee mentre i test di accessibilità interagiscono con il server di sistema ma è necessario eseguirli in modalità App istantanee.

Oltre a identificare quali moduli sono applicabili, gli utenti devono determinare quali test in questi moduli sono rilevanti. Ad esempio, il test di comportamenti specifici del servizio per un'architettura collegabile (ad esempio, AccessibilityService) non è applicabile alla modalità App istantanea poiché le App istantanee non possono esporre servizi ad altre app (inclusa la piattaforma) mentre i test di convalida dei comportamenti lato app sono applicabile per la modalità App istantanee. Un altro esempio è un test che convalida i comportamenti dietro un'autorizzazione che un'app istantanea non può mantenere non sono rilevanti nella modalità App istantanea. Esiste una serie di test che si applicano solo alle app istantanee che convalidano le regole sul loro comportamento, ad esempio, non esporre servizi o non vedere altre app. In genere, questi sono già scritti e non richiedono il porting.

Testare gli errori in modalità App istantanee

Se il test non riesce perché convalida funzionalità a cui le app istantanee non possono accedere, non è applicabile in modalità App istantanee. Contrassegna il test per l'esecuzione solo in modalità App completa annotandolo con @AppModeFull . Puoi applicare questa annotazione al livello della classe per escludere tutti i test in essa contenuti.

Se il test fallisce perché alcune funzionalità accessibili alle app istantanee non funzionano, segnala un bug .

Risoluzione dei problemi

Se il test fallisce con Impossibile installare MyCtsModule.apk sul DISPOSITIVO. Motivo: '-116' , cerca i messaggi PackageManager su logcat. Ad esempio, se dice Can't replace Full App with Instant App: your_app , adb disinstalla prima la tua app.