Módulo auxiliar de interacción de dispositivos CTS

Para Android 11 o superior, los módulos auxiliares de interacción del dispositivo Compatibility Test Suite (CTS) le permiten personalizar cómo interactúan ciertas pruebas CTS con la interfaz de usuario (UI) en un dispositivo específico. Esto significa que se pueden realizar acciones, como reemplazar un elemento de la interfaz de usuario que no está cubierto por el Documento de definición de compatibilidad de Android (CDD) o los documentos API, mientras se sigue pasando CTS.

Los OEM que deseen personalizar la interfaz de usuario de Android durante el desarrollo del producto y necesiten aprobar CTS podrían implementar módulos auxiliares. Si utiliza la implementación predeterminada de Android, no se necesita ningún trabajo adicional.

Implementación de módulos auxiliares

Requisitos para personalizar la UI

Consulte los módulos CDD o Mainline para conocer los requisitos de la interfaz de usuario. Si la interfaz de usuario deseada está cubierta por los módulos CDD o Mainline, entonces esa interfaz de usuario no se puede personalizar.

Si las pruebas CTS que interactúan con la interfaz de usuario deseada no utilizan el marco auxiliar, entonces esa interfaz de usuario no se puede personalizar. Trabaje con el propietario de la prueba para convertir el módulo de prueba antes de poder cambiar la interfaz de usuario.

De lo contrario, puede personalizar la interfaz de usuario.

Flujo de trabajo de implementación

  1. Personalice la interfaz de usuario según sea necesario para su producto específico.
  2. Designe los módulos auxiliares de AOSP existentes como subclases para los módulos de prueba CTS que necesitan interactuar con la interfaz de usuario. Reemplace las interacciones necesarias de manera adecuada para la interfaz de usuario personalizada. Los reemplazos varían según el tipo de cambios.
    • Las subclases OEM están en un paquete OEM, como com.[oem].cts.helpers .
    • Cada subclase OEM recibe un nombre con un prefijo común que la distingue de la implementación AOSP, que tiene el prefijo Default .
  3. Cree los asistentes en un APK siguiendo estas convenciones de ejecución de pruebas.
    • Android.bp debería 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 aplicación debería depender de cts-helpers-core , cts-helpers-interfaces y com.android.cts.helpers.aosp . Si los asistentes OEM implementan completamente todas las interfaces relevantes, entonces com.android.cts.helpers.aosp es opcional.
  4. Configure la propiedad ro.vendor.cts_interaction_helper_packages en la imagen del dispositivo para incluir el nombre del APK. Si necesita separar las implementaciones auxiliares en varios APK, esta propiedad puede contener una lista de paquetes separados por dos puntos.
  5. Asegúrese de que el APK esté disponible en el directorio testcases cuando ejecute Tradefed para CTS. Si es necesario, confirme que se haya elegido la clase de implementación auxiliar esperada examinando los mensajes de logcat.
  6. Opcional, pero muy recomendable: envíe su implementación auxiliar a AOSP o póngala a disposición para pruebas de terceros.

Ejemplo de implementación de ayuda

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

Si personaliza la interfaz de usuario de impresión, puede crear com.oem.cts.helpers.OemCtsPrintHelper que subclase DefaultCtsPrintHelper . android_test_helper_app en Android.bp se denomina com.oem.cts.helpers , lo 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 está configurada en com.oem.cts.helpers .

Implementaciones de referencia

Las implementaciones de referencia incluyen interfaces en cts/libs/helpers y los ayudantes AOSP predeterminados en cts/helpers . La interfaz de nivel superior está documentada en cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java .

Para conectar la prueba CTS con sus ayudantes, 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 CTS que utiliza el marco y su comportamiento auxiliar esperado está documentado en una interfaz definida en cts/libs/helpers/core/src/com/android/cts/helpers .

Ejecución de pruebas CTS

Pruebas sin ayudantes

Aparte de una propiedad, la opción de realizar pruebas sin ayudas no existe en tiempo de ejecución en el dispositivo, pero opcionalmente modifica cómo interactúan las pruebas CTS con el dispositivo. Si necesita ejecutar CTS sin las implementaciones auxiliares, tiene dos opciones:

  • Elimine la propiedad ro.vendor.cts_interaction_helper_packages del dispositivo. Esto evita que los ayudantes se utilicen por completo en esa compilación.
  • Elimine el APK auxiliar del directorio testcases antes de ejecutar CTS. Esto evita que las ejecuciones utilicen los ayudantes hasta que el APK se restaure en los testcases .

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

Consulte lo siguiente para conocer los valores o rangos esperados para cada una de las configuraciones 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 establezca en el dispositivo. El valor de la propiedad sigue las mismas restricciones que la propiedad ro.vendor.cts_interaction_helper_packages descrita anteriormente.

Pruebas con personalizaciones

De forma predeterminada, las implementaciones de referencia pasan CTS en Android estándar. Verifique que las implementaciones de los socios pasen CTS con personalizaciones de la interfaz de usuario. Ejecute los módulos CTS que cubran la interfaz de usuario o las funciones que personalizó.

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

  • Es posible que un módulo CTS que interactúe con la interfaz de usuario que desea personalizar no utilice el marco auxiliar. Se espera que los módulos CTS se conviertan al marco auxiliar según la demanda y las prioridades del propietario de la prueba. Presente solicitudes de conversión al principio del proceso para garantizar que la conversión se realice según lo programado, similar a solicitar cambios de CTS para admitir las funciones planificadas.
  • Es posible que las funciones proporcionadas por un asistente existente no aborden completamente las personalizaciones que desea realizar. Las funciones auxiliares deberían abstraer las dependencias de la interfaz de usuario. Si una función auxiliar tiene indirectamente una dependencia de la interfaz de usuario, esto se puede tratar de manera similar a los errores en CTS.