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

En Android 11 o versiones posteriores, los módulos de ayuda 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 las acciones, como reemplazar un elemento de la IU que no está cubierto por el documento de definición de compatibilidad de Android (CDD) o los documentos de la API, se pueden realizar y, al mismo tiempo, aprobar el CTS.

Los OEMs que quieran personalizar la IU de Android durante el desarrollo del producto y necesiten aprobar CTS podrían implementar módulos de ayuda. Si usas la implementación predeterminada de Android, no es necesario que realices ninguna acción adicional.

Implementa módulos auxiliares

Requisitos para personalizar la IU

Verifica los módulos de CDD o Mainline para conocer los requisitos de la IU. Si la IU deseada está cubierta por los módulos de CDD o de la línea principal, esa IU no se podrá personalizar.

Si las pruebas del CTS que interactúan con la IU deseada no usan el framework auxiliar, esa IU no se puede personalizar. 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 de ayuda de AOSP existentes como subclases para los módulos de prueba de CTS que deben interactuar con la IU. Reemplaza las interacciones necesarias de manera adecuada para la IU personalizada. Los reemplazos varían según el tipo de cambios.
    • Las subclases de OEM están 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 asistentes 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 ayudantes del OEM implementan por completo todas las interfaces relevantes, 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 APK, 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 haya elegido la clase de implementación auxiliar esperada mediante el análisis de los mensajes de logcat.
  6. Opcional, pero altamente recomendable: Envía tu implementación de asistente al AOSP o haz que esté disponible para pruebas de terceros.

Ejemplo de implementación de ayuda

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

Si personalizas la IU de impresión, puedes crear una com.oem.cts.helpers.OemCtsPrintHelper que sea una subclase de 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 ayudas de AOSP predeterminadas 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 del CTS con sus asistentes, los propietarios de estas pueden usar la definición de @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 de ayuda esperado se documenta en una interfaz definida en cts/libs/helpers/core/src/com/android/cts/helpers.

Cómo ejecutar pruebas de CTS

Cómo realizar pruebas sin ayudantes

Aparte de una propiedad, la opción de probar sin ayudantes 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 de ayuda, tienes dos opciones:

  • Quita la propiedad ro.vendor.cts_interaction_helper_packages del dispositivo. De esta manera, se evita que los asistentes se usen por completo en esa compilación.
  • Quita el APK de ayuda del directorio testcases antes de ejecutar CTS. Esto evita que las ejecuciones usen los ayudantes hasta que el APK se restaure a 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 desde donde se carga el APK auxiliar.

Consulta la siguiente información para conocer los valores o rangos esperados para 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 aceptar cualquier valor que sea una opción de paquete válida para la implementación del asistente 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.

Cómo realizar pruebas con personalizaciones

De forma predeterminada, las implementaciones de referencia pasan CTS en el Android de stock. Verifica que las implementaciones de los socios pasen la CTS con personalizaciones de la IU. Ejecuta los módulos de CTS que cubren la IU o las funciones que personalizaste.

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

  • Es posible que un módulo de CTS que interactúe con la IU que deseas personalizar no use el framework auxiliar. Se espera que los módulos de CTS se conviertan en el framework de ayuda según la demanda y las prioridades del propietario de la prueba. Envía solicitudes de conversión al principio del proceso para asegurarte de que se incluyan en el cronograma, de manera similar a solicitar cambios en CTS para admitir las funciones planificadas.
  • Es posible que las funciones que proporciona un asistente existente no aborden por completo las personalizacións que deseas realizar. Las funciones de ayuda deben abstraer las dependencias de la IU. Si una función auxiliar tiene una dependencia de IU de forma indirecta, esto se puede tratar de manera similar a los errores de CTS.