desenvolvedor no controle utilizando tdd
TRANSCRIPT
![Page 1: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/3.jpg)
twitter.com/victorserta
![Page 4: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/4.jpg)
victorserta.com.br
![Page 5: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/5.jpg)
Test Driven Development
#soudevcon #tdd
![Page 6: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/6.jpg)
Mas antes... uma história
#soudevcon #tdd
![Page 7: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/7.jpg)
● Desenvolvedor bem intensionado● Sem testes automatizados● XGH
#soudevcon #tdd
![Page 8: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/8.jpg)
Após 3 semanas estava pronto...
#soudevcon #tdd
![Page 9: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/9.jpg)
...só faltava testar.
#soudevcon #tdd
![Page 10: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/10.jpg)
3 dias antes da entregaum bug foiencontrado
#soudevcon #tdd
![Page 11: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/11.jpg)
Depois de muita pizza e noites viradas....
#soudevcon #tdd
![Page 12: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/12.jpg)
Ele arrumou o bug e o projeto foi entregue!
#soudevcon #tdd
![Page 13: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/13.jpg)
Quando o cliente foi testar...
#soudevcon #tdd
![Page 14: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/14.jpg)
Arrumou o bug,mas causou outros 5
#soudevcon #tdd
![Page 15: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/15.jpg)
Outra história...
#soudevcon #tdd
![Page 16: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/16.jpg)
● Desenvolvedor experiente
● Domina Design Patterns
#soudevcon #tdd
![Page 17: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/17.jpg)
Diagrama de um “Hello World” desse desenvolvedor:
#soudevcon #tdd
![Page 18: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/18.jpg)
Levou 2 meses levantando requisitos...
#soudevcon #tdd
![Page 19: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/19.jpg)
1 mês defnindo a arquitetura...
#soudevcon #tdd
![Page 20: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/20.jpg)
2 meses elaborando diagramas...
#soudevcon #tdd
![Page 21: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/21.jpg)
4 meses desenvolvendo...
#soudevcon #tdd
![Page 22: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/22.jpg)
2 meses testando.
#soudevcon #tdd
![Page 23: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/23.jpg)
Quando o cliente foi testar...
#soudevcon #tdd
![Page 24: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/24.jpg)
“Não era isso que eu queria...”
![Page 25: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/25.jpg)
Dinheiro jogado fora!
#soudevcon #tdd
![Page 26: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/26.jpg)
Lean
Agile
Scrum
XP
A solução:
#soudevcon #tdd
![Page 27: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/27.jpg)
#soudevcon #tdd
![Page 28: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/28.jpg)
Desenvolvimento padrão
Projetar
Codificar
Testar#soudevcon #tdd
![Page 29: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/29.jpg)
Test Driven Development
Testar
Codificar
Projetar#soudevcon #tdd
![Page 30: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/30.jpg)
Por que TDD?
Qualidade
#soudevcon #tdd
![Page 31: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/31.jpg)
Por que TDD?
Menos desperdício
#soudevcon #tdd
![Page 32: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/32.jpg)
Por que TDD?
Mais rápido
#soudevcon #tdd
![Page 33: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/33.jpg)
● JUnit● TestNG● Mockito● EasyMock● DbUnit● Fit / FitNesse
Ferramentas – Java
#soudevcon #tdd
![Page 34: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/34.jpg)
● Test::Unit● Mocha● RSpec● Shoulda
Ferramentas – Ruby
#soudevcon #tdd
![Page 35: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/35.jpg)
● SimpleTest● PHPUnit
Ferramentas – PHP
#soudevcon #tdd
![Page 36: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/36.jpg)
● FlexUnit● Mockolate
Ferramentas – Action Script
#soudevcon #tdd
![Page 37: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/37.jpg)
● JsUnit● DOH● FireUnit● QUnit● JSMock● QMock● MockMe
Ferramentas – JavaScript
#soudevcon #tdd
![Page 38: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/38.jpg)
● NUnit● csUnit● DotNetMock
Ferramentas – .NET
#soudevcon #tdd
![Page 39: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/39.jpg)
Conceito base
Red
#soudevcon #tdd
![Page 40: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/40.jpg)
Conceito base
Red Green
#soudevcon #tdd
![Page 41: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/41.jpg)
Conceito base
Red Green Refactor
#soudevcon #tdd
![Page 42: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/42.jpg)
“Talk is cheap. Show me the code.”(Linus Torvalds)
#soudevcon #tdd
![Page 43: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/43.jpg)
O Exemplo
Controle de Estoque
#soudevcon #tdd
![Page 44: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/45.jpg)
Programação por Intenção
● Assumir que
a implementação
existe● Design livre
#soudevcon #tdd
![Page 46: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/46.jpg)
Baby Steps
● Passos pequenos● Desenvolvimento incremental● Feedback
#soudevcon #tdd
![Page 47: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/47.jpg)
Estamos na barra vermelha
![Page 48: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/48.jpg)
Busque a barra verde o quantoantes
![Page 49: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/49.jpg)
Refatore!
![Page 50: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/50.jpg)
Triangulação
Teste 1Teste 2
Teste 3
Espaço da solução
#soudevcon #tdd
![Page 51: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/51.jpg)
Limpar testes repetidos
#soudevcon #tdd
![Page 52: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/54.jpg)
Mock objects
● Ensaiar● Repetir● Verifcar
#soudevcon #tdd
![Page 55: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/55.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/56.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/57.jpg)
Além do TDD...
● ATDD – Acceptance TDD● BDD – Behavior Driven
Development
#soudevcon #tdd
![Page 58: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/58.jpg)
Resumindo TDD...
#soudevcon #tdd
![Page 59: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/59.jpg)
Crie e execute o teste
Red
![Page 60: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/60.jpg)
Codifique para passar no teste
Red Green
![Page 61: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/61.jpg)
Refatore!
Red Green Refactor
![Page 62: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/62.jpg)
Pronto para assumir o controle ?
![Page 63: Desenvolvedor no controle utilizando tdd](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/63.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062514/55843b2bd8b42abf1e8b4c35/html5/thumbnails/64.jpg)
Obrigado!
Twitter: @victorsertaBlog: victorserta.com.br/blogEmail: [email protected]
#soudevcon #tdd