1
Desenvolvedor no controle utilizando TDD
Victor Villela [email protected]
twitter.com/victorserta
victorserta.com.br
#soudevcon #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)
twitter.com/victorserta
victorserta.com.br
Test Driven Development
#soudevcon #tdd
Mas antes... uma história
#soudevcon #tdd
● Desenvolvedor bem intensionado● Sem testes automatizados● XGH
#soudevcon #tdd
Após 3 semanas estava pronto...
#soudevcon #tdd
...só faltava testar.
#soudevcon #tdd
3 dias antes da entregaum bug foiencontrado
#soudevcon #tdd
Depois de muita pizza e noites viradas....
#soudevcon #tdd
Ele arrumou o bug e o projeto foi entregue!
#soudevcon #tdd
Quando o cliente foi testar...
#soudevcon #tdd
Arrumou o bug,mas causou outros 5
#soudevcon #tdd
Outra história...
#soudevcon #tdd
● Desenvolvedor experiente
● Domina Design Patterns
#soudevcon #tdd
Diagrama de um “Hello World” desse desenvolvedor:
#soudevcon #tdd
Levou 2 meses levantando requisitos...
#soudevcon #tdd
1 mês defnindo a arquitetura...
#soudevcon #tdd
2 meses elaborando diagramas...
#soudevcon #tdd
4 meses desenvolvendo...
#soudevcon #tdd
2 meses testando.
#soudevcon #tdd
Quando o cliente foi testar...
#soudevcon #tdd
“Não era isso que eu queria...”
Dinheiro jogado fora!
#soudevcon #tdd
Lean
Agile
Scrum
XP
A solução:
#soudevcon #tdd
#soudevcon #tdd
Desenvolvimento padrão
Projetar
Codificar
Testar#soudevcon #tdd
Test Driven Development
Testar
Codificar
Projetar#soudevcon #tdd
Por que TDD?
Qualidade
#soudevcon #tdd
Por que TDD?
Menos desperdício
#soudevcon #tdd
Por que TDD?
Mais rápido
#soudevcon #tdd
● JUnit● TestNG● Mockito● EasyMock● DbUnit● Fit / FitNesse
Ferramentas – Java
#soudevcon #tdd
● Test::Unit● Mocha● RSpec● Shoulda
Ferramentas – Ruby
#soudevcon #tdd
● SimpleTest● PHPUnit
Ferramentas – PHP
#soudevcon #tdd
● FlexUnit● Mockolate
Ferramentas – Action Script
#soudevcon #tdd
● JsUnit● DOH● FireUnit● QUnit● JSMock● QMock● MockMe
Ferramentas – JavaScript
#soudevcon #tdd
● NUnit● csUnit● DotNetMock
Ferramentas – .NET
#soudevcon #tdd
Conceito base
Red
#soudevcon #tdd
Conceito base
Red Green
#soudevcon #tdd
Conceito base
Red Green Refactor
#soudevcon #tdd
“Talk is cheap. Show me the code.”(Linus Torvalds)
#soudevcon #tdd
O Exemplo
Controle de Estoque
#soudevcon #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
Programação por Intenção
● Assumir que
a implementação
existe● Design livre
#soudevcon #tdd
Baby Steps
● Passos pequenos● Desenvolvimento incremental● Feedback
#soudevcon #tdd
Estamos na barra vermelha
Busque a barra verde o quantoantes
Refatore!
Triangulação
Teste 1Teste 2
Teste 3
Espaço da solução
#soudevcon #tdd
Limpar testes repetidos
#soudevcon #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
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
Mock objects
● Ensaiar● Repetir● Verifcar
#soudevcon #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
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
Além do TDD...
● ATDD – Acceptance TDD● BDD – Behavior Driven
Development
#soudevcon #tdd
Resumindo TDD...
#soudevcon #tdd
Crie e execute o teste
Red
Codifique para passar no teste
Red Green
Refatore!
Red Green Refactor
Pronto para assumir o controle ?
Referências
Test-Driven Development By Example
Kent Beck
Test Driven: Practical TDD and Acceptance TDD for Java Developers
Lasse Koskela
Obrigado!
Twitter: @victorsertaBlog: victorserta.com.br/blogEmail: [email protected]
#soudevcon #tdd
Top Related