Suponha que um deles tenha um programa relativamente grande (digamos, 900k SLOC em C #), todos comentados / documentados minuciosamente, bem organizados e funcionando bem. Toda a base de código foi escrita por um único desenvolvedor sênior que não está mais na empresa. Todo o código é testável como está e a IoC é usada o tempo todo - exceto por algum motivo estranho, eles não escreveram nenhum teste de unidade. Agora, sua empresa deseja ramificar o código e deseja que testes de unidade sejam adicionados para detectar quando as alterações quebram a funcionalidade principal.
- A adição de testes é uma boa ideia?
- Se sim, como alguém começaria algo assim?
EDITAR
OK, então eu não esperava respostas apresentando bons argumentos para conclusões opostas. O problema pode estar fora do meu controle. Também li as "perguntas duplicadas" e o consenso geral é que "escrever testes é bom" ... sim, mas não é muito útil nesse caso em particular.
Acho que não estou sozinho aqui pensando em escrever testes para um sistema legado. Vou manter métricas sobre quanto tempo é gasto e quantas vezes os novos testes detectam problemas (e quantas vezes não). Voltarei e atualizarei isso daqui a um ano ou mais com meus resultados.
CONCLUSÃO
Portanto, é basicamente impossível simplesmente adicionar teste de unidade ao código existente com qualquer aparência de ortodoxia. Uma vez que o código está funcionando, você obviamente não pode colocar luz vermelha / luz verde em seus testes, geralmente não está claro quais comportamentos são importantes para testar, não está claro por onde começar e, certamente, não está claro quando você termina. Realmente, mesmo fazer essa pergunta perde o ponto principal de escrever testes em primeiro lugar. Na maioria dos casos, achei mais fácil reescrever o código usando TDD do que decifrar as funções pretendidas e adicionar retroativamente os testes de unidade. Ao corrigir um problema ou adicionar um novo recurso, é uma história diferente, e acredito que este é o momento de adicionar testes de unidade (como alguns apontaram abaixo). Eventualmente, a maioria dos códigos é reescrita, geralmente mais cedo do que você esperaria.