Iure Guimarães, 2009 [email_address] Siriusoft ®
Resolvendo o problema  certo
Resolvendo o problema  certo da maneira  correta
Códigos ruíns <ul><li>Defeitos </li></ul>
Códigos ruíns <ul><li>Defeitos </li></ul><ul><li>Manutenção </li></ul>
Códigos ruíns <ul><li>Defeitos </li></ul><ul><li>Manutenção </li></ul><ul><li>Produtividade </li></ul>
O problema
Necessidades do cliente
Tarde demais
 
A  Solução
Caixa Branca TDD  não é Caixa Preta Regressão Caixa Cinza
TDD  não é limitado … Unitários F un cionais Aceitação
SOFTWARE  DESIGN
TFD  Refatoração
Experience is a harsh teacher because she gives the test first, the lesson afterward. _  Provérbio Chinês
O  resultado   é um reflexo do que foi  solicitado
Menos  tempo   gasto com a solução de defeitos
Confiança  na qualidade do próprio trabalho
Possibilita a  propriedade coletiva  do código
Desenvolvendo  incrementalmente
Nunca se afastando do  real objetivo
E o  resultado  é
E o  resultado  é ?
E o  resultado  é
E o  resultado  é
 
Teste Modele Implemente Teste
 
TDD Descubra o que você realmente quer fazer Modele
TDD Escreva um teste que expresse sua modelagem . Ele deverá  falhar Modele Teste
TDD Escreva o código Modele Teste Implemente
TDD Teste novamente. Desta vez para  passar Modele Teste Implemente Teste
TDD Refatore para melhorar a qualidade da solução Refatore Teste Implemente Teste
Modelagem “ Quando validado, o template “Olá, ${nome} com o valor “Iure” para a variável nome retornará a string “Olá, Iure”
Teste
Falha
Fazendo o teste  Passar
Faça  falhar  novamente  Triangulação com valores diferentes
Faça  Passar   novamente
Faça  falhar  novamente  Renomeando o titulo do teste
Faça  passar   novamente  Apenas funciona para a variável nome
Falhar…
Passar… Refatorar para HashMap
Não se esqueça de  Refatorar
Não se esqueça de  Refatorar Responsabilidades
Não se esqueça de  Refatorar Extract Method Responsabilidades
Não se esqueça de  Refatorar Extract Method Inner line Responsabilidades
Não se esqueça de  Refatorar Extract Method Inner line Responsabilidades Encapsulamento
Não se esqueça de  Refatorar Extract Method Inner line Extract Class Responsabilidades Encapsulamento
 
 
 
Spike Um jeito de tornar o desconhecido  conhecido XP Explorando as várias soluções
Spike Um jeito de tornar o desconhecido  conhecido XP Aprenda  escrevendo testes
Spiking Regex Aprenda  escrevendo testes
Como escrever testes e os fazer passar Estratégias para escolha do teste
Detalhes  x  Visão geral Solução vai de encontro com o que se imaginava Estrat égia para escolha do teste
Incerto  x  Familiar Pegando as frutas mais baixas, resultados mais rápidos Estrat égia para escolha do teste
Maior valor  x  Mais fácil Mais progresso com menos esforço Estrat égia para escolha do teste
Como escrever testes e os fazer passar Estratégias para implementação do teste
Estratégias para implementação do teste Solução paleativa: FAKE Não fique muito tempo no  vermelho
Estratégias para implementação do teste Triangulação Reduza o espaço da solução
Estratégias para implementação do teste Implementação  óbvia
Como escrever testes e os fazer passar Princípios importantes a serem seguidos
Princípios inportantes Vá para o  verde  o mais rápido possível
Princípios inportantes Vá mais devagar depois de um  erro
Princípios inportantes Jamais pule a  refatoração
Conceitos Essenciais
Conceitos Essenciais Fixtures correspondem ao  contexto  da aplicação
Conceitos Essenciais  - Fixtures Estado de todo o  ambiente  de execução
Conceitos Essenciais  - Fixtures Removem duplicação DRY
Conceitos Essenciais  - Fixtures Removem duplicação Don’t RY
Conceitos Essenciais  - Fixtures Removem duplicação Don’t Repeat Y
Conceitos Essenciais  - Fixtures Removem duplicação Don’t Repeat Yourself
Conceitos Essenciais  - Fixtures Removem duplicação DRY Compreensão do Código?
Conceitos Essenciais  - Fixtures Testes com  FOCO Identifique uma floresta por suas árvores
Conceitos Essenciais Objetos falsos  Colaboração / dependência Pretendem ser o que não são O cliente não tem idéia Acabam ...
Conceitos Essenciais Teste baseado no  Estado
Conceitos Essenciais Teste baseado na  interação Testa a interação entre um objeto e seus colaboradores
Conceitos Essenciais Teste baseado na  interação mocks stubs fakes Testa a interação entre um objeto e seus colaboradores
Conceitos Essenciais “ We lean on  interaction-based  testing to verify  how  an object talks to its collaborators; and we...
Conceitos Essenciais Stubs Implementação mais simples possível HARD-CODED
Conceitos Essenciais Fakes Parecem patos, andam como patos e soam como patos.  MAS NÃO SAO PATOS
Conceitos Essenciais Mocks Incorpora asserções que verificam colaboração com outros objetos
Conceitos Essenciais Mocks Normalmente gerados dinamicamente por frameworks:  jMock ,  EashMock ,  FlexMock ,  MockPP
<ul><li>Testando em Equipe </li></ul><ul><ul><li>Muitos desenvolvedores </li></ul></ul><ul><ul><li>Desenvolvimento Distrib...
Quem é responsável ?
<ul><li>Responsabilidade da Equipe </li></ul><ul><ul><li>Todos  são responsáveis </li></ul></ul><ul><ul><li>Viu um problem...
 
Iure Guimarães, 2009 [email_address] Siriusoft ®
Bibliografia blog.briandicroce.com www.lispcast.com Introduction to TDD - Kirrily Robert
Próximos SlideShares
Carregando em…5
×

Introdução a Desenvolvimento Orientado a Testes ( TDD )

2.260 visualizações

Publicada em

Palestra faz parte de um conjunto de assuntos abordados no curso de Metodologias Ágeis ministrado na Universidade Federal de Goiás durante a Semana de Engenharia de 2009

Publicada em: Tecnologia, Negócios
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
2.260
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
86
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Desenvolvimento Orientado a Testes ( TDD )

  1. 1. Iure Guimarães, 2009 [email_address] Siriusoft ®
  2. 2. Resolvendo o problema certo
  3. 3. Resolvendo o problema certo da maneira correta
  4. 4. Códigos ruíns <ul><li>Defeitos </li></ul>
  5. 5. Códigos ruíns <ul><li>Defeitos </li></ul><ul><li>Manutenção </li></ul>
  6. 6. Códigos ruíns <ul><li>Defeitos </li></ul><ul><li>Manutenção </li></ul><ul><li>Produtividade </li></ul>
  7. 7. O problema
  8. 8. Necessidades do cliente
  9. 9. Tarde demais
  10. 11. A Solução
  11. 12. Caixa Branca TDD não é Caixa Preta Regressão Caixa Cinza
  12. 13. TDD não é limitado … Unitários F un cionais Aceitação
  13. 14. SOFTWARE DESIGN
  14. 15. TFD Refatoração
  15. 16. Experience is a harsh teacher because she gives the test first, the lesson afterward. _ Provérbio Chinês
  16. 17. O resultado é um reflexo do que foi solicitado
  17. 18. Menos tempo gasto com a solução de defeitos
  18. 19. Confiança na qualidade do próprio trabalho
  19. 20. Possibilita a propriedade coletiva do código
  20. 21. Desenvolvendo incrementalmente
  21. 22. Nunca se afastando do real objetivo
  22. 23. E o resultado é
  23. 24. E o resultado é ?
  24. 25. E o resultado é
  25. 26. E o resultado é
  26. 28. Teste Modele Implemente Teste
  27. 30. TDD Descubra o que você realmente quer fazer Modele
  28. 31. TDD Escreva um teste que expresse sua modelagem . Ele deverá falhar Modele Teste
  29. 32. TDD Escreva o código Modele Teste Implemente
  30. 33. TDD Teste novamente. Desta vez para passar Modele Teste Implemente Teste
  31. 34. TDD Refatore para melhorar a qualidade da solução Refatore Teste Implemente Teste
  32. 35. Modelagem “ Quando validado, o template “Olá, ${nome} com o valor “Iure” para a variável nome retornará a string “Olá, Iure”
  33. 36. Teste
  34. 37. Falha
  35. 38. Fazendo o teste Passar
  36. 39. Faça falhar novamente Triangulação com valores diferentes
  37. 40. Faça Passar novamente
  38. 41. Faça falhar novamente Renomeando o titulo do teste
  39. 42. Faça passar novamente Apenas funciona para a variável nome
  40. 43. Falhar…
  41. 44. Passar… Refatorar para HashMap
  42. 45. Não se esqueça de Refatorar
  43. 46. Não se esqueça de Refatorar Responsabilidades
  44. 47. Não se esqueça de Refatorar Extract Method Responsabilidades
  45. 48. Não se esqueça de Refatorar Extract Method Inner line Responsabilidades
  46. 49. Não se esqueça de Refatorar Extract Method Inner line Responsabilidades Encapsulamento
  47. 50. Não se esqueça de Refatorar Extract Method Inner line Extract Class Responsabilidades Encapsulamento
  48. 54. Spike Um jeito de tornar o desconhecido conhecido XP Explorando as várias soluções
  49. 55. Spike Um jeito de tornar o desconhecido conhecido XP Aprenda escrevendo testes
  50. 56. Spiking Regex Aprenda escrevendo testes
  51. 57. Como escrever testes e os fazer passar Estratégias para escolha do teste
  52. 58. Detalhes x Visão geral Solução vai de encontro com o que se imaginava Estrat égia para escolha do teste
  53. 59. Incerto x Familiar Pegando as frutas mais baixas, resultados mais rápidos Estrat égia para escolha do teste
  54. 60. Maior valor x Mais fácil Mais progresso com menos esforço Estrat égia para escolha do teste
  55. 61. Como escrever testes e os fazer passar Estratégias para implementação do teste
  56. 62. Estratégias para implementação do teste Solução paleativa: FAKE Não fique muito tempo no vermelho
  57. 63. Estratégias para implementação do teste Triangulação Reduza o espaço da solução
  58. 64. Estratégias para implementação do teste Implementação óbvia
  59. 65. Como escrever testes e os fazer passar Princípios importantes a serem seguidos
  60. 66. Princípios inportantes Vá para o verde o mais rápido possível
  61. 67. Princípios inportantes Vá mais devagar depois de um erro
  62. 68. Princípios inportantes Jamais pule a refatoração
  63. 69. Conceitos Essenciais
  64. 70. Conceitos Essenciais Fixtures correspondem ao contexto da aplicação
  65. 71. Conceitos Essenciais - Fixtures Estado de todo o ambiente de execução
  66. 72. Conceitos Essenciais - Fixtures Removem duplicação DRY
  67. 73. Conceitos Essenciais - Fixtures Removem duplicação Don’t RY
  68. 74. Conceitos Essenciais - Fixtures Removem duplicação Don’t Repeat Y
  69. 75. Conceitos Essenciais - Fixtures Removem duplicação Don’t Repeat Yourself
  70. 76. Conceitos Essenciais - Fixtures Removem duplicação DRY Compreensão do Código?
  71. 77. Conceitos Essenciais - Fixtures Testes com FOCO Identifique uma floresta por suas árvores
  72. 78. Conceitos Essenciais Objetos falsos Colaboração / dependência Pretendem ser o que não são O cliente não tem idéia Acabam fazendo mais rápido do que os reais
  73. 79. Conceitos Essenciais Teste baseado no Estado
  74. 80. Conceitos Essenciais Teste baseado na interação Testa a interação entre um objeto e seus colaboradores
  75. 81. Conceitos Essenciais Teste baseado na interação mocks stubs fakes Testa a interação entre um objeto e seus colaboradores
  76. 82. Conceitos Essenciais “ We lean on interaction-based testing to verify how an object talks to its collaborators; and we lean on state-based testing to verify how well the object listens.” J. B. Rainsberger, author of JUnit Recipes
  77. 83. Conceitos Essenciais Stubs Implementação mais simples possível HARD-CODED
  78. 84. Conceitos Essenciais Fakes Parecem patos, andam como patos e soam como patos. MAS NÃO SAO PATOS
  79. 85. Conceitos Essenciais Mocks Incorpora asserções que verificam colaboração com outros objetos
  80. 86. Conceitos Essenciais Mocks Normalmente gerados dinamicamente por frameworks: jMock , EashMock , FlexMock , MockPP
  81. 87. <ul><li>Testando em Equipe </li></ul><ul><ul><li>Muitos desenvolvedores </li></ul></ul><ul><ul><li>Desenvolvimento Distribuído </li></ul></ul><ul><ul><li>Plataformas diferêntes </li></ul></ul><ul><ul><li>Uma estratégia de testes </li></ul></ul>
  82. 88. Quem é responsável ?
  83. 89. <ul><li>Responsabilidade da Equipe </li></ul><ul><ul><li>Todos são responsáveis </li></ul></ul><ul><ul><li>Viu um problema, conserte ! </li></ul></ul><ul><ul><li>O código é de todos </li></ul></ul>
  84. 91. Iure Guimarães, 2009 [email_address] Siriusoft ®
  85. 92. Bibliografia blog.briandicroce.com www.lispcast.com Introduction to TDD - Kirrily Robert

×