Las Instant Apps son una función clave de Android 10, por lo que es fundamental que funcionen correctamente. Las Instant Apps se instalan de forma implícita, por lo que tienen un conjunto restringido de capacidades y se ejecutan en una zona de pruebas de seguridad más restrictiva. Debido a la naturaleza generalizada de estas restricciones, cualquier parte del sistema corre el riesgo de no funcionar correctamente con las Instant Apps. Se crea un subconjunto de pruebas del CTS para garantizar que los comportamientos permitidos por las apps instantáneas funcionen. La idea clave es minimizar el crecimiento del tamaño del CTS aislando el conjunto mínimo de pruebas que se deben portar. El CTS que se ejecuta en el modo de Apps instantáneas implica instalar el APK de prueba como una app instantánea y ejecutar las pruebas.
Restricciones de las Instant Apps
El usuario no instala las apps instantáneas, por lo que se ejecutan en una zona de pruebas restringida con las siguientes limitaciones:
- Solo puede tener ciertos permisos.
- No se pueden ver otras apps, a menos que estén marcadas como visibles para las apps instantáneas.
- Solo puede acceder a ciertos parámetros de configuración del sistema.
- Solo puede acceder a ciertas propiedades del sistema.
- No se pueden exponer servicios ni proveedores.
- Puede recibir y enviar mensajes con reglas especiales sobre las transmisiones.
Además, las Instant Apps deben habilitar el nuevo sandbox de seguridad para agregar más restricciones. Esta amplia variedad de comportamientos especiales en torno a las Instant Apps abarca toda la plataforma, por lo que debe haber una forma de validar que las Instant Apps funcionen según lo previsto en todos los dispositivos del ecosistema.
Pruebas que se ejecutan en el modo de Apps instantáneas
No todos los módulos del CTS tienen pruebas aplicables a las Instant Apps. Si la funcionalidad que prueba el módulo interactúa con el servidor del sistema, estas pruebas deben ejecutarse en el modo de apps instantáneas. Por ejemplo, las pruebas de OpenGL no interactúan con el servidor del sistema, por lo que no es necesario ejecutarlas en el modo de Instant Apps, mientras que las pruebas de accesibilidad sí interactúan con el servidor del sistema, por lo que es necesario ejecutarlas en el modo de Instant Apps.
Además de identificar qué módulos son aplicables, los usuarios deben determinar qué pruebas de estos módulos son pertinentes. Por ejemplo, probar los comportamientos específicos del servicio para una arquitectura conectable (por ejemplo, AccessibilityService) no es aplicable para el modo de Instant Apps, ya que estas no pueden exponer servicios a otras apps (incluida la plataforma), mientras que las pruebas que validan los comportamientos del lado de la app son aplicables para el modo de Instant Apps. Otro ejemplo es una prueba que valida comportamientos detrás de un permiso que una app instantánea no puede tener, que no son relevantes en el modo de app instantánea. Hay un conjunto de pruebas que se aplican solo a las Instant Apps y que validan las reglas sobre su comportamiento, por ejemplo, no exponer servicios o no ver otras apps. Por lo general, ya están escritas y no requieren portabilidad.
Fallas en las pruebas en el modo de Apps instantáneas
Si la prueba falla porque valida una funcionalidad a la que no pueden acceder las apps instantáneas, no es aplicable en el modo de apps instantáneas. Marca la prueba para que se ejecute solo en el modo de app completa anotándola con @AppModeFull
. Puedes aplicar esta anotación a nivel de la clase para excluir todas las pruebas que contiene.
Si la prueba falla porque no funciona alguna función a la que pueden acceder las apps instantáneas, registra un error.
Solución de problemas
Si la prueba falla con el mensaje Failed to install MyCtsModule.apk on DEVICE. Motivo: "-116", busca mensajes de PackageManager en logcat. Por ejemplo, si dice Can't replace Full App with Instant App: your_app, primero desinstala tu app con adb.