Módulo auxiliar de interacción de dispositivos CTS

Para Android 11 o superior, los módulos auxiliares de interacción de dispositivos de Compatibility Test Suite (CTS) le permiten personalizar cómo ciertas pruebas CTS interactúan con la interfaz de usuario (UI) en un dispositivo específico. Esto significa que las 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 de la API, se pueden realizar sin dejar de pasar 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 usa la implementación predeterminada de Android, no se necesita ningún trabajo adicional.

Implementación de módulos auxiliares

Requisitos para personalizar la interfaz de usuario

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 de CTS que interactúan con la interfaz de usuario deseada no usan el marco auxiliar, esa interfaz de usuario no se puede personalizar. Trabaje con el propietario de la prueba para convertir el módulo de prueba antes de que se pueda 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 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 se nombra con un prefijo común que la distingue de la implementación AOSP, que tiene el prefijo Default .
  3. Cree los ayudantes en un APK siguiendo estas convenciones de ejecutores 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 aplicación debe depender de cts-helpers-core , cts-helpers-interfaces y com.android.cts.helpers.aosp . Si los ayudantes de OEM implementan completamente todas las interfaces relevantes, entonces com.android.cts.helpers.aosp es opcional.
  4. Establezca la propiedad ro.vendor.cts_interaction_helper_packages en la imagen del dispositivo para incluir el nombre del APK. Si necesita separar sus 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 de casos de prueba cuando ejecute testcases para CTS. Si es necesario, confirme que se eligió la clase de implementación auxiliar esperada examinando los mensajes 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 auxiliar

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 crea subclases DefaultCtsPrintHelper . android_test_helper_app en Android.bp se denomina 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 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 a 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 usa el marco y su comportamiento auxiliar esperado se documenta 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 probar sin ayudantes no existe en tiempo de ejecución en el dispositivo, pero modifica opcionalmente la forma en que las pruebas CTS interactúan con el dispositivo. Si necesita ejecutar CTS sin las implementaciones auxiliares, tiene dos opciones:

  • Quite 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 de testcases de prueba antes de ejecutar CTS. Esto evita que los asistentes sean utilizados por cualquier ejecución hasta que el APK se restaure a los casos de 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 los nombres de los 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 socios aprueben CTS con personalizaciones de UI. Ejecute los módulos CTS que cubran la interfaz de usuario o las funciones que haya personalizado.

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

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