Cuando el corpus de prueba es grande o el tiempo de ejecución es largo, ofrecemos la posibilidad de dividir las pruebas en varios dispositivos: fragmentación.
La fragmentación tiene requisitos previos para que el ejecutor de pruebas admita la fragmentación.
La mayoría de los ejecutores de pruebas principales ya admite la fragmentación, por lo que no se necesitan se requiere trabajo. Estas ya admiten la fragmentación: pruebas de instrumentación, pruebas controladas del host, GTest.
Admitimos dos tipos de fragmentación en Tradefed: local y distribuido. Dado que comparten algunas similitudes, esta página describe las propiedades en común y luego los detalles de cada una.
Propiedades comunes
Ambas formas de fragmentación asumen las mismas propiedades de los ejecutores de pruebas: los fragmentos deben ser independientes y deterministas. El primer paso de ambas fragmentaciones es para compilar la lista completa y ordenada de las pruebas y, luego, dividirlas diferentes grupos o fragmentos.
La principal diferencia de los formularios de fragmentación es la forma en que ejecutan las pruebas. Obtén más detalles en las siguientes secciones.
Fragmentación local
Fragmentación local se refiere a todos los dispositivos involucrados en la ejecución de la fragmentación invocación independiente están conectadas al mismo host físico.
Ejecución
La fragmentación local aprovecha todos los dispositivos que se conectan a la misma de host creando un grupo de pruebas que deba ejecutarse y haciendo que cada Sondeo del dispositivo realiza pruebas cuando está libre (es decir, cuando se realizó con la prueba anterior). De esta manera, se optimiza el uso de los dispositivos. También lo llamamos fragmentación dinámica.
Opciones
--shard-count XX
Fragmentación distribuida
Fragmentación distribuida se refiere a todos los dispositivos involucrados en la ejecución de la la invocación fragmentada puede permanecer en cualquier lugar y conectarse a diferentes los hosts.
Ejecución
La fragmentación distribuida se produce en la creación de la lista de pruebas y el contenido de cada fragmento ejecuta solo el que se solicita actualmente. Todo los fragmentos distribuidos compilan la misma lista al principio y, luego, ejecutan un subconjunto exclusivo de él, lo que da como resultado la ejecución de todas las pruebas.
La propiedad principal de este formulario, que son los fragmentos, no conoce por completo cada uno de ellos. y pueden fallar de forma independiente.
El principal inconveniente es que la longitud del fragmento no necesariamente se equilibra simplemente porque no podemos predecir con anticipación el tiempo de ejecución de cada prueba en cada fragmento. La distribución debe tener aproximadamente la misma cantidad de casos de prueba. en cada fragmento.
Opciones
--shard-count XX --shard-index XX
Fragmentación de tokens
La fragmentación de tokens solo se puede usar con fragmentación local. La bandera es sin funcionar en casos de uso de fragmentación no local. A veces, uno de los dispositivos involucrados en la fragmentación tiene recursos especiales que otros no, como una SIM tarjeta. Es posible que algunas pruebas solo funcionen cuando ese recurso especial esté disponible de lo contrario.
La solución a estos casos de uso es la fragmentación de tokens. Los módulos de prueba pueden hacer lo siguiente:
declarar qué recurso especial necesita en su AndroidTest.xml
Tradefed enruta las pruebas a un dispositivo que tiene el recurso.
Configuración de XML
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
El value
del token coincide con el de Tradefed
TokenProperty
y está asociado con un controlador en
TokenProviderHelper
Esto permite ejecutar módulos de prueba contra dispositivos que puedan ejecutar las pruebas.
¿Qué sucede si ningún dispositivo puede ejecutar la prueba?
Si no hay dispositivos disponibles, el recurso coincide con el módulo de prueba. el módulo de prueba falló y se omitió porque no puede ejecutarse correctamente.
Por ejemplo, si un módulo de prueba solicita que se ejecute una tarjeta SIM, pero ningún dispositivo tiene una SIM, el módulo de prueba falla.
Implementación
Pasa esta marca de función a la línea de comandos principal de Tradefed:
--enable-token-sharding