test driven development - conceitos básicos

22
Test Driven Development Conceitos básicos Mateus Parente

Upload: mateus-parente

Post on 26-Jul-2015

67 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Test Driven Development - Conceitos básicos

Test Driven DevelopmentConceitos básicos

Mateus Parente

Page 2: Test Driven Development - Conceitos básicos

O QUE É TDD ?

Page 3: Test Driven Development - Conceitos básicos

Por que testar um sistema?

Page 4: Test Driven Development - Conceitos básicos

Test Driven Development

Conceito de testes automatizados

Produtividade?!Quantidade x Qualidade

Page 5: Test Driven Development - Conceitos básicos

Testes de unidade

Exemplo

Page 6: Test Driven Development - Conceitos básicos

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)

Page 7: Test Driven Development - Conceitos básicos

Vantagens

● Melhora na estrutura e design da Classe● Simplificação● O Código já nasce testado● Feedback constante

Page 8: Test Driven Development - Conceitos básicos

Baby Steps

Qual a idéia

Exemplificando

Page 9: Test Driven Development - Conceitos básicos

Cenário: Salários menores que 3000, têm 10% de desconto

Page 10: Test Driven Development - Conceitos básicos

Fazendo o teste passarda maneira mais simples

Melhorando

Page 11: Test Driven Development - Conceitos básicos

Cenário: Salários maiores que 3000, têm 20% de desconto

Page 12: Test Driven Development - Conceitos básicos

Fazendo o teste passarda maneira mais simples

Melhorando

Page 13: Test Driven Development - Conceitos básicos

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

Page 14: Test Driven Development - Conceitos básicos

Exemplificando

Page 15: Test Driven Development - Conceitos básicos

@Before

Diminuir repetição de código

Page 16: Test Driven Development - Conceitos básicos

Nomenclatura dos testes

O que é mais legível ao desenvolvedor?

ou

Page 17: Test Driven Development - Conceitos básicos

Mock ObjectsConceito de objetos “dublês”

Testa FuncionarioDAO

Page 18: Test Driven Development - Conceitos básicos

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

Page 19: Test Driven Development - Conceitos básicos

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

Page 20: Test Driven Development - Conceitos básicos

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?

Page 21: Test Driven Development - Conceitos básicos

Princípios SOLID

● Rigidez● Fragilidade● Imobilidade● Viscosidade● Repetição desnecessária● Opacidade

Page 22: Test Driven Development - Conceitos básicos

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/