Skip to content
Latchkey

Como Colocar Testes Instáveis em Quarentena Sem Esconder Bugs Reais

Quarentena é a disciplina de tirar um teste sabidamente instável do caminho que bloqueia merges sem excluí-lo - de modo que o build permaneça confiável enquanto você mantém o teste na lista para corrigir.

Quando um teste é comprovadamente instável, você tem três opções ruins (ignorá-lo, excluí-lo ou deixá-lo bloquear merges) e uma boa: quarentena. Feita corretamente, ela remove o ruído sem perder a coverage.

Por que quarentena em vez de excluir ou repetir para sempre

Excluir um teste instável perde a coverage que ele fornece quando não está falhando. Repetir indiscriminadamente esconde regressões genuínas. Deixá-lo bloquear merges treina a equipe a ignorar builds vermelhos. A quarentena encontra o meio-termo: o teste ainda roda e reporta, mas seu resultado já não serve de gate para o merge.

Como colocar em quarentena

  • Marque o teste (por exemplo, um marcador quarantine/flaky) para que o runner o separe.
  • Rode os testes em quarentena numa faixa não bloqueante que reporta mas não derruba o build.
  • Abra um ticket de rastreamento vinculado ao teste no momento em que o colocar em quarentena.
  • Mantenha o teste executando para que você colete dados de com que frequência ele ainda fica instável.

Mantenha a honestidade

A quarentena deve ser temporária e visível, ou se torna um cemitério de coverage morta. Limite quanto tempo um teste pode ficar em quarentena, exponha a lista de quarentena num dashboard e exija uma decisão de corrigir-ou-excluir quando o prazo expirar. O princípio da gestão de instabilidade vale: contenha o ruído, nunca silencie o sinal.

Promovendo de volta ou removendo

Quando o não determinismo raiz é corrigido, devolva o teste à suíte bloqueante e confirme que ele é estável ao longo de muitas execuções. Se ele não puder se tornar determinístico e não testar nada único, exclua-o deliberadamente - uma remoção honesta é melhor que um fantasma permanentemente em quarentena.

Principais conclusões

  • A quarentena move um teste sabidamente instável para fora do caminho bloqueante, mas o mantém rodando.
  • Ela preserva a coverage sem deixar o ruído servir de gate para merges nem esconder regressões.
  • Sempre acompanhe a quarentena com um ticket de rastreamento e um prazo limite.
  • Promova de volta quando corrigido, ou exclua deliberadamente - nunca deixe um fantasma permanente.

Guias relacionados