Trade Federation (Tradefed o TF para abreviar) es un framework de pruebas continuas diseñado para ejecutar pruebas en dispositivos Android. Por ejemplo, Tradefed se usa para ejecutar el Conjunto de pruebas de compatibilidad (CTS) y el Conjunto de pruebas del proveedor (VTS).
Trade Federation es una aplicación de Java que se ejecuta en una computadora host y se comunica con uno o más dispositivos Android a través de ddmlib (la biblioteca detrás de DDMS) a través de adb.
A continuación, enumeramos algunas de las funciones principales de TF, junto con algunos casos de uso de muestra. Dicho esto, si quieres comenzar de inmediato, puedes ir directamente a la página Comienza aquí.
Funciones
- diseño modular, flexible y escalable
- tiene compatibilidad integrada para ejecutar muchos tipos diferentes de pruebas de Android: instrumentación, uiautomator, nativo/gtest, JUnit basado en host, etcétera.
- proporciona mecanismos de confiabilidad y recuperación sobre adb
- admite la programación y ejecución de pruebas en varios dispositivos de forma simultánea
Consulta Pruebas a través de TF para obtener la información más actualizada sobre cómo ejecutar tus pruebas existentes, como la instrumentación.
Casos de uso
La modularidad de la Federación de Comercio permite integrarla fácilmente en entornos con infraestructuras de compilación, prueba y generación de informes existentes. A continuación, se incluyen algunos casos de uso demostrativos en los que tradefed podría permitir prácticas de prueba eficientes y escalables.
Primero, es útil considerar el panorama de los posibles casos de uso en términos de la pregunta "¿qué partes son modificables y cuáles son estáticas?". Por ejemplo, un OEM de dispositivos puede modificar el framework, el sistema y el hardware, pero tiene poca o ninguna influencia en las aplicaciones existentes. Por otro lado, un desarrollador de aplicaciones puede modificar la app, pero tiene poco control sobre la mayoría de los aspectos del sistema o el framework.
Como resultado, una entidad en cada caso de uso tendrá diferentes objetivos de prueba y 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 dispositivos compila hardware y, a menudo, ajusta el sistema y los frameworks de Android para que se ejecuten bien en ese hardware. El OEM puede esforzarse por lograr esos objetivos y, al mismo tiempo, mantener la estabilidad y el rendimiento a nivel del hardware y del sistema, y asegurarse de que los cambios en el framework no afecten la compatibilidad con las aplicaciones existentes.
El OEM podría implementar un módulo de actualización de firmware del dispositivo que se ejecutará durante la etapa de configuración del destino 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 forzar al dispositivo a ingresar al bootloader, escribir en la memoria flash y, luego, forzar al dispositivo a reiniciarse en el modo de espacio de usuario. Si se combina con un módulo para vincularlo a un sistema de compilación continua, esto le permitiría al OEM ejecutar pruebas en su dispositivo a medida que realiza cambios en el firmware a nivel del sistema y en los frameworks 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. Por último, podría escribir uno o más módulos de informes de resultados para vincularlos a repositorios de resultados de pruebas existentes o para informar los resultados directamente (por ejemplo, por correo electrónico).
Un desarrollador de apps
Un desarrollador de aplicaciones crea una app que debe ejecutarse bien en una variedad de versiones de plataformas y dispositivos. Si surge un problema en una versión o un dispositivo de la plataforma en particular, el único remedio es agregar una solución alternativa y continuar. En el caso de los desarrolladores más grandes, el proceso de prueba se puede incorporar en una secuencia de compilación continua. En el caso de los desarrolladores más pequeños, es posible que se inicie de forma periódica o manual.
La mayoría de los desarrolladores de apps usarí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 APKs descargados desde un servicio de compilación. Es importante tener en cuenta que la última versión seguiría funcionando correctamente con una cantidad arbitraria de instancias de TF que se ejecuten en la misma máquina host.
Debido a la competencia de TF para tratar con varios dispositivos, sería sencillo clasificar cada resultado de la prueba según el tipo de dispositivo que se usó para esa prueba. Por lo tanto, TF podría generar una matriz de compatibilidad de 2 dimensiones (o multidimensiones) para cada compilación de la aplicación.
Servicio de pruebas
Por ejemplo, un servicio de prueba podría permitir que los desarrolladores de apps envíen apps y ejecuten pruebas en dispositivos instrumentados con herramientas de medición de energía para determinar el consumo de energía de la app. Esto difiere de los dos casos de uso anteriores en que el compilador de servicios no controla los dispositivos ni las aplicaciones que se ejecutan.
Debido a que Trade Federation puede ejecutar cualquier clase de Java que implemente la interfaz simple IRemoteTest
, es trivial escribir controladores que puedan coordinar algún hardware externo con el caso de prueba que se ejecuta en el dispositivo. El propio controlador puede crear subprocesos, enviar solicitudes a otros servidores o hacer cualquier otra acción 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 la canalización de informes de resultados estándar.