Teste de regressão
É tudo sobre testes de regressão .
Imagine o próximo desenvolvedor observando seu método e notando que você está usando números mágicos. Foi-lhe dito que os números mágicos são maus, então ele cria duas constantes, uma para o número dois, a outra para o número três - não há nada errado em fazer essa mudança; não é como se ele estivesse modificando sua implementação já correta.
Distraído, ele inverte duas constantes.
Ele confirma o código e tudo parece funcionar bem, porque não há testes de regressão em execução após cada confirmação.
Um dia (pode ser semanas depois), algo quebra em outro lugar. E em outro lugar, quero dizer, no local completamente oposto da base de código, que parece não ter nada a ver com polynominal
função. Horas de depuração dolorosa levam ao culpado. Durante esse período, o aplicativo continua com falha na produção, causando muitos problemas aos seus clientes.
Manter os testes originais que você escreveu pode impedir essa dor. O desenvolvedor distraído confirmaria o código e quase imediatamente veria que ele quebrou alguma coisa; esse código nem chegará à produção. Os testes de unidade também serão muito precisos sobre a localização do erro . Resolver isso não seria difícil.
Um efeito colateral ...
Na verdade, a maioria das refatorações é fortemente baseada em testes de regressão. Faça uma pequena alteração. Teste. Se passar, está tudo bem.
O efeito colateral é que, se você não tiver testes, praticamente qualquer refatoração se torna um risco enorme de quebrar o código. Como são muitos os casos, já é difícil explicar ao gerenciamento que a refatoração deve ser feita; seria ainda mais difícil após as tentativas anteriores de refatoração introduzirem vários bugs.
Por ter um conjunto completo de testes, você incentiva a refatoração e, portanto, melhor, um código mais limpo. Sem risco, torna-se muito tentador refatorar mais, regularmente.
Mudanças nos requisitos
Outro aspecto essencial é que os requisitos mudam. Você pode ser solicitado a lidar com números complexos e, de repente, é necessário pesquisar no log de controle de versão para encontrar os testes anteriores, restaurá-los e começar a adicionar novos testes.
Por que todo esse aborrecimento? Por que remover testes para adicioná-los mais tarde? Você poderia tê-los mantido em primeiro lugar.