O Que É Flakiness de CI? Explicação
Flakiness de CI é a propriedade geral de um pipeline produzir resultados não confiáveis e não reproduzíveis: builds vermelhos que na verdade não são sobre seu código.
Flakiness é mais amplo do que qualquer teste flaky isolado. É a falta de confiabilidade agregada da sua CI: com que frequência um build falha por razões que um retry resolveria ou que não têm nada a ver com a mudança em teste. Alta flakiness destrói silenciosamente o valor da CI como sinal.
Flakiness vs um teste flaky
Um teste flaky é um teste não confiável. A flakiness de CI é a taxa, no nível do sistema, de resultados não confiáveis, que inclui testes flaky mas também falhas transitórias de infraestrutura, falhas mecânicas como out-of-memory kills e ruído ambiental. É o total de tudo que torna um build vermelho indigno de confiança.
O que a impulsiona
- Testes flaky e não determinísticos (tempo, estado compartilhado, aleatoriedade).
- Infraestrutura transitória: instabilidades de rede, timeouts de registry, rate limits.
- Falhas mecânicas: out-of-memory kills, esgotamento de disco, preempções.
- Timeouts apertados demais e runners subdimensionados.
Por que ela é tão custosa
A flakiness impõe uma taxa sobre toda mudança: investigações que não encontram nada, retries manuais e merges mais lentos. Pior: ela corrói a confiança, então os times começam a ignorar o vermelho, e uma regressão genuína acaba indo para produção porque ninguém acreditou na falha.
Medindo e reduzindo-a
Você não pode gerenciar o que não mede. Acompanhe uma taxa de teste flaky ou de falha de pipeline, separe falhas transitórias das determinísticas e ataque primeiro os maiores contribuintes: torne os testes determinísticos, dimensione corretamente os runners e faça retry automático das falhas transitórias genuínas.
A perspectiva da Latchkey
Uma grande parcela da flakiness de CI é ambiental e não bugs de teste. Os managed runners com autocorreção da Latchkey detectam falhas transitórias e mecânicas como instabilidades de rede, timeouts de registry e out-of-memory kills e automaticamente fazem retry, de modo que uma instabilidade isolada não faça seu build falhar, cortando diretamente o componente ambiental da flakiness.
Principais conclusões
- Flakiness de CI é a taxa, em todo o sistema, de resultados não confiáveis e não reproduzíveis.
- Ela inclui testes flaky mais falhas transitórias e mecânicas.
- Ela taxa toda mudança e corrói a confiança na CI como sinal.
- Meça-a e depois ataque testes e infraestrutura separadamente.