Skip to content
Latchkey

O que é um regression test?

Um regression test verifica que uma funcionalidade que costumava funcionar ainda funciona após uma mudança, detectando bugs que fazem o comportamento antes correto "regredir".

Código novo pode quebrar silenciosamente features antigas, uma regressão. Regression tests são o conjunto acumulado de verificações que protegem contra exatamente isso, garantindo que a mudança de hoje não desfaça o comportamento funcional de ontem.

O que é

Um regression test confirma que o comportamento existente e esperado ainda está correto após o código mudar. Com o tempo um projeto acumula uma grande suíte desses, frequentemente incluindo um teste específico adicionado para cada bug já corrigido, de modo que o mesmo bug não possa voltar silenciosamente.

Como os regression tests crescem

Uma prática comum é: quando você corrige um bug, primeiro escreve um teste que o reproduz. Esse teste falha antes da correção e passa depois. Ele então permanece na suíte para sempre como um regression test, então se alguém reintroduzir o bug, ele é detectado imediatamente.

Um exemplo

Um bug de cálculo de desconto é corrigido. Antes de corrigi-lo, o desenvolvedor adiciona um teste que verifica o total com desconto correto. Meses depois, um refactor não relacionado acidentalmente reintroduz o cálculo errado, mas o regression test falha no CI, detectando-o antes do release.

Como se encaixam no CI

Regression tests tipicamente rodam como parte da suíte automatizada a cada mudança, de modo que qualquer bug reintroduzido é detectado minutos após o commit ofensor. Como a suíte pode crescer bastante, os times frequentemente a paralelizam entre runners para manter o feedback rápido.

Por que geram confiança

Uma boa suíte de regression é o que permite a um time mudar código sem medo. Você pode refatorar agressivamente, sabendo que se quebrar algo que costumava funcionar, um teste vai avisar. Essa rede de segurança é o que torna possíveis releases frequentes e confiantes, o objetivo do CI/CD.

Principais conclusões

  • Regression tests garantem que o comportamento antes funcional ainda funciona.
  • Adicionar um teste para cada bug corrigido impede que ele retorne.
  • Uma suíte de regression forte permite que times mudem código com confiança.

Guias relacionados