Download - Pensando TDD

Transcript
Page 1: Pensando TDD

Pensando TDD

08/10/2014

Page 2: Pensando TDD

Direitos Autorais

Você está autorizado e incentivado a distribuir este material.

Copie, compartilhe e modifique, apenas cite a fonte.

Page 3: Pensando TDD

Autoria

Luiz Ricardo

luizricardo.orgfacebook.com/StateOfTheArtBlog

Page 4: Pensando TDD

Código-fonte

O código dos exemplos práticos pode ser obtido no link:

https://github.com/utluiz/tdd-example

Page 5: Pensando TDD

Porque software?

Page 6: Pensando TDD
Page 7: Pensando TDD
Page 8: Pensando TDD

$$$???

Page 9: Pensando TDD
Page 10: Pensando TDD

Software de Qualidade

Faz o que deveria fazer

SEM ERROS

Page 11: Pensando TDD

Software de Qualidade

Funciona

Page 12: Pensando TDD

Dificuldades do Software

Sem representação visível

Dificuldade em identificar requisitos

Abstrato

Page 13: Pensando TDD

Dificuldades do Software

Singular

Cada um é diferente

Page 14: Pensando TDD

Dificuldades do Software

Mutável

1 bit muda tudo

Page 15: Pensando TDD

Dificuldades do Software

Complexo

Simplificação

Perda de informação

Page 16: Pensando TDD

Expectativa Realidade

Page 17: Pensando TDD

Como fazer software de qualidade?

Page 18: Pensando TDD

Teste Teste

Teste

Teste

Teste

Page 19: Pensando TDD

TDD

Metodologia ágil de desenvolvimento de software

cujo objetivo é gerarcódigo limpo que funciona

Test-Driven Development

Page 20: Pensando TDD

Fases do Desenvolvimento

Tradicional

Projeto

Implementação

Teste

Page 21: Pensando TDD

Mudanças acontecem...

Page 22: Pensando TDD

Abrace-as!

Page 23: Pensando TDD

Correção de Bugs

Design Implementação Teste Manutenção

Custo por fase

Page 24: Pensando TDD
Page 25: Pensando TDD
Page 26: Pensando TDD

Fases do Desenvolvimento

TDD

Projeto/Teste

Implementação

Page 27: Pensando TDD

Definição de “Pronto”

Quando terminamos uma nova funcionalidade?

Page 28: Pensando TDD

Definição de “Pronto”

Código

Page 29: Pensando TDD

Definição de “Pronto”

Código limpo

Page 30: Pensando TDD

Definição de “Pronto”

Código limpo

Testado

Page 31: Pensando TDD

Definição de “Pronto”

Código limpo

Teste automatizado

Page 32: Pensando TDD

Definição de “Pronto”

Código limpo

Teste automatizado

Deploy automatizado

Page 33: Pensando TDD

Definição de “Pronto”

Código limpo

Teste automatizado

Deploy automatizado

Documentado

Page 34: Pensando TDD

Ciclo de Vida do TDD

Vermelho

VerdeRefatore

Page 35: Pensando TDD

Ciclo de Vida do TDD

Vermelho, verde, refatore

Vermelho, verde, refatore

Vermelho, verde, refatore

Vermelho, verde, refatore

...

O “Mantra”

Page 36: Pensando TDD

Ciclo de Vida do TDD

Vermelho

VerdeRefatore

1. Escreva um teste que falhe

Page 37: Pensando TDD

Ciclo de Vida do TDD

Vermelho

VerdeRefatore

1. Escreva um teste que falhe

2. Façafuncionar

Page 38: Pensando TDD

Ciclo de Vida do TDD

Vermelho

VerdeRefatore

1. Escreva um teste que falhe

2. Façafuncionar

3. Faça direito

Page 39: Pensando TDD

Ciclo de Vida do TDD

VerdeRefatore

Por que separar?

Faça funcionarFaça direito

Page 40: Pensando TDD

Ciclo de Vida do TDD

Page 41: Pensando TDD

Valores do TDD

• Foco na qualidade

• Código “documentado”

• Sem medo de mudanças

Page 42: Pensando TDD

Só mais uma coisa...

Page 43: Pensando TDD

Dificuldades do TDD

• Qualidade tem custo

• Indefinição

• Design ruim

Page 44: Pensando TDD

Desenvolvimento de Software

Metáforas

Page 45: Pensando TDD

Desenvolvimento de Software

Amador ou Artesão?

Page 46: Pensando TDD

Princípios de Design OO

Single Responsibility Principle

Open/close principle

Liskov substitution principle

Interface segregation principle

Dependency inversion principle

S.O.L.I.D.

Page 47: Pensando TDD
Page 48: Pensando TDD

Testando... 1, 2, 3

Testes unitários

Testa uma porção individual do código, como uma função,

método ou classe.

Page 49: Pensando TDD

Testando... 1, 2, 3

Asserções

Verificações de

pré e pós-condições do teste

Page 50: Pensando TDD

Testando... 1, 2, 3

Objetos Mock

Objetos usados em testes que simulam o funcionamento de

um objeto real

Page 51: Pensando TDD

Testando... 1, 2, 3

Integração

Carga

Estresse

Desempenho

Tipos de teste

Resiliência

Aceitação

Cobertura

Regressão

Page 52: Pensando TDD

Ferramentas

• Teste unitário

JUnit, TestNG

• Teste de integração (web)

Selenium/Web Driver, HtmlUnit, UFT/QTP

• Mocks

Mockito, JMock, PowerMock, EasyMock

Plataforma Java

Page 53: Pensando TDD

Ferramentas

• Teste de cobertura

EclEmma

Plataforma Java

Page 54: Pensando TDD

Prática

• Testes unitários

– Calculadora com JUnit

• Teste web

– Pesquisa no Google com WebDriver (Internet)

– Navegação entre duas páginas

Demonstração

Page 55: Pensando TDD

Conclusões

• Não é uma solução mágica

• TDD não é sobre TDD

• TDD é um exercício diário

• TDD é disciplina

Test-Driven Development

Page 56: Pensando TDD

Pratique!

Page 57: Pensando TDD

Não tenha medo...

Perguntas?


Top Related