Test Driven
Development
Códigos ruins
• Bugs
• Difícil manutenção
• Produtividade baixa
O que NÃO é TDD?
• TDD != Teste Unitário
• Não é um método para TESTAR software
• Não é limitado
• Não é teste de caixa preta, caixa branca, caixa
  cinza ou regressão.
TDD = Test Driven Development

 (Desenvolvimento Orientado a testes)
“Técnica de desenvolvimento cujo
processo é formado por pequenas
iterações. Onde os testes são codificados
primeiro.”
Programar os testes primeiro
  +
Refatorar
Assegura a Qualidade do
Código
“Sistema sem teste dá medo!”
“Código sem teste, é código legado”

(Working Effectively with Legacy Code, Michael Feathers)
Por que não usar?
“Estou sem tempo para testar!”
“Escrever testes demora muito!”
“Esse não é meu trabalho”
“Se compilou é porque está
funcionando, eXtreme Go Horse!”
Benefícios do TDD
“Garante a existência de testes unitários
       completos e atualizados”
“Diminui a quantidade de erros por
         linha de código ”
“Direciona projeto a ser mais
desacoplado, flexível, modular e
          extensível.”
O cliente
O desenvolvedor
Práticas e conceitos
Modularize os Testes
Links
• http://www.codeplex.com/wikipage?ProjectName=xunit&title=Com
  parisons
• http://unplugged.giggio.net/
• http://www.infoq.com/br/news/2009/03/TDD-Improves-Quality
• http://www.infoq.com/br/articles/levison-TDD-adoption-strategy
• http://danieltamiosso.com/2009/05/06/o-impacto-de-tdd-no-
  design/
• http://www.diogomafra.com.br/2009/09/introducao-ao-
  tdd_24.html
• http://www.infoq.com/br/news/2009/11/uncle-bob-tdd-
  applicability
• http://www.superexpert.com/
• http://blogs.southworks.net/dschenkelman/
• http://www.heroisdati.com/

TDD - Desenvolvimento Dirigido a Testes