Sobes.tech
Junior — Middle

Como pode reexecutar um teste instável para eliminar falhas falsas?

sobes.tech IA

Resposta da IA

Para relançar um teste instável (teste de flake) costuma-se usar o mecanismo de retries. Isto pode ser implementado ao nível do framework de testes ou CI/CD:

  • No JUnit, usando regras ou anotações, por exemplo, @Retry.
  • No TestNG, há suporte integrado para reexecuções através de IRetryAnalyzer.
  • No CI/CD, pode-se configurar a reexecução de testes que falharam.

Exemplo no TestNG:

public class RetryAnalyzer implements IRetryAnalyzer {
    private int count = 0;
    private static final int maxRetry = 3;

    @Override
    public boolean retry(ITestResult result) {
        if (count < maxRetry) {
            count++;
            return true;
        }
        return false;
    }
}

@Test(retryAnalyzer = RetryAnalyzer.class)
public void unstableTest() {
    // teste que pode falhar às vezes
}

Essa abordagem ajuda a diminuir o impacto de falhas falsas, mas é importante buscar e eliminar as causas de instabilidade em paralelo.