Test Driven Development - Conceitos básicos

Post on 26-Jul-2015

67 views 0 download

Transcript of Test Driven Development - Conceitos básicos

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/