Testes unitários, alguem implementa?

Galera, as coisas estão andando tão bem aqui c/ Yii que o sistema está crescendo, e, antes que as coisas saiam do controle, to pensando em implementar testes unitários.

Eu sei que já devia ter implementado, mas tenho pouco conhecimento nesta área.

Alguem já implementou em seus sistemas?

Eu não costumo aplicar. Quando eu usava o Prado, cheguei a iniciar um "Unit Tests". No Yii abandonei de vez… mas pode ser que em algum dia da vida eu implemente em uma aplicação.

Aqui eu e o jjmf fazemos vários testes de inclusão, exclusão e atualização, checamos mensagens na tela, verificamos durante os testes, se poderíamos mudar alguma coisa na tabela e no código.

Pensamos o que poderia dar errado se outra pessoa da "Produção" usasse uma certa tarefa do sistema.

Já pegamos vários erros com isso, é sempre bom voltar e executar determinadas tarefas para checagem. Sempre há uma melhoria até finalizar tudo.

Documentar o código quando está "Tinindo" é fundamental.

Tem uns links aqui, talvez ajude.

link 1

link 2

link 3

Eu também não utilizo testes aqui, infelizmente. O motivo disso está explicado no meu último post =D No meu caso os testes unitários seriam só mais uma dificuldade, em vez de facilidade.

Mas eu realmente sinto falta deles. É frustrante gastar tempo desenvolvendo e depois gastar mais tempo corrigindo erros que claramente poderiam ser prevenidos com os testes.

Uma sacada muito legal dos testes é te forçar a criar código testável, ou seja, código bem estruturado e seguindo boas práticas.

Lembre-se sempre que os testes devem ser implementados sempre ANTES do sistema. Assim, utilizam-se os testes, também, para a definição do comportamento do sistema. Isso é bastante útil para esclarecer as idéias sobre como o sistema deve ou não funcionar, e deixar mais claro as responsabilidades das classes e métodos. Claro, é possível criar os testes depois, mas isso só deixa o trabalho mais difícil.

Dá uma olhada na documentação da versão 1.1 do framework. Ela já possui suporte integrado a testes unitários. Infelizmente eu ainda não tive tempo de traduzir essa parte do guide =/

Hehehehe, eu sempre tento fazer isso, mas o usuário sempre se supera. Simplesmente é impossível imaginar tudo o que um usuário vai querer fazer. Ele sempre faz algo que ninguém nunca pensou.

Os testes unitários estão ai pra isso. Para garantir que o sistema faça somente o que foi programado para fazer. Infelizmente eles também não pegam tudo =D

Na verdade deve-se documentar o código antes mesmo de se faze-lo. A boa prática é descrever o que algo deve fazer, antes de implementar a funcionalidade. Assim você deixa bem definida a funcionalidade e evita ter métodos e classes com mais de uma responsabilidade.

Estes testes eu tb faço.

Só acho que testes unitários tem outras vantágens além de checar se o sistema está funcionando em sí.

Mas estes links que vc me mandou já me deram uma boa luz. Parece que vai ter agregado ao Yii um framework de testes. Não to muito interado sobre ele mas hoje mesmo vou baixar a v 1.1 e dar uma checada. Talvez valha a pena esperar um pouco mais. Yii ta ficando cada vez melhor :)

Não tinha visto a sua msg antes de enviar a minha, deixei aberto aqui um bom tempo :(

Mas, como já tinha dito no outro post, to olhando já o 1.1.

Eu sei que o melhor é nunca deixar os testes pra mais tarde. O problema é que o sistema ta passando de um simples cadastro de clientes a um sistema bem maior.

Era pra ser extremamente simples, e no momento em que eu iniciei eu pensei: "Poxa, fazer testes unitários neste sistema seria matar uma formiga com uma bala de canhão".

Hoje eu já tenho muita coisa a mais, e a tendência é crescer mais ainda. Então, não quero deixar isso pra mais tarde, pq, quanto mais tempo passar, mais difícil será.

Não tenho experiência c/ testes unitários e PHP, mas já fiz algumas coisas em outras linguágens. Não acho que em PHP terá um grau de dificuldade absurdamente diferênte.

Tava pensando no PHPUnit. Já tinha baixado e feito algumas coisas. Mas, por falta de conhecimento no FW, achei melhor perguntar aqui se alguem já tinha feito. E foi bom saber que a v. 1.1 vai vir c/ suporte a testes. Talvez valha mais a pena esperar que saia a v1.1 ou mesmo ir desenvolvendo com a versão de testes. Mas, provavelmente, as ferramentas do fw terão facilidades pra trabalhar com ele mesmo .

:) sim concordo plenamente… mas nós mortais como sempre, desenvolvemos “algoritmos” na “hora” que só depois mesmo pra documentar, caso esteje tudo executando bem.

:lol: pow, quando o usuário acha uma falha, cria-se uma interrogação em cima da cabeça: mas como? hehehe é assim mesmo na programação… rs volta para o forno que o bolo ainda não está assado. :P

Então, mesmo no Yii você vai precisar do PHPUnit. Para testes unitários, o Yii tem duas classes CTestCase, para testes gerais e CDbTestCase para testes com ActiveRecord. Essas classes nada mais são do que extensões do PHPUnit =D

Isso é verdade =D. Principalmente quando se precisa de algo rápido, a gente sempre esquece desses "detalhes".

Uma coisa que eu acho interessante, é utilizar o PHPCodeSniffer para validar o estilo de código. Assim ele te lembra sempre que seu código tá sem documentação. Assim, aos poucos eu fui me acostumando a documentar antes =D

Tem uns links aqui pra galera que quiser entender um pouco do PHPUnit

http://www.slideshare.net/diegotremper/qualidade-no-desenvolvimento-de-software-com-phpunit-presentation?type=powerpoint

http://www.slideshare.net/adorepump/introduo-a-testes-unitrios-automatizados-com-junit-e-nunit-presentation

http://www.slideshare.net/marcelioleal/duro-de-errar-50-tratamento-controle-e-configurao-de-erros-em-php-5

http://www.slideshare.net/dgmike/ganhando-tempo-com-casos-de-testes-presentation