O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Pensando TDD

945 visualizações

Publicada em

Uma reflexão sobre desenvolvimento de software, qualidade e como o TDD pode nos ajudar a melhorar em tudo isso.

A versão em PPT, que possui comentários adicionais para cada Slide, pode ser baixada no Google Drive: https://drive.google.com/folderview?id=0B4k-4pdeaM58SEpYcHZSbFdoS0E&usp=sharing

Para maiores informações sobre a palaestra, acesse: http://luizricardo.org/2014/10/pensando-tdd/ ‎

Publicada em: Software
  • Seja o primeiro a comentar

Pensando TDD

  1. 1. Pensando TDD 08/10/2014
  2. 2. Direitos Autorais Você está autorizado e incentivado a distribuir este material. Copie, compartilhe e modifique, apenas cite a fonte.
  3. 3. Autoria Luiz Ricardo luizricardo.org facebook.com/StateOfTheArtBlog
  4. 4. Código-fonte O código dos exemplos práticos pode ser obtido no link: https://github.com/utluiz/tdd-example
  5. 5. Porque software?
  6. 6. $$$???
  7. 7. Software de Qualidade Faz o que deveria fazer SEM ERROS
  8. 8. Software de Qualidade Funciona
  9. 9. Dificuldades do Software Abstrato Sem representação visível Dificuldade em identificar requisitos
  10. 10. Dificuldades do Software Singular Cada um é diferente
  11. 11. Dificuldades do Software Mutável 1 bit muda tudo
  12. 12. Dificuldades do Software Complexo Simplificação Perda de informação
  13. 13. Expectativa Realidade
  14. 14. Como fazer software de qualidade?
  15. 15. Teste Teste Teste Teste Teste
  16. 16. TDD Test-Driven Development Metodologia ágil de desenvolvimento de software cujo objetivo é gerar código limpo que funciona
  17. 17. Fases do Desenvolvimento Tradicional Projeto Implementação Teste
  18. 18. Mudanças acontecem...
  19. 19. Correção de Bugs Custo por fase Design Implementação Teste Manutenção
  20. 20. Fases do Desenvolvimento TDD Projeto/Teste Implementação
  21. 21. Definição de “Pronto” Quando terminamos uma nova funcionalidade?
  22. 22. Definição de “Pronto” Código
  23. 23. Definição de “Pronto” Código limpo
  24. 24. Definição de “Pronto” Código limpo Testado
  25. 25. Definição de “Pronto” Código limpo Teste automatizado
  26. 26. Definição de “Pronto” Código limpo Teste automatizado Deploy automatizado
  27. 27. Definição de “Pronto” Código limpo Teste automatizado Deploy automatizado Documentado
  28. 28. Ciclo de Vida do TDD Vermelho Refatore Verde
  29. 29. Ciclo de Vida do TDD O “Mantra” Vermelho, verde, refatore Vermelho, verde, refatore Vermelho, verde, refatore Vermelho, verde, refatore ...
  30. 30. Ciclo de Vida do TDD Vermelho 1. Escreva um teste que falhe Refatore Verde
  31. 31. Ciclo de Vida do TDD Vermelho 1. Escreva um teste que falhe Refatore Verde 2. Faça funcionar
  32. 32. Ciclo de Vida do TDD Vermelho 1. Escreva um teste que falhe Refatore Verde 2. Faça funcionar 3. Faça direito
  33. 33. Ciclo de Vida do TDD Por que separar? Faça direito Faça funcionar Refatore Verde
  34. 34. Ciclo de Vida do TDD
  35. 35. Valores do TDD • Foco na qualidade • Código “documentado” • Sem medo de mudanças
  36. 36. Só mais uma coisa...
  37. 37. Dificuldades do TDD • Qualidade tem custo • Indefinição • Design ruim
  38. 38. Desenvolvimento de Software Metáforas
  39. 39. Desenvolvimento de Software Amador ou Artesão?
  40. 40. Princípios de Design OO S.O.L.I.D. Single Responsibility Principle Open/close principle Liskov substitution principle Interface segregation principle Dependency inversion principle
  41. 41. Testando... 1, 2, 3 Testes unitários Testa uma porção individual do código, como uma função, método ou classe.
  42. 42. Testando... 1, 2, 3 Asserções Verificações de pré e pós-condições do teste
  43. 43. Testando... 1, 2, 3 Objetos Mock Objetos usados em testes que simulam o funcionamento de um objeto real
  44. 44. Testando... 1, 2, 3 Tipos de teste Integração Carga Estresse Desempenho Resiliência Aceitação Cobertura Regressão
  45. 45. Ferramentas Plataforma Java • Teste unitário JUnit, TestNG • Teste de integração (web) Selenium/Web Driver, HtmlUnit, UFT/QTP • Mocks Mockito, JMock, PowerMock, EasyMock
  46. 46. Ferramentas • Teste de cobertura EclEmma Plataforma Java
  47. 47. Prática Demonstração • Testes unitários – Calculadora com JUnit • Teste web – Pesquisa no Google com WebDriver (Internet) – Navegação entre duas páginas
  48. 48. Conclusões Test-Driven Development • Não é uma solução mágica • TDD não é sobre TDD • TDD é um exercício diário • TDD é disciplina
  49. 49. Pratique!
  50. 50. Perguntas? Não tenha medo...

×