A flaky test is an analysis of web application code that fails to produce the same result every time the same analysis is run. Sempre que um novo código é escrito para desenvolver ou atualizar um software de computador, uma página web ou uma aplicação, ele precisa ser testado durante todo o processo de desenvolvimento para garantir que a aplicação faça o que deve fazer quando for lançada para uso. Logicamente, quando submetido ao mesmo teste repetidamente, o código produzirá o mesmo resultado -- a aplicação ou funcionará corretamente todas as vezes, passando assim pelo teste, ou falhará em funcionar corretamente todas as vezes, falhando assim no teste.
No entanto, aparentemente ao acaso, ocasionalmente o mesmo teste do mesmo código produzirá resultados em different. Algumas vezes ele mostrará que o código passou no teste e a aplicação funcionou como planejado, e algumas vezes mostrará que o código falhou no teste e não funcionou como planejado. Quando o teste falha em produzir um resultado consistente, o teste é considerado flaky.
Testes de falhas podem ser causados por vários fatores:
- um problema com o código recém-escrito
- um problema com o próprio teste
- algum fator externo que compromete o resultado do teste
Após um teste ser considerado flaky, há different abordagens para lidar com os resultados confusos. Alguns desenvolvedores irão ignorar completamente o flakiness, assumindo que o problema é com o teste e não com o código recém-escrito. Outros irão reexecutar o teste várias vezes e só voltarão para investigar mais se o teste falhar um certo número de vezes seguidas, indicando-lhes uma verdadeira falha.
No entanto, a abordagem mais segura -- a única maneira de realmente find saber se há um bug no código -- é parar o desenvolvimento da aplicação, investigar completamente a causa do teste flaky e resolvê-lo. Se não for resolvido e houver realmente um problema com o código, um problema tem o potencial de acabar levando a outro e outro à medida que mais é construído sobre o código defeituoso.
Ao investigar a causa de um teste flaky, o desenvolvedor precisará reunir dados para tentar descobrir differences dentro dos resultados aparentemente aleatórios, a fim de isolar a causa dos testes fracassados. O código deve ser reexaminado, assim como o próprio teste, e se não forem encontrados problemas, então fatores externos precisarão ser analisados para ver se eles podem estar no centro do problema. O desenvolvedor poderá verificar se os testes que passaram foram executados em uma determinada hora do dia enquanto os que falharam foram executados em uma hora do dia different, se certos programas estavam rodando no computador do desenvolvedor na mesma hora de testes que não estavam rodando quando os testes passaram ou se os testes que falharam o fizeram no mesmo ponto do teste ou em different vezes durante o teste.
Por vezes, a causa do teste flaky é simples de diagnosticar e pode ser rapidamente fixed. Esse é o melhor cenário possível. Outras vezes, não é fácil fix, e embora potencialmente caro e demorado, o desenvolvedor pode precisar excluir o teste e reescrevê-lo do zero para garantir a precisão dos resultados do teste.
Felizmente, os testes flaky não são incomuns -- o Google, por exemplo, informa que 16% de seus testes mostram algum nível de flakiness. Eles podem paralisar temporariamente a produção, mas podem ser tratados, e podem ser resolvidos.