Reintento de prueba automático

Una prueba puede fallar por cualquier motivo y, a veces, simplemente volver a ejecutar la prueba lo suficiente para que se apruebe nuevamente (debido a su fragilidad, como por ejemplo, debido a problemas en la infraestructura subyacente). Puedes configurar Tradefed para que realice el reintento automáticamente.

El objetivo principal de los reintentos automáticos es evitar que se vuelvan a ejecutar todas las pruebas. se vuelve a ejecutar solo las pruebas fallidas, lo que supone un gran ahorro en el tiempo de ejecución.

Tradefed también permite ejecutar pruebas varias veces para detectar fragilidad a través de la función de iteraciones. En este caso, todas las pruebas se volver a ejecutarlo y la prueba fallará si falla alguna de las iteraciones.

Habilitar reintento automático

El reintento automático se controla mediante el Objeto RetryDecision que brinda dos opciones para habilitar la función: max-testcase-run-count y retry-strategy.

max-testcase-run-count controla la cantidad de iteraciones o reintentos que se puede realizar cada una de estas tareas. Establece un límite superior para evitar que se vuelvan a intentar de forma permanente. retry-strategy impulsa la decisión de cómo reintentar. consulta las siguientes secciones para obtener más información.

Inhabilitar el reintento automático

Usa la siguiente opción:

--retry-strategy NO_RETRY

Errores de reintento

Para reintentar las pruebas fallidas, usa las siguientes opciones:

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

Esto volverá a intentar la falla hasta que finalice o hasta que se alcance la cantidad máxima de reintentos. se alcanza, lo que ocurra primero.

Iteraciones

Para volver a ejecutar pruebas durante varias veces, se pueden usar las siguientes opciones:

--retry-strategy ITERATIONS --max-testcase-run-count X

¿Cómo son los resultados?

De forma predeterminada, los generadores de informes de resultados recibirán los resultados agregados de todos los intentos.

Por ejemplo, Fail y Pass para RETRY_ANY_FAILURE darán como resultado un Se agregaron Pass, ya que el reintento logró borrar la falla.

Es posible que los generadores de informes reciban los resultados no agregados. Para ello, sigue estos pasos: necesita extender el Interfaz de ISupportGranularResults que declare la compatibilidad con los resultados detallados (no agregados).

Detalles de implementación

Para habilitar los reintentos automáticos para volver a ejecutar fallas a nivel del caso de prueba, implementa ITestFilterReceiver.

Si no puedes implementar ITestFilterReceiver, puedes implementar IAutoRetriableTest para controlar manualmente el funcionamiento de la nueva ejecución. InstallInstrumentationsTest. es un ejemplo de implementación de esa interfaz.