Desenvolvedor no controle utilizando tdd

Preview:

Citation preview

1

Desenvolvedor no controle utilizando TDD

Victor Villela Sertavictorserta@gmail.com

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: victorserta@gmail.com

#soudevcon #tdd