Trade Federation (Tradefed o TF para abreviar) es un marco de prueba continuo diseñado para ejecutar pruebas en dispositivos Android. Por ejemplo, Tradefed se utiliza para ejecutar Compatibility Test Suite (CTS) y Vendor Test Suite (VTS) .
Trade Federation es una aplicación Java que se ejecuta en una computadora host y se comunica con uno o más dispositivos Android mediante ddmlib (la biblioteca detrás de DDMS) a través de adb.
A continuación, enumeramos algunas de las características principales de TF, junto con un par de casos de uso de muestra. Dicho esto, si desea comenzar de inmediato, puede dirigirse directamente a la página Comenzar aquí .
Características
- Diseño modular, flexible y escalable.
- tiene soporte integrado para ejecutar muchos tipos diferentes de pruebas de Android: instrumentación , uiautomator , nativo/gtest, JUnit basado en host, etc.
- proporciona mecanismos de confiabilidad y recuperación además de adb
- admite la programación y ejecución de pruebas en múltiples dispositivos en paralelo
Consulte Pruebas mediante TF para obtener la información más actualizada sobre cómo ejecutar las pruebas existentes, como Instrumentación .
Casos de uso
La modularidad de Trade Federation hace que sea sencillo integrarlo en entornos con infraestructuras de creación, prueba y generación de informes existentes. A continuación enumeramos algunos casos de uso demostrativos en los que tradefed podría permitir prácticas de prueba eficientes y escalables.
En primer lugar, es útil considerar el panorama de posibles casos de uso en términos de la pregunta "¿qué partes son modificables y qué partes son estáticas?". Por ejemplo, un OEM de dispositivo puede modificar la estructura, el sistema y el hardware, pero tiene poca o ninguna influencia sobre las aplicaciones existentes. Un desarrollador de aplicaciones, por otro lado, puede modificar la aplicación, pero tiene poco control sobre la mayoría de los aspectos del sistema o el marco.
Como resultado, una entidad en cada caso de uso tendrá diferentes objetivos de prueba y tendrá diferentes opciones en el caso de un conjunto de fallas de prueba. A pesar de estas diferencias, Trade Federation puede ayudar a que cada uno de sus procesos de prueba sea eficiente, flexible y escalable.
OEM del dispositivo
Un OEM de dispositivo construye hardware y, a menudo, modifica el sistema y los marcos de Android para que funcionen bien en ese hardware. El OEM podría esforzarse por lograr esos objetivos manteniendo la estabilidad y el rendimiento a nivel de hardware y sistema, y asegurándose de que los cambios en el marco no rompan la compatibilidad con las aplicaciones existentes.
El OEM podría implementar un módulo de actualización del dispositivo que se ejecutará durante la etapa de configuración del objetivo del ciclo de vida . Ese módulo tendría control total sobre el dispositivo durante su período de ejecución, lo que le permitiría potencialmente forzar el dispositivo en el gestor de arranque, flashear y luego forzar que el dispositivo se reinicie nuevamente en el modo de espacio de usuario. Combinado con un módulo para vincularlo a un sistema de compilación continua, esto permitiría al OEM ejecutar pruebas en su dispositivo a medida que realiza cambios en el firmware a nivel del sistema y los marcos a nivel de Java.
Una vez que el dispositivo se haya iniciado por completo, el OEM podrá aprovechar las pruebas existentes basadas en JUnit o escribir otras nuevas para verificar la funcionalidad de interés. Finalmente, podrían escribir uno o más módulos de informes de resultados para vincularlos a los repositorios de resultados de pruebas existentes o para informar los resultados directamente (por ejemplo, por correo electrónico ).
desarrollador de aplicaciones
Un desarrollador de aplicaciones crea una aplicación que debe funcionar bien en una variedad de versiones de plataformas y una variedad de dispositivos. Si surge un problema en una versión de plataforma y/o dispositivo en particular, la única solución es agregar una solución alternativa y seguir adelante. Para desarrolladores más grandes, el proceso de prueba podría incorporarse a una secuencia de compilación continua. Para los desarrolladores más pequeños, podría iniciarse periódicamente o manualmente.
La mayoría de los desarrolladores de aplicaciones utilizarían los módulos de instalación de prueba de apk que ya existen en TF. Hay una versión que se instala desde el sistema de archivos local , así como una versión que puede instalar aplicaciones descargadas desde un servicio de compilación . Es importante tener en cuenta que la última versión seguirá funcionando correctamente con muchas instancias de TF ejecutándose en la misma máquina host.
Debido a la competencia de TF para manejar múltiples dispositivos, sería sencillo clasificar cada resultado de la prueba por el tipo de dispositivo que se utilizó para esa prueba. Por lo tanto, TF podría generar potencialmente una matriz de compatibilidad bidimensional (o multidimensional) para cada compilación de la aplicación.
Servicio de pruebas
Un servicio de prueba podría, por ejemplo, permitir a los desarrolladores de aplicaciones enviar aplicaciones y ejecutar pruebas en dispositivos equipados con herramientas de medición de energía para determinar el uso de energía de la aplicación. Esto se diferencia de los dos casos de uso anteriores en que el creador de servicios no controla los dispositivos ni las aplicaciones que se ejecutan.
Debido a que Trade Federation puede ejecutar cualquier clase Java que implemente la interfaz IRemoteTest
simple, es trivial escribir controladores que puedan coordinar alguna pieza externa de hardware con el caso de prueba que se ejecuta en el dispositivo. El propio controlador puede generar subprocesos, enviar solicitudes a otros servidores o hacer cualquier otra cosa que pueda necesitar. Además, la simplicidad y versatilidad de la interfaz de informes de resultados, ITestInvocationListener
, significa que también es sencillo representar resultados de pruebas arbitrarios (incluidas, por ejemplo, métricas de potencia numérica) en el proceso de informes de resultados estándar.