Faço parte de uma equipe de desenvolvedores que trabalha com muitas outras equipes para manter e aprimorar um aplicativo em uso há pelo menos 15 anos. Quando foi construído e projetado, o TDD era inédito.
O aplicativo é razoavelmente estável e raramente encontramos um erro de interrupção do programa, mas fazemos a média de um ou dois erros por semana que reduzem seriamente a qualidade do serviço. Esses bugs levam uma eternidade para serem encontrados e corrigidos, principalmente por causa do apontamento do dedo, e o único teste que temos é o teste de interface. Como há muito tempo perdido procurando onde o bug está antes que ele possa ser corrigido, eu e outro desenvolvedor planejamos propor o Desenvolvimento Orientado a Testes. Em breve, haverá uma nova revisão, e gostaríamos de ver testes de unidade quase completos realizados nos novos módulos. Também planejamos sugerir a criação de unidades de teste para qualquer código que precisarmos alterar que seja legado (ou seja, correção de erros ou implementação de recursos ), mas não para gastar tempo desenvolvendo casos de teste para código que não causou problemas.
Para mim, isso parece razoável. Este mês, tivemos um bug que levou mais de duas semanas para corrigir, mas poderia ter sido identificado antes da implantação se o teste de unidade tivesse sido feito. Mas, para nossos gerentes, parece que eles vão gastar mais dinheiro.
Como convencer nossos clientes de que desejam gastar o dinheiro em testes de unidade e desenvolvimento orientado a testes? Existem estudos que mostram o ROI dos testes de unidade?