Estou trabalhando em um sistema legado (com isso quero dizer que foi escrito sem testes). Tentamos testar parte do sistema escrevendo testes de integração que testam a funcionalidade de fora.
Isso me dá certa confiança para refatorar partes do código sem se preocupar em quebrá-lo. Mas o problema é que esses testes de integração exigem uma implantação (mais de 2 minutos) e muitos minutos para serem executados. Além disso, eles são uma dor de manter. Cada um deles cobre milhares de linhas de código e, quando um deles quebra, pode levar horas para depurar o motivo.
Tenho escrito muitos testes de unidade para essas alterações funcionais que venho fazendo ultimamente, mas antes de me comprometer, sempre faço uma nova implantação e executo todos os testes de integração, apenas para garantir que não perdi nada. Neste ponto, eu sei que meus testes de unidade e alguns dos testes de integração estão sobrepostos ao que eles testam.
Como sei quando meus bons testes de unidade estão cobrindo adequadamente um mau teste de integração para que eu possa excluir esse teste de integração?
fonte
Os testes de unidades não são o santo graal dos testes, eles são apenas uma ferramenta de muitos que devem ser usados para testar uma base de código. Portanto, nenhuma quantidade de testes de unidade deve ser considerada segura para substituir outros testes. Se você tiver um teste de integração ruim, deve trabalhar para torná-lo um bom teste de integração, não substituí-lo por outra coisa, como substituir a porta da frente por uma cerca de perímetro e um portão.
fonte