e design no mundo real
O que é TDD? 
 Uma prática onde os testes são escritos antes do código 
de produção 
 Escreva primeiro o teste, faça o teste falhar, escreva o 
código para o teste passar… 
 … e escreva mais um teste, veja ele falhar, faça-o 
passar… e assim por diante.
Design incremental 
 Novas funcionalidades são introduzidas em pequenos 
passos 
 Além dos testes automatizados, o TDD oferece um 
feedback rápido sobre as mudanças no código 
 E também dá dicas sobre pontos de melhoria no design das 
classes 
Por isso, TDD é mais sobre design de software do que 
sobre testes
Quais as vantagens? 
Foco na 
funcionalidade 
Aumento da 
cobertura de 
testes 
Testes 
Automatizados 
Código de maior 
qualidade 
(refatoração) 
Melhora o 
design de 
classes
Quais as ferramentas?
Porque refatorar? 
Depois que o teste falha, o objetivo é escrever o código 
mais simples possível para o teste passar. 
Uma vez que o teste passou, é necessário refatorar o 
código, buscando aprimorá-lo e evitando repetição de 
código. 
Depois de refatorar, rode o teste novamente
Como escrever um teste? 
1. Escreva um caso de teste para determinada 
funcionalidade da classe 
2. O teste não vai compilar, pois sua classe sequer existe! 
3. Implemente o suficiente para o teste compilar 
4. Rode o teste e veja-o falhar 
5. Implemente o código mais simples póssível para o teste 
passar 
6. Rode o teste e veja-o passar 
7. Refatore o código em busca de melhorias 
8. Rode o teste e o veja-o passar novamente 
9. Repita todos os passos
Exemplo - Calculadora 
1. Escrever o teste que ainda não compila 
2. Criar a classe para o teste compilar
Exemplo - Calculadora 
3. Rode o teste e veja-o falhar
Exemplo - Calculadora 
4. Escreva o mínimo para o teste passar 
4. Rode o teste e veja-o passar 
5. Refatore (se necessário) e depois escreve mais casos 
de testes
Devo sempre utilizar TDD? 
 Depende. Utilize quando... 
 A classe lida com funcionalidades complexas 
 A solução do problema não está tão clara para o 
desenvolvedor 
 Dessa forma, o desenvolvedor fica mais focado no 
problema que sua classe deve resolver e não se 
perde com caminhos desnecessários 
 Talvez não seja muito vantajoso se... 
 A solução para o problema é bastante simples
Devo sempre utilizar TDD? 
 TDD é uma prática que ao mesmo tempo auxilia nos 
testes de unidade de classe 
 E conduz o desenvolvedor a pensar na melhor solução 
para o seu problema 
 Resumindo: 
É importante conhecer TDD e suas vantagens. A 
experiência deve dizer quando será melhor utilizá-lo 
ou não
Exemplo - CalculadoraDeSalario 
Regras de negócio 
 Desenvolvedores: 
 20% de desconto caso o salário seja maior que R$ 3000 
 10% de descontro caso o salário seja menor que R$ 3000 
 DBAs e Testadores 
 25% de desconto caso o salário seja maior que R$ 2500 
 15% de desconto caso o salário seja menor que R$ 2500
Exemplo - CalculadoraDeSalario
Exemplo - CalculadoraDeSalario 
 Escrevendo um teste que não compila 
 Escreve o mínimo para o teste falhar
Exemplo - CalculadoraDeSalario 
 Escrevendo o mínimo para o teste passar
Exemplo - CalculadoraDeSalario 
 Refatorando
Conclusão 
TDD não diz respeito somente a testes 
O desenvolvedor que observa o feedback da prática, 
pode aprimorar o design das suas classes seguindo os 
princípios de Orientação a Objetos. 
O conhecimento e experiência do desenvolvedor 
são essenciais para isso 
Para uma melhor leitura dos feedbacks que TDD nos diz 
e realizar as as mudanças, o desenvolvedor deve 
conhecer bem sobre design de projetos OO
Bibliografia

Introdução ao Test Driven Development (TDD)

  • 1.
    e design nomundo real
  • 2.
    O que éTDD?  Uma prática onde os testes são escritos antes do código de produção  Escreva primeiro o teste, faça o teste falhar, escreva o código para o teste passar…  … e escreva mais um teste, veja ele falhar, faça-o passar… e assim por diante.
  • 3.
    Design incremental Novas funcionalidades são introduzidas em pequenos passos  Além dos testes automatizados, o TDD oferece um feedback rápido sobre as mudanças no código  E também dá dicas sobre pontos de melhoria no design das classes Por isso, TDD é mais sobre design de software do que sobre testes
  • 4.
    Quais as vantagens? Foco na funcionalidade Aumento da cobertura de testes Testes Automatizados Código de maior qualidade (refatoração) Melhora o design de classes
  • 5.
  • 7.
    Porque refatorar? Depoisque o teste falha, o objetivo é escrever o código mais simples possível para o teste passar. Uma vez que o teste passou, é necessário refatorar o código, buscando aprimorá-lo e evitando repetição de código. Depois de refatorar, rode o teste novamente
  • 8.
    Como escrever umteste? 1. Escreva um caso de teste para determinada funcionalidade da classe 2. O teste não vai compilar, pois sua classe sequer existe! 3. Implemente o suficiente para o teste compilar 4. Rode o teste e veja-o falhar 5. Implemente o código mais simples póssível para o teste passar 6. Rode o teste e veja-o passar 7. Refatore o código em busca de melhorias 8. Rode o teste e o veja-o passar novamente 9. Repita todos os passos
  • 9.
    Exemplo - Calculadora 1. Escrever o teste que ainda não compila 2. Criar a classe para o teste compilar
  • 10.
    Exemplo - Calculadora 3. Rode o teste e veja-o falhar
  • 11.
    Exemplo - Calculadora 4. Escreva o mínimo para o teste passar 4. Rode o teste e veja-o passar 5. Refatore (se necessário) e depois escreve mais casos de testes
  • 12.
    Devo sempre utilizarTDD?  Depende. Utilize quando...  A classe lida com funcionalidades complexas  A solução do problema não está tão clara para o desenvolvedor  Dessa forma, o desenvolvedor fica mais focado no problema que sua classe deve resolver e não se perde com caminhos desnecessários  Talvez não seja muito vantajoso se...  A solução para o problema é bastante simples
  • 13.
    Devo sempre utilizarTDD?  TDD é uma prática que ao mesmo tempo auxilia nos testes de unidade de classe  E conduz o desenvolvedor a pensar na melhor solução para o seu problema  Resumindo: É importante conhecer TDD e suas vantagens. A experiência deve dizer quando será melhor utilizá-lo ou não
  • 14.
    Exemplo - CalculadoraDeSalario Regras de negócio  Desenvolvedores:  20% de desconto caso o salário seja maior que R$ 3000  10% de descontro caso o salário seja menor que R$ 3000  DBAs e Testadores  25% de desconto caso o salário seja maior que R$ 2500  15% de desconto caso o salário seja menor que R$ 2500
  • 15.
  • 16.
    Exemplo - CalculadoraDeSalario  Escrevendo um teste que não compila  Escreve o mínimo para o teste falhar
  • 17.
    Exemplo - CalculadoraDeSalario  Escrevendo o mínimo para o teste passar
  • 18.
  • 19.
    Conclusão TDD nãodiz respeito somente a testes O desenvolvedor que observa o feedback da prática, pode aprimorar o design das suas classes seguindo os princípios de Orientação a Objetos. O conhecimento e experiência do desenvolvedor são essenciais para isso Para uma melhor leitura dos feedbacks que TDD nos diz e realizar as as mudanças, o desenvolvedor deve conhecer bem sobre design de projetos OO
  • 20.