Skip to content
Latchkey

O que é teste de regressão?

O teste de regressão reexecuta testes existentes após uma mudança para confirmar que recursos que funcionavam anteriormente não foram quebrados.

Uma regressão ocorre quando uma mudança quebra algo que costumava funcionar. O teste de regressão protege contra isso mantendo um conjunto de testes que capturam o comportamento conhecido como correto e executando-os sempre que o código muda. É menos um tipo de teste e mais um propósito: proteger o passado enquanto o presente evolui.

O que é uma regressão

Uma regressão ocorre quando um novo trabalho, um recurso, uma correção, uma refatoração, quebra inadvertidamente o comportamento existente. As regressões são insidiosas porque o desenvolvedor está focado na nova mudança e pode não pensar em reverificar a antiga. Os testes automatizados fazem essa lembrança por ele.

A suíte de regressão

Com o tempo, cada correção de bug e recurso pode deixar para trás um teste que trava o comportamento correto. Coletivamente, esses formam a suíte de regressão. Um bom hábito é adicionar um teste de regressão para cada bug que você corrige, de modo que o mesmo bug nunca possa retornar silenciosamente.

Um exemplo rápido

Depois de corrigir um bug de arredondamento, você adiciona um teste para o caso exato que estava quebrado, de modo que qualquer mudança futura que o reintroduza falhe imediatamente.

A regression test for a fixed bug
test("rounds 2.005 correctly (was a bug)", () => {
  expect(round(2.005, 2)).toBe(2.01);
});

Mantendo a suíte saudável

  • Adicione um teste de regressão para cada bug que você corrige.
  • Remova ou atualize testes que não refletem mais o comportamento pretendido.
  • Mantenha a suíte rápida para que possa rodar a cada mudança.
  • Trate testes de regressão instáveis como bugs, não como ruído de fundo.

Teste de regressão e CI

O CI existe em grande parte para executar testes de regressão automaticamente a cada push, de modo que uma quebra seja detectada em minutos. À medida que a suíte cresce, paralelizá-la em runners rápidos mantém a passagem completa de regressão veloz, e reexecutar automaticamente falhas transitórias mantém o sinal confiável. Essa velocidade e confiabilidade é exatamente o que os runners da Latchkey buscam oferecer.

Principais conclusões

  • O teste de regressão confirma que recursos antigos continuam funcionando após uma mudança.
  • Adicione um teste de regressão para cada bug para que ele nunca possa retornar silenciosamente.
  • O CI executa a suíte de regressão automaticamente a cada mudança.

Guias relacionados