CTS para aplicaciones instantáneas

Las aplicaciones instantáneas son una característica clave de 10, por lo que es esencial que funcionen correctamente. Las aplicaciones instantáneas se instalan implícitamente, por lo que tienen un conjunto restringido de capacidades y se ejecutan en un entorno limitado de seguridad más restrictivo. Debido a la naturaleza generalizada de estas restricciones, cualquier parte del sistema corre el riesgo de no funcionar correctamente con las aplicaciones instantáneas. Se crea un subconjunto de prueba CTS para garantizar que los comportamientos permitidos por las aplicaciones instantáneas funcionen. La idea clave es minimizar el crecimiento del tamaño de CTS aislando el conjunto mínimo de pruebas al puerto. CTS que se ejecuta en el modo de aplicaciones instantáneas significa instalar el APK de prueba como una aplicación instantánea y ejecutar las pruebas.

Restricciones de aplicaciones instantáneas

El usuario no instala las aplicaciones instantáneas, por lo que se ejecutan en una zona de pruebas restringida con las siguientes restricciones:

  • Solo puede tener ciertos permisos.
  • No se pueden ver otras aplicaciones a menos que esas aplicaciones estén marcadas como visibles para aplicaciones instantáneas.
  • Puede acceder solo a ciertas configuraciones del sistema.
  • Solo puede acceder a ciertas propiedades del sistema.
  • No se pueden exponer servicios/proveedores.
  • Puede recibir y enviar con reglas especiales en torno a las transmisiones.

Además, las aplicaciones instantáneas deben optar por permitir que la nueva zona de pruebas de seguridad agregue más restricciones. Esta amplia gama de comportamientos especiales en torno a las aplicaciones instantáneas atraviesa toda la plataforma, por lo que debe haber una forma de validar que las aplicaciones instantáneas funcionen como se espera para todos los dispositivos del ecosistema.

Pruebas que se ejecutan en el modo Aplicaciones instantáneas

No todos los módulos de CTS tienen pruebas aplicables a aplicaciones instantáneas. Si la funcionalidad probada por el módulo tiene interacción con el servidor del sistema, estas pruebas deben ejecutarse en el modo de aplicación instantánea. 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 aplicación instantánea, mientras que las pruebas de accesibilidad interactúan con el servidor del sistema, pero es necesario ejecutarlas en el modo de aplicación instantánea.

Además de identificar qué módulos son aplicables, los usuarios deben determinar qué pruebas en estos módulos son relevantes. Por ejemplo, la prueba de comportamientos específicos del servicio para una arquitectura conectable (por ejemplo, AccessibilityService) no es aplicable para el modo de aplicación instantánea, ya que las aplicaciones instantáneas no pueden exponer los servicios a otras aplicaciones (incluida la plataforma), mientras que las pruebas que validan los comportamientos del lado de la aplicación son aplicable para el modo Aplicaciones instantáneas. Otro ejemplo es una prueba que valida los comportamientos detrás de un permiso que una aplicación instantánea no puede tener y que no son relevantes en el modo de aplicación instantánea. Hay un conjunto de pruebas que se aplican solo a las aplicaciones instantáneas que validan las reglas sobre cómo se comportan, por ejemplo, no exponer servicios o no ver otras aplicaciones. Por lo general, estos ya están escritos y no requieren portabilidad.

Fallos de prueba en modo instantáneo

Si la prueba falla porque valida la funcionalidad a la que las aplicaciones instantáneas no pueden acceder, entonces no es aplicable en el modo de aplicación instantánea. Marque la prueba para que se ejecute solo en el modo de aplicación completa al anotarla con @AppModeFull . Puede aplicar esta anotación al nivel de clase para excluir todas las pruebas en él.

Si la prueba falla porque alguna funcionalidad accesible para Instant Apps no funciona, presente un error .

Solución de problemas

Si su prueba falla con Error al instalar MyCtsModule.apk en el DISPOSITIVO. Razón: '-116' , busque mensajes de PackageManager en logcat. Por ejemplo, si dice Can't replace Full App with Instant App: your_app , entonces adb desinstale su aplicación primero.