TDD - Test Driven Development

10.122 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
13 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
10.122
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6.684
Ações
Compartilhamentos
0
Downloads
98
Comentários
0
Gostaram
13
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

×