Em nosso grupo de produtos, visamos a cobertura de código de 50 a 70% dos testes de unidade e mais de 90% de cobertura dos testes de unidade e automação de testes combinados. O tempo típico orçado para escrever testes de unidade é de cerca de 1 dia para cada recurso que requer 3-4 dias de codificação. Mas isso pode variar com muitos fatores.
99% de cobertura de código é excelente. Os testes de unidade são ótimos. Mas 99% de cobertura de código apenas de testes de unidade? Acho difícil acreditar que você possa obter tanta cobertura apenas dos testes de unidade .
Para o caso em que você passou 3 dias escrevendo testes para uma classe que demorava 1 dia para implementar. Você não explicou por que demorou tanto tempo nem compartilhou nenhum código. Pela especulação, acho que você não estava realmente escrevendo um teste de unidade real para a sua turma, mas realmente escrevendo a automação de teste . E, na verdade, não há nada errado com isso - desde que você reconheça a diferença entre os dois tipos diferentes de testes.
Mas você disse que os três dias de escrita de teste eram apenas para uma única aula. Talvez a própria classe não tenha sido projetada para testes de unidade. A classe implementa interface do usuário? Networking? Arquivo E / S? Nesse caso, você pode ter acabado escrevendo mais código para testar o tempo de execução Java do que sua lógica de negócios que interage com o tempo de execução.
O TDD faz você pensar em termos de interfaces e interfaces para dependências. Essa classe única que implementa interface do usuário, rede e arquivo / io para um único recurso pode ser melhor servida dividida em várias classes - uma para rede, outra para arquivo / io e a interface do usuário dividida em um design de visualizador-controlador-modelo. Em seguida, você pode implementar testes apropriados para cada um com objetos simulados simples para as dependências. Claro, tudo isso leva mais tempo. Portanto, em vez de 1 dia para codificar e 3 dias para escrever testes, esse tipo de design pode exigir 3 dias de codificação e 1 dia de testes de gravação. Mas o código será muito melhor de manter e reutilizar.