Upload
mateus-parente
View
67
Download
0
Embed Size (px)
Citation preview
Test Driven DevelopmentConceitos básicos
Mateus Parente
O QUE É TDD ?
Por que testar um sistema?
Test Driven Development
Conceito de testes automatizados
Produtividade?!Quantidade x Qualidade
Testes de unidade
Exemplo
Test Driven Development
Teste de unidade para nova funcionalidade
TesteFalhou
Código mais simples que resolva o problema
Melhoramos o código(se necessário)
Vantagens
● Melhora na estrutura e design da Classe● Simplificação● O Código já nasce testado● Feedback constante
Baby Steps
Qual a idéia
Exemplificando
Cenário: Salários menores que 3000, têm 10% de desconto
Fazendo o teste passarda maneira mais simples
Melhorando
Cenário: Salários maiores que 3000, têm 20% de desconto
Fazendo o teste passarda maneira mais simples
Melhorando
Qualidade do código de teste
Carrinho de compras:
Uma funcionalidade que devolva o valor do item de maior valor dentro desse carrinho de compras. Pensando já nos testes, temos os seguintes cenários:
• Se o carrinho só tiver um item• Se o carrinho tiver muitos itens• Um carrinho sem nenhum item
Exemplificando
@Before
Diminuir repetição de código
Nomenclatura dos testes
O que é mais legível ao desenvolvedor?
ou
Mock ObjectsConceito de objetos “dublês”
Testa FuncionarioDAO
Mock ObjectsUsar ou não usar?
Faz exatamente o que você definirSimular todas as dependênciasDifícil manutenção se usado em excessoPodem ocultar problemas em dependências que só apareceriam em testes de integraçãoInfraestrutura e testes complicadosIntimidade inapropriadaTDD ao estilo londrino
Testes unitários Testes unitáriosTestes de integração Testes de sistema
Semelhança com o mundo real
Mais caro e mais difícil de ser escrito
Test Driven Development
E quando não usar TDD?
Usar TDD em testes de integração?Aplicações WEB ?Quando não praticar?Sua classe necessita de um feedback constante?
Princípios SOLID
● Rigidez● Fragilidade● Imobilidade● Viscosidade● Repetição desnecessária● Opacidade
Apresentação baseada no Livro
Test Driven DevelopmentTeste e Design no Mundo Real - Mauricio Aniche
Outra referências:
http://blog.caelum.com.br/facilitando-seus-testes-de-unidade-no-java-um-pouco-de-mockito/
http://gc.blog.br/2007/08/28/mock-objects-em-excesso-podem-atrapalhar/