Testes unitários, alguem implementa?
#1
Posted 12 November 2009 - 12:42 PM
Eu sei que já devia ter implementado, mas tenho pouco conhecimento nesta área.
Alguem já implementou em seus sistemas?
twitter.com/nenhumnick
#2
Posted 13 November 2009 - 08:57 AM
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
#3
Posted 13 November 2009 - 10:10 AM
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 =/
#4
Posted 13 November 2009 - 10:15 AM
Armando, on 13 November 2009 - 08:57 AM, said:
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
Armando, on 13 November 2009 - 08:57 AM, said:
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.
#5
Posted 13 November 2009 - 10:42 AM
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

twitter.com/nenhumnick
#6
Posted 13 November 2009 - 11:50 AM
davi_alexandre, on 13 November 2009 - 10:10 AM, said:
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 =/
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 .
twitter.com/nenhumnick
#7
Posted 13 November 2009 - 12:55 PM
davi_alexandre, on 13 November 2009 - 10:15 AM, said:



#8
Posted 13 November 2009 - 01:23 PM
Daniel A. Bastos, on 13 November 2009 - 11:50 AM, said:
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
#9
Posted 13 November 2009 - 01:27 PM
Armando, on 13 November 2009 - 12:55 PM, said:

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
#10
Posted 13 November 2009 - 01:57 PM
http://www.slideshar...type=powerpoint
http://www.slideshar...it-presentation
http://www.slideshar...-erros-em-php-5
http://www.slideshar...es-presentation