#CPBR6
TODO CÓDIGO É CULPADO
ATE QUE PROVE SUA INOCÊNCIA
ELIAS NOGUEIRA
Elias Nogueira
QA Engineer
@eliasnogueira
http://eliasnogueira.com
Pergunta
Se software
fossem carros...
Como garantir que tudo funciona?
TESTE DE SOFTWARE
Mas quem testa?
Desenvolvedor?
Tester!!!
Requisitos
Design
Codificação
Teste
Implantação
Modelo de Desenvolvimento Tradicional
Requisitos
Design
Codificação
Teste
Implantação
Problema...
Como garantir
uma melhor
entrega?
TDD – Test Driven Development
E quem vai
fazer?
Os números romanos
Os números eram representados por sete diferentes símbolos
• I, unus, 1, (um)
• V, quinque, 5 (cinco)
•...
Os números romanos
Algarismos de menor ou igual valor à direita são somados ao
algarismo de maior valor
Algarismos de meno...
Os números romanos
Criaremos uma classe de teste de unidade
Instanciaremos uma classe que não existe
O teste, obviamente, ...
Os números romanos
Testa falha por problema de compilação...
Não existe a classe ConversorDeNumerosRomanos
Os números romanos
Criaremos a classe
Criaremos o método para passar o teste
Os números romanos
Executaremos o teste unitário.
O Test passa, mas o código ainda não está OK!
Os números romanos
Criaremos mais testes para garantir o
funcionamento e implementação
Os números romanos
E execução do teste falhará no novo método,
pois não implementamos o conversor para o “V”
Os números romanos
Alteramos o método converte para que seja
possível retornar os valores correspondentes a
“I” ou “V”
Os números romanos
Agora os dois testes passam com sucesso!
Os números romanos
Agora podemos implementar o restante dos
números que faltam
Os números romanos
Agora adicionaremos um pouco mais de
complexidade testando a conversão de “II”
Os números romanos
Poderíamos simplesmente adicionar o “II” na
tabela certo?
Mas vamos fazer melhor...
Os números romanos
Uma possível solução é acumular o valor
Os números romanos
Onde alteramos a tabela para char
Os números romanos
Agora adicionaremos um teste um pouco mais
“complexo” para testar a função converte
Os números romanos
E o teste passa!!! :D
Os números romanos
Agora precisamos tratar os números como “IX”
onde não adianta somente somar os valores
Os números romanos
Agora teremos que alterar o código
(1) Escrever um teste simples
(2) Vê se
ele falha
(3) Implementa uma solução
simples pra resolver
(4) Refatora
para remove...
De onde veio?
• Kent Back (criador do JUnit)
• Prática conhecida do XP (Test First)
Benefícios da adoção do TDD
• Primeiro foco em teste, depois na
implementação
• Código já nasce testado
• Simplicidade e m...
Ferramentas xUnit
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
• São as ferramentas para a criação de
test...
TDD é DESIGN!
e não teste
Test-Driven Development
Teste e Design no Mundo Real
Mauricio Aniche
casadocodigo.com.br
Test-Driven Development
By Example
Kent Beck
http://goo.gl/0vQv
@eliasnogueira
http://about.me/eliasnogueira
http://slideshare.net/elias.nogueira
https://github.com/eliasnogueira/tdd-exe...
TDD - Test Driven Development
TDD - Test Driven Development
TDD - Test Driven Development
TDD - Test Driven Development
Próxima SlideShare
Cargando en…5
×

TDD - Test Driven Development

10.230 visualizaciones

Publicado el

Apresentação sobre TDD - Test Driven Development no Campus Party 2013 em São Paulo no dia 2/2/2013 onde apresento o que é TDD com uma abordagem prática

Publicado en: Tecnología

TDD - Test Driven Development

  1. 1. #CPBR6 TODO CÓDIGO É CULPADO ATE QUE PROVE SUA INOCÊNCIA ELIAS NOGUEIRA
  2. 2. Elias Nogueira QA Engineer @eliasnogueira http://eliasnogueira.com
  3. 3. Pergunta
  4. 4. Se software fossem carros...
  5. 5. Como garantir que tudo funciona?
  6. 6. TESTE DE SOFTWARE
  7. 7. Mas quem testa?
  8. 8. Desenvolvedor?
  9. 9. Tester!!!
  10. 10. Requisitos Design Codificação Teste Implantação Modelo de Desenvolvimento Tradicional
  11. 11. Requisitos Design Codificação Teste Implantação Problema...
  12. 12. Como garantir uma melhor entrega?
  13. 13. TDD – Test Driven Development
  14. 14. E quem vai fazer?
  15. 15. Os números romanos Os números eram representados por sete diferentes símbolos • I, unus, 1, (um) • V, quinque, 5 (cinco) • X, decem, 10 (dez) • L, quinquaginta, 50 (cinquenta) • C, centum, 100 (cem) • D, quingenti, 500 (quinhentos) • M, mille, 1.000 (mil)
  16. 16. Os números romanos Algarismos de menor ou igual valor à direita são somados ao algarismo de maior valor Algarismos de menor valor à esquerda são subtraídos do algarismo de maior valor.
  17. 17. Os números romanos Criaremos uma classe de teste de unidade Instanciaremos uma classe que não existe O teste, obviamente, falhará!
  18. 18. Os números romanos Testa falha por problema de compilação... Não existe a classe ConversorDeNumerosRomanos
  19. 19. Os números romanos Criaremos a classe Criaremos o método para passar o teste
  20. 20. Os números romanos Executaremos o teste unitário. O Test passa, mas o código ainda não está OK!
  21. 21. Os números romanos Criaremos mais testes para garantir o funcionamento e implementação
  22. 22. Os números romanos E execução do teste falhará no novo método, pois não implementamos o conversor para o “V”
  23. 23. Os números romanos Alteramos o método converte para que seja possível retornar os valores correspondentes a “I” ou “V”
  24. 24. Os números romanos Agora os dois testes passam com sucesso!
  25. 25. Os números romanos Agora podemos implementar o restante dos números que faltam
  26. 26. Os números romanos Agora adicionaremos um pouco mais de complexidade testando a conversão de “II”
  27. 27. Os números romanos Poderíamos simplesmente adicionar o “II” na tabela certo? Mas vamos fazer melhor...
  28. 28. Os números romanos Uma possível solução é acumular o valor
  29. 29. Os números romanos Onde alteramos a tabela para char
  30. 30. Os números romanos Agora adicionaremos um teste um pouco mais “complexo” para testar a função converte
  31. 31. Os números romanos E o teste passa!!! :D
  32. 32. Os números romanos Agora precisamos tratar os números como “IX” onde não adianta somente somar os valores
  33. 33. Os números romanos Agora teremos que alterar o código
  34. 34. (1) Escrever um teste simples (2) Vê se ele falha (3) Implementa uma solução simples pra resolver (4) Refatora para remover duplicidade TDD – Test Driven Development
  35. 35. De onde veio? • Kent Back (criador do JUnit) • Prática conhecida do XP (Test First)
  36. 36. Benefícios da adoção do TDD • Primeiro foco em teste, depois na implementação • Código já nasce testado • Simplicidade e melhor design • Feedback rápido • Segurança!
  37. 37. Ferramentas xUnit http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks • São as ferramentas para a criação de testes unitários • Existem diversas ferramentas para todo o tipo de linguagem
  38. 38. TDD é DESIGN! e não teste
  39. 39. Test-Driven Development Teste e Design no Mundo Real Mauricio Aniche casadocodigo.com.br
  40. 40. Test-Driven Development By Example Kent Beck http://goo.gl/0vQv
  41. 41. @eliasnogueira http://about.me/eliasnogueira http://slideshare.net/elias.nogueira https://github.com/eliasnogueira/tdd-exemplo

×