Cobertura de testes 100% não indica software perfeito
Existem ferramentas que mostram a cobertura do código conseguida pelos testes automatizados (por exemplo, uma de Java é o Cobertura, que pode ser integrado com Ant e Maven inclusive). Quanto mais código testado melhor e a ferramenta de cobertura vai mostrar as linhas de código por onde os testes estão passando. Olhando os resultados você poderia ver que algum else não está sendo executado nos testes e escrever um teste que passe nesse else.
Mas se por um acaso alguém conseguisse uma cobertura de 100% de testes, o que é difícil (Exceptions de diversos tipos que são difíceis de testar) e não prático (setters e getters simples não precisam ser testados, não tem muito o que dar errado), não teria um software perfeito.
E por que isso? A cobertura pode dar 100%, só que quando tem alguma coisa faltando também é um erro. Posso ter esquecido de escrever algum if no código. Código que não existe não aparece na cobertura.
Outra coisa, os erros podem ocorrer com cada combinação de decisões que o software toma. Um teste pode entrar num if, outro teste pode entrar em outro, mas um bug pode acontecer justamente quando se entra nos dois.
Além dessas razões, só passar pelo código é apenas uma parte do teste. A outra são os assertions, os trechos de códigos exercitados devem ter uma confirmação do teste que o retorno do resultado é correto.
Então, a lição que fica é, não tente uma cobertura de 100% porque vai ser muito difícil e também porque isso não vai indicar um software perfeito. Use a cobertura de testes para encontrar trechos chaves do código que deveriam ser testados, mas não estão sendo.
No Comments Yet
Seja o primeiro a comentar!