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?