Opnião sobre testes unitários!

Bom dia pessoal,

Gostaria de saber a opnião de vc’s sobre até que ponto compensa em um projeto utilizar teste unitários, seja com JUnit, ou com outro framework qualquer. É que estou desenvolvendo uma aplicação de médio porte, e pelo que eu andei lendo sobre o assunto, me pareceu trabalhoso e pouco produtivo ter que escrever todos aqueles testes. Um roteiro de testes funcionais neste caso não seria mais compensativo?

Abraço,

Rodrigo.

Pense no seguinte cenário:

Vc tem uma aplicação com X classes e vc implementou Y testes unitários.

Cada teste unitário diz respeito ao comportamento que vc espera de cada classe.

Vc executa essa suite, digamos com o JUnit, e executa junto o EMMA para ver a cobertura dos testes. Ai vc descobre que cerca de 23% do seu código foi coberto por estes testes.

E os outros 77% ? Vc não acha que é contra produtivo ter 77% do código sem qualquer tipo de cobertura? Vc não acha que é potencialmente perigoso? Que garantia vc tem q esse código FAZ o que se espera dele?

Agora pense que, por acaso vc gastou um tempão absurdo para deixar o seu codigo 90% coberto por testes. Ai vc precisa, uns 2 meses depois, adicionar novas classes. Vc adiciona e roda os testes – PIMBA, descobre que varios testes agora estão falhando pois vc alterou algumas coisinhas sem querer… não é melhor descobrir isso durante o processo de build, por exemplo, do que durante um custoso e demorado ciclo de testes ?

Tem quem não goste por diversos motivos: entre eles por preguiça ou pq não entendeu os testes unitários mas… o importante é vc pensar pela perspectiva de garantir o comportamento de uma classe que foi desenvolvida.

Sera q é tão ruim vc garantir o comportamento de algo que vc fez? Bom… tem gente q nem javadoc usa… :wink:

Ok, antes o foco era: fiz uma classe e SEI/GARANTO q ela faz X.

Agora vc quer saber se tudo isso junto/reunido faz o que o programa deveria fazer. Ao meu ver uma coisa não exclui a outra mas… de novo vc deve pensar em termos de responsabilidade: compensa vc rodar os testes funcionar tantas e tantas vezes?

Vc fala roteiro, acredito que são testes manuais: vc vai ter q pagar X horas de um ou mais testadores para executar isso, enquanto uma suite de testes unitários uma vez q forem feitos basta um botão para executar. Não sei como seria compensativo vc usar um tipo de teste cuja execução é mais cara :wink:

Trabalhoso e pouco produtivo também é ter que ficar caçando no código tudo que potencialmente pode quebrar após cada mudança que você faz no código. Pense nisso.

realmente, todos estes aspectos devem ser levados em consideração. Lembrando aqui de Roger Pressman do famoso livro de Engenharia de Software, tem um capítulo que ele mostra um gráfico onde a curva da manutenção é realmente preocupante e extremamente cara. Como já dizia minha vó "A economia é a base da porcaria."rsrs…
O tempo que vou ganhar agora, posso perder depois. Vou me interar melhor sobre os testes unitários e trocar uma idéia com o gerente do projeto.

Valew pessoal.

Rodrigo.

e que tal vc começar testando??? http://en.wikipedia.org/wiki/Test-driven_development

Eu digo que testar uma aplicação nunca seria demais.

Mas tenho as minhas considerações sobre testes unitários, na minha empresa nós temos projetistas de testes para os testes Unitários, Integrados e homologações.

O seguinte temos testes que são inuteis do tipo aperte enter tres vezes, sendo que as nossas aplicações são totalmente web. Mas resolvemos vários problemas principalmente formatação de dados, desenho de telas.

Por isso eu digo vale a pena testar, pois um dos erros mais chatos de serem pegos em homologação são as formatações de dados, que dependendo do sistema e do usuário quando são pegos nessa fase do projeto custam muito $$$(tempo) pra se resolver e paciência pois o usuário vai explodir de tanto enviar e-mails pra sua gerência.

Teste pra não ter problemas.

Nunca usei TDD, eu acho que seria legal para educar a equipe a escrever. Mas no dia-a-dia prefiro seguir o fluxo “normal”.

[quote=rdantas] Bom dia pessoal,

Gostaria de saber a opnião de vc’s sobre até que ponto compensa em um projeto utilizar teste unitários, seja com JUnit, ou com outro framework qualquer. É que estou desenvolvendo uma aplicação de médio porte, e pelo que eu andei lendo sobre o assunto, me pareceu trabalhoso e pouco produtivo ter que escrever todos aqueles testes. Um roteiro de testes funcionais neste caso não seria mais compensativo?

Abraço,

Rodrigo.[/quote]

Cara, nao venha num forum de “macacos” perguntar o que eles acham de “bananas”.
PS: sou a favor de testes unitários.