Módulo de ayuda de interacción con dispositivos CTS

En Android 11 o versiones posteriores, los módulos auxiliares de interacción con el dispositivo del Conjunto de pruebas de compatibilidad (CTS) te permiten personalizar la forma en que ciertas pruebas de CTS interactúan con la interfaz de usuario (IU) en un dispositivo específico. Esto significa que se pueden realizar acciones, como reemplazar un elemento de la IU que no está cubierto por el Documento de definición de compatibilidad (CDD) de Android o la documentación de la API, sin dejar de aprobar el CTS.

Los OEMs que deseen personalizar la IU de Android durante el desarrollo del producto y necesiten aprobar el CTS podrían implementar módulos auxiliares. Si usas la implementación predeterminada de Android, no es necesario realizar ningún trabajo adicional.

Implementa módulos auxiliares

Requisitos para personalizar la IU

Consulta el CDD o los módulos de Mainline para conocer los requisitos de la IU. Si la IU deseada está cubierta por el CDD o los módulos de Mainline, no se puede personalizar.

Si las pruebas de CTS que interactúan con la IU deseada no usan el framework auxiliar, no se puede personalizar esa IU. Trabaja con el propietario de la prueba para convertir el módulo de prueba antes de que se pueda cambiar la IU.

De lo contrario, puedes personalizar la IU.

Flujo de trabajo de implementación

  1. Personaliza la IU según sea necesario para tu producto específico.
  2. Designa los módulos auxiliares de AOSP existentes como subclases para los módulos de prueba de CTS que necesitan interactuar con la IU. Reemplaza las interacciones necesarias de forma adecuada para la IU personalizada. Los reemplazos varían según el tipo de cambios.
    • Las subclases de OEM se encuentran en un paquete de OEM, como com.[oem].cts.helpers.
    • Cada subclase de OEM se nombra con un prefijo común que la distingue de la implementación de AOSP, que tiene el prefijo Default.
  3. Compila los auxiliares en un APK siguiendo estas convenciones del ejecutor de pruebas.
    • Android.bp debe declarar android_test_helper_app con el mismo nombre que el paquete contenido.
    • AndroidManifest.xml para el APK debe declarar una propiedad de metadatos llamada interaction-helpers-prefix con el valor del prefijo de clase elegido en el punto anterior.
    • La app debe depender de cts-helpers-core, cts-helpers-interfaces y com.android.cts.helpers.aosp. Si los auxiliares de OEM implementan por completo todas las interfaces pertinentes, com.android.cts.helpers.aosp es opcional.
  4. Establece la propiedad ro.vendor.cts_interaction_helper_packages en la imagen del dispositivo para incluir el nombre del APK. Si necesitas separar las implementaciones auxiliares en varios APKs, esta propiedad puede contener una lista de paquetes separados por dos puntos.
  5. Asegúrate de que el APK esté disponible en el directorio testcases cuando ejecutes Tradefed para CTS. Si es necesario, confirma que se eligió la clase de implementación auxiliar esperada examinando los mensajes de logcat.
  6. Opcional, pero altamente recomendado: Envía tu implementación auxiliar a AOSP o hazla disponible para pruebas de terceros.

Ejemplo de implementación auxiliar

Por ejemplo, CtsPrintTestCases espera un auxiliar con la interfaz definida en ICtsPrintHelper. La implementación de AOSP se llama com.android.cts.helpers.aosp.DefaultCtsPrintHelper.

Si personalizas la IU de impresión, puedes crear com.oem.cts.helpers.OemCtsPrintHelper que subclases DefaultCtsPrintHelper. android_test_helper_app en Android.bp se llama com.oem.cts.helpers, que produce com.oem.cts.helpers.apk, y declara interaction-helpers-prefix como Oem en AndroidManifest.xml.

La propiedad del dispositivo ro.vendor.cts_interaction_helper_packages se establece en com.oem.cts.helpers.

Implementaciones de referencia

Las implementaciones de referencia incluyen interfaces en cts/libs/helpers y los auxiliares predeterminados de AOSP en cts/helpers. La interfaz de nivel superior se documenta en cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java.

Para conectar la prueba de CTS a sus auxiliares, los propietarios de la prueba pueden usar la definición @Rule documentada en cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java.

Cada módulo de CTS que usa el framework y su comportamiento auxiliar esperado se documenta en una interfaz definida en cts/libs/helpers/core/src/com/android/cts/helpers.

Ejecuta pruebas de CTS

Prueba sin auxiliares

Además de una propiedad, la opción de probar sin auxiliares no existe en el tiempo de ejecución en el dispositivo, pero, de manera opcional, modifica la forma en que las pruebas de CTS interactúan con el dispositivo. Si necesitas ejecutar CTS sin las implementaciones auxiliares, tienes dos opciones:

  • Quita la propiedad ro.vendor.cts_interaction_helper_packages del dispositivo. Esto evita que los auxiliares se usen por completo en esa compilación.
  • Quita el APK auxiliar del directorio testcases antes de ejecutar CTS. Esto evita que los auxiliares se usen en cualquier ejecución hasta que se restablezca el APK en testcases.

Puedes modificar la configuración predeterminada con los argumentos de Tradefed y el control de propiedades ro.vendor.cts_interaction_helper_packages, que es donde se carga el APK auxiliar.

Consulta lo siguiente para conocer los valores o rangos esperados de cada uno de los parámetros de configuración disponibles.

  • ro.vendor.cts_interaction_helper_packages es una cadena separada por dos puntos que contiene nombres de paquetes. Puede tomar cualquier valor que sea una opción de paquete válida para la implementación auxiliar del OEM.
  • cts-tradefed acepta un argumento device-interaction-helper:property-name que cambia temporalmente la propiedad esperada para una ejecución de prueba, como --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. El valor del nombre de la propiedad puede ser cualquier propiedad que establezcas en el dispositivo. El valor de la propiedad sigue las mismas restricciones que la propiedad ro.vendor.cts_interaction_helper_packages descrita anteriormente.

Prueba con personalizaciones

De forma predeterminada, las implementaciones de referencia aprueban el CTS en Android estándar. Verifica que las implementaciones de socios aprueben el CTS con personalizaciones de la IU. Ejecuta los módulos de CTS que cubran la IU o las funciones que personalizaste.

Es posible que algunos módulos o auxiliares de CTS aún no admitan algunas personalizaciones.

  • Es posible que un módulo de CTS que interactúa con la IU que deseas personalizar no use el framework auxiliar. Se espera que los módulos de CTS se conviertan en el framework auxiliar según la demanda y las prioridades del propietario de la prueba. Solicita archivos para la conversión al principio del proceso para asegurarte de que la conversión se realice según la programación, de manera similar a la solicitud de cambios en el CTS para admitir las funciones planificadas.
  • Es posible que las funciones proporcionadas por un auxiliar existente no aborden por completo las personalizaciones que deseas realizar. Las funciones auxiliares deben abstraer las dependencias de la IU. Si una función auxiliar tiene una dependencia de la IU de forma indirecta, se puede tratar de manera similar a los errores en el CTS.