64
1 Desenvolvedor no controle utilizando TDD Victor Villela Serta [email protected] twitter.com/victorserta victorserta.com.br #soudevcon #tdd

Desenvolvedor no controle utilizando tdd

Embed Size (px)

Citation preview

Page 1: Desenvolvedor no controle utilizando tdd

1

Desenvolvedor no controle utilizando TDD

Victor Villela [email protected]

twitter.com/victorserta

victorserta.com.br

#soudevcon #tdd

Page 2: Desenvolvedor no controle utilizando tdd

Quem sou eu?

Victor Serta● Desenvolvedor Java● Fundador da Agivis, uma startup de

desenvolvimento ágil de aplicações web e mobile

● Graduado em Engenharia de Computação pela PUC-PR

● Entusiasta de metodologias ágeis (Scrum, XP e Kanban)

Page 3: Desenvolvedor no controle utilizando tdd

twitter.com/victorserta

Page 4: Desenvolvedor no controle utilizando tdd

victorserta.com.br

Page 5: Desenvolvedor no controle utilizando tdd

Test Driven Development

#soudevcon #tdd

Page 6: Desenvolvedor no controle utilizando tdd

Mas antes... uma história

#soudevcon #tdd

Page 7: Desenvolvedor no controle utilizando tdd

● Desenvolvedor bem intensionado● Sem testes automatizados● XGH

#soudevcon #tdd

Page 8: Desenvolvedor no controle utilizando tdd

Após 3 semanas estava pronto...

#soudevcon #tdd

Page 9: Desenvolvedor no controle utilizando tdd

...só faltava testar.

#soudevcon #tdd

Page 10: Desenvolvedor no controle utilizando tdd

3 dias antes da entregaum bug foiencontrado

#soudevcon #tdd

Page 11: Desenvolvedor no controle utilizando tdd

Depois de muita pizza e noites viradas....

#soudevcon #tdd

Page 12: Desenvolvedor no controle utilizando tdd

Ele arrumou o bug e o projeto foi entregue!

#soudevcon #tdd

Page 13: Desenvolvedor no controle utilizando tdd

Quando o cliente foi testar...

#soudevcon #tdd

Page 14: Desenvolvedor no controle utilizando tdd

Arrumou o bug,mas causou outros 5

#soudevcon #tdd

Page 15: Desenvolvedor no controle utilizando tdd

Outra história...

#soudevcon #tdd

Page 16: Desenvolvedor no controle utilizando tdd

● Desenvolvedor experiente

● Domina Design Patterns

#soudevcon #tdd

Page 17: Desenvolvedor no controle utilizando tdd

Diagrama de um “Hello World” desse desenvolvedor:

#soudevcon #tdd

Page 18: Desenvolvedor no controle utilizando tdd

Levou 2 meses levantando requisitos...

#soudevcon #tdd

Page 19: Desenvolvedor no controle utilizando tdd

1 mês defnindo a arquitetura...

#soudevcon #tdd

Page 20: Desenvolvedor no controle utilizando tdd

2 meses elaborando diagramas...

#soudevcon #tdd

Page 21: Desenvolvedor no controle utilizando tdd

4 meses desenvolvendo...

#soudevcon #tdd

Page 22: Desenvolvedor no controle utilizando tdd

2 meses testando.

#soudevcon #tdd

Page 23: Desenvolvedor no controle utilizando tdd

Quando o cliente foi testar...

#soudevcon #tdd

Page 24: Desenvolvedor no controle utilizando tdd

“Não era isso que eu queria...”

Page 25: Desenvolvedor no controle utilizando tdd

Dinheiro jogado fora!

#soudevcon #tdd

Page 26: Desenvolvedor no controle utilizando tdd

Lean

Agile

Scrum

XP

A solução:

#soudevcon #tdd

Page 27: Desenvolvedor no controle utilizando tdd

#soudevcon #tdd

Page 28: Desenvolvedor no controle utilizando tdd

Desenvolvimento padrão

Projetar

Codificar

Testar#soudevcon #tdd

Page 29: Desenvolvedor no controle utilizando tdd

Test Driven Development

Testar

Codificar

Projetar#soudevcon #tdd

Page 30: Desenvolvedor no controle utilizando tdd

Por que TDD?

Qualidade

#soudevcon #tdd

Page 31: Desenvolvedor no controle utilizando tdd

Por que TDD?

Menos desperdício

#soudevcon #tdd

Page 32: Desenvolvedor no controle utilizando tdd

Por que TDD?

Mais rápido

#soudevcon #tdd

Page 33: Desenvolvedor no controle utilizando tdd

● JUnit● TestNG● Mockito● EasyMock● DbUnit● Fit / FitNesse

Ferramentas – Java

#soudevcon #tdd

Page 34: Desenvolvedor no controle utilizando tdd

● Test::Unit● Mocha● RSpec● Shoulda

Ferramentas – Ruby

#soudevcon #tdd

Page 35: Desenvolvedor no controle utilizando tdd

● SimpleTest● PHPUnit

Ferramentas – PHP

#soudevcon #tdd

Page 36: Desenvolvedor no controle utilizando tdd

● FlexUnit● Mockolate

Ferramentas – Action Script

#soudevcon #tdd

Page 37: Desenvolvedor no controle utilizando tdd

● JsUnit● DOH● FireUnit● QUnit● JSMock● QMock● MockMe

Ferramentas – JavaScript

#soudevcon #tdd

Page 38: Desenvolvedor no controle utilizando tdd

● NUnit● csUnit● DotNetMock

Ferramentas – .NET

#soudevcon #tdd

Page 39: Desenvolvedor no controle utilizando tdd

Conceito base

Red

#soudevcon #tdd

Page 40: Desenvolvedor no controle utilizando tdd

Conceito base

Red Green

#soudevcon #tdd

Page 41: Desenvolvedor no controle utilizando tdd

Conceito base

Red Green Refactor

#soudevcon #tdd

Page 42: Desenvolvedor no controle utilizando tdd

“Talk is cheap. Show me the code.”(Linus Torvalds)

#soudevcon #tdd

Page 43: Desenvolvedor no controle utilizando tdd

O Exemplo

Controle de Estoque

#soudevcon #tdd

Page 44: Desenvolvedor no controle utilizando tdd

Requisitos

● Controle de entrada/saída de produtos atualizando quantidade atual

● Não permitir saldo negativo● Notifcar setor de compras quando o saldo do

produto fcar zerado após uma saída

#soudevcon #tdd

Page 45: Desenvolvedor no controle utilizando tdd

Programação por Intenção

● Assumir que

a implementação

existe● Design livre

#soudevcon #tdd

Page 46: Desenvolvedor no controle utilizando tdd

Baby Steps

● Passos pequenos● Desenvolvimento incremental● Feedback

#soudevcon #tdd

Page 47: Desenvolvedor no controle utilizando tdd

Estamos na barra vermelha

Page 48: Desenvolvedor no controle utilizando tdd

Busque a barra verde o quantoantes

Page 49: Desenvolvedor no controle utilizando tdd

Refatore!

Page 50: Desenvolvedor no controle utilizando tdd

Triangulação

Teste 1Teste 2

Teste 3

Espaço da solução

#soudevcon #tdd

Page 51: Desenvolvedor no controle utilizando tdd

Limpar testes repetidos

#soudevcon #tdd

Page 52: Desenvolvedor no controle utilizando tdd

Requisitos

● Controle de entrada/saída de produtos atualizando quantidade atual

● Não permitir saldo negativo● Notifcar setor de compras quando o saldo do

produto fcar zerado após uma saída

#soudevcon #tdd

Page 53: Desenvolvedor no controle utilizando tdd

Requisitos

● Controle de entrada/saída de produtos atualizando quantidade atual

● Não permitir saldo negativo● Notifcar setor de compras quando o saldo do

produto fcar zerado após uma saída

#soudevcon #tdd

Page 54: Desenvolvedor no controle utilizando tdd

Mock objects

● Ensaiar● Repetir● Verifcar

#soudevcon #tdd

Page 55: Desenvolvedor no controle utilizando tdd

Stub/Fake objects

● Stub● Implementação hardcoded● Apenas parece como um

pato

● Fake● Parece com um pato,

anda como um pato,

mas não é um pato

real#soudevcon #tdd

Page 56: Desenvolvedor no controle utilizando tdd

Requisitos

● Controle de entrada/saída de produtos atualizando quantidade atual

● Não permitir saldo negativo● Notifcar setor de compras quando o saldo do

produto fcar zerado após uma saída

#soudevcon #tdd

Page 57: Desenvolvedor no controle utilizando tdd

Além do TDD...

● ATDD – Acceptance TDD● BDD – Behavior Driven

Development

#soudevcon #tdd

Page 58: Desenvolvedor no controle utilizando tdd

Resumindo TDD...

#soudevcon #tdd

Page 59: Desenvolvedor no controle utilizando tdd

Crie e execute o teste

Red

Page 60: Desenvolvedor no controle utilizando tdd

Codifique para passar no teste

Red Green

Page 61: Desenvolvedor no controle utilizando tdd

Refatore!

Red Green Refactor

Page 62: Desenvolvedor no controle utilizando tdd

Pronto para assumir o controle ?

Page 63: Desenvolvedor no controle utilizando tdd

Referências

Test-Driven Development By Example

Kent Beck

Test Driven: Practical TDD and Acceptance TDD for Java Developers

Lasse Koskela

Page 64: Desenvolvedor no controle utilizando tdd

Obrigado!

Twitter: @victorsertaBlog: victorserta.com.br/blogEmail: [email protected]

#soudevcon #tdd