Reintento automático de prueba

Una prueba puede fallar por cualquier motivo y, a veces, simplemente volver a ejecutar la prueba es suficiente para que pase nuevamente (debido a fallas, como por problemas en la infraestructura subyacente). Puede configurar Tradefed para realizar el reintento automáticamente.

El núcleo del reintento automático es evitar volver a ejecutar todas las pruebas; vuelve a ejecutar solo las pruebas fallidas, lo que genera grandes ahorros en el tiempo de ejecución.

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

Habilitación de la característica

El reintento automático se controla a través del objeto RetryDecision que proporciona dos opciones para habilitar la característica: max-testcase-run-count y retry-strategy .

max-testcase-run-count el número de reintentos o iteraciones que se intentarán. Establece un límite superior para evitar volver a intentarlo para siempre. retry-strategy impulsa la decisión de cómo reintentar; consulte las siguientes secciones para obtener más detalles.

Deshabilitar

Utilice la siguiente opción:

--retry-strategy NO_RETRY

Errores al reintentar

Para volver a intentar fallas en la prueba, use las siguientes opciones:

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

Esto volverá a intentar la falla hasta que pase o hasta que se alcance el número máximo de reintentos, lo que ocurra primero.

iteraciones

Para volver a ejecutar las pruebas durante cierto tiempo, se pueden utilizar las siguientes opciones:

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

¿Cómo se ven los resultados?

Los reporteros de resultados por defecto recibirán los resultados agregados de todos los intentos.

Por ejemplo: un Fail y un Pass para RETRY_ANY_FAILURE resultarán en un Pass agregado ya que el reintento logró borrar el fallo.

Es posible que los reporteros reciban los resultados no agregados. Para hacerlo, deben ampliar la interfaz ISupportGranularResults que declara la compatibilidad con los resultados granulares (no agregados).

Detalles de implementacion

Para habilitar el reintento automático para volver a ejecutar errores en el nivel de caso de prueba, implemente ITestFilterReceiver .

Si no puede implementar ITestFilterReceiver, puede implementar IAutoRetriableTest para controlar manualmente cómo funciona la repetición. InstalledInstrumentationsTest es un ejemplo de implementación de esa interfaz.