Dúvidas sobre TDD e MVC  XML
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Autor Mensagem
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Pessoal,

Do nada me veio à cabeça duas perguntas:
1 - Quando eu sei que não preciso de mais testes unitários?
2 - Como fazer TDD com consultas ao banco (que é um mock)? Usando Hash ou alguma coisa parecida?

Abraço.

This message was edited 1 time. Last update was at 18/06/2009 16:27:13


Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
faelcavalcanti
GUJ Ranger
[Avatar]

Membro desde: 03/05/2006 13:16:25
Mensagens: 960
Localização: Recife-PE
Offline

Andre Brito wrote:1 - Quando eu sei que não preciso de mais testes unitários?

você tem que analisar o aspecto funcional e não-funcional, se você pensar assim, você sempre achará mais uma coisa a testar e verificar

procure focar nos requisitos funcionais, que é o que mais importa para o cliente, e posteriormente limites da sua arquitetura de projeto, através de testes planejados e preventivos

não subestime requisitos nao-funcionais, como acaba sendo desbanjado pelos gerentes, pois se você diz ao cliente que sua arquitetura de projeto suporta 1 mil usuarios silmutaneos com tempo de resposta de ate 10 segundos, como fica se não o fizer?

geralmente o que se faz é identificar o grau de cobertura de precaveniência do código escrito, bem como a partir de lógicas cobertas no código, como por exemplo análise de pairwise, tabelas de decisao, entre outras técnicas, identificados durante a antecipação da programação

você também poderá identificar gargalos que devem ser sinalizados quando ocorrerem em uma mudança eventual, ou seja, problemas de recorrência de testes, que é bastante desgastante em ambiente de fábrica de software

Andre Brito wrote:2 - Como fazer TDD com consultas ao banco (que é um mock)? Usando Hash ou alguma coisa parecida?Abraço.

http://www.carbonfive.com/community/
http://blog.carbonfive.com/2008/07/testing/database-testing-with-spring-25-and-dbunit


--
http://faelcavalcanti.wordpress.com/ :: http://pe.debianbrasil.org/
--
Acredite um pouco mais na força de sua própria intuição. Muitas vezes deixamos de realizar algo de bom ou que nos favoreça simplesmente porque achamos tudo muito difícil e por isso nem começamos. Moral da história: A vida é o caminho e não o destino, você é o arquiteto do seu caminho!
--
Obrigado, Rafa Rocha!
[WWW]
s4nchez
Virtual Machine Man
[Avatar]

Membro desde: 05/06/2006 11:35:55
Mensagens: 674
Localização: London, UK
Offline

Andre Brito wrote:
1 - Quando eu sei que não preciso de mais testes unitários?


Como o Kent Beck cita no livro dele, você possuirá testes o suficiente "quando o medo se transformar em tédio".

Ivan Sanchez | coding dojo | blog | twitter
[WWW]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline

Para testes envolvendo banco de dados geralmente se usa um banco em memória (e.g. sqlite, hsqldb, etc) e Carrega-se Fixtures antes de cada teste limpando ao final.

Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com

"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

s4nchez wrote:
Andre Brito wrote:
1 - Quando eu sei que não preciso de mais testes unitários?


Como o Kent Beck cita no livro dele, você possuirá testes o suficiente "quando o medo se transformar em tédio".


Testes unitários são super valorizados. Tem gente que acha que deve usar em todo projeto e em toda parte do projeto. Engraçado que o próprio Kent Beck recentemente disse que testes são dispensáveis em muitos projetos.
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Emerson Macedo wrote:Para testes envolvendo banco de dados geralmente se usa um banco em memória (e.g. sqlite, hsqldb, etc) e Carrega-se Fixtures antes de cada teste limpando ao final.

Emerson,

Essa de carregar Fixtures antes é pra não mexer no banco enquanto faço os testes, né?

Valeu Ivan, Rafael, Emerson e Moch.

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline

Andre Brito wrote:
Emerson Macedo wrote:Para testes envolvendo banco de dados geralmente se usa um banco em memória (e.g. sqlite, hsqldb, etc) e Carrega-se Fixtures antes de cada teste limpando ao final.

Emerson,

Essa de carregar Fixtures antes é pra não mexer no banco enquanto faço os testes, né?

Valeu Ivan, Rafael, Emerson e Moch.

É para ter um estado consistente no início e ao final dos seus testes.

Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com

"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline

Andre Brito wrote:
1 - Quando eu sei que não preciso de mais testes unitários?


Uma forma é medir quanto do seu código é "exercitado" pelos testes unitários. Se vc. for por este caminho é fundamental medir a cobertura dos testes. Felizemente há uma boa oferta de ferramentas para isto:

http://java-source.net/open-source/code-coverage





http://justaphilpicks.blogspot.com/
[MSN]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

psevestre wrote:
Andre Brito wrote:
1 - Quando eu sei que não preciso de mais testes unitários?


Uma forma é medir quanto do seu código é "exercitado" pelos testes unitários. Se vc. for por este caminho é fundamental medir a cobertura dos testes. Felizemente há uma boa oferta de ferramentas para isto:

http://java-source.net/open-source/code-coverage


Oi psevestre.
Valeu pela dica cara.
Lendo rapidamente a descrição do Cobertura, eu tive uma impressão errada (eu espero): ele mede a porcentagem que os testes são executados. É isso?
Me parece meio estranho isso... Porque pensa bem, se eu tenho uns testes unitários que testam poucas coisas que acontecem, mas frequentemente, eu tenho uns testes unitários que são bastante executados. Ou seja, a porcentagem deles vai ser alta. Mas isso não indica que eu testei eventos que podem ser que aconteçam e eu não consiga ver.

Posso ter falado com sem nexo, mas a priori me parece ser um tanto quanto válido.

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline


Lendo rapidamente a descrição do Cobertura, eu tive uma impressão errada (eu espero): ele mede a porcentagem que os testes são executados. É isso?


Não. Leia de novo o que está escrito lá:


Cobertura is a free Java tool that calculates the percentage of code accessed by tests.


Traduzindo: Cobertura é uma ferramenta Java gratuita que calcula a porcentagem do código "acessada" (tradução aproximada) por testes.

Exemplificando: se seu código tem 1000 linhas e o conjunto de testes "passa" por 200, a cobertura é de 20%. Na ferramenta vc. pode navegar pelos resultados e verificar quais trechos de código foram executados ou não ao longo da bateria de testes unitários.


http://justaphilpicks.blogspot.com/
[MSN]
 
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Ir para:   
Powered by JForum 2.1.8 © JForum Team