Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TDD - Desenvolva com confiança

Marcelo
December 06, 2014

TDD - Desenvolva com confiança

Apresentação sobre TDD na poa.tchelinux.org. Nesta palestra Marcelo fala um pouco sobre as vantagens e os desafios de se implementar TDD

Marcelo

December 06, 2014
Tweet

More Decks by Marcelo

Other Decks in Programming

Transcript

  1. 6/12/2014 about.me/mjacobus 7 - testar cada caso de uso -

    testar contra terrorismo de usuário - testar diferentes versões de browsers, bancos, versões de libs
  2. 6/12/2014 about.me/mjacobus 16 RED - Escreva um teste simples -

    Execute-o - Assista o teste FALHAR MISERAVELMENTE
  3. 6/12/2014 about.me/mjacobus 17 GREEN - Escreva o código mais simples

    possível que faça o teste passar - Somente o necessário para para fazer o teste passar
  4. 6/12/2014 about.me/mjacobus 26 REFACTOR - Simplifique se possível - Rode

    o teste a cada pequena alteração e tenha certeza que os testes continuem passando
  5. 6/12/2014 about.me/mjacobus 29 Benefícios ✔ Feedback (quase) instantâneo ✔ Teste

    de regressão em baixo nível - Quanto menos bugs vão para staging/production melhor! ✔ Habilidade de melhorar o design sem medo de quebrar (refactoring) ✔ Testes unitários são uma forma de código de exemplo
  6. 6/12/2014 about.me/mjacobus 30 Benefícios ✔ Incentiva planejamento de codificar -

    Mantém focado - Melhor design ✔ Ajuda a entender melhor as regras de negócio ✔ Dá direção - Pode ficar trancado em como testar o próxima requisito, ou como fazer um teste passar, mas normalmente se sabe o que precisa fazer no momento e o que fazer a seguir ✔ Reduz o custo de bugs - Bugs encontrados a mais cedo são mais fáceis de corrigir - TDD ajuda a encontrar bugs em minutos, em vez de dias/meses
  7. 6/12/2014 about.me/mjacobus 31 Benefícios ✔ Testes unitários estimulam melhor design

    - Força a definir qual a responsabilidade do código - SOLIDer - Maior coesão + Menor acoplamento == Good Code
  8. 6/12/2014 about.me/mjacobus 32 Benefícios ✔ Demonstra progresso concretamente - Não

    precisa esperar que funcionalidades fiquem completamente prontas para saber se funciona - Você sabe quando o código está "pronto", pois ele faz aquilo que projetou para ele fazer - Sensação de realização a cada teste/classe/dia
  9. 6/12/2014 about.me/mjacobus 33 Benefícios ✔ Mais rápido que escrever código

    sem testes! - (a não ser que o código não precise funcionar) - A maior parte do esforço do desenvolvedor está em corrigir código depois que ele é “pushado” pro repositório
  10. 6/12/2014 about.me/mjacobus 35 Benefícios ✔ Documentação ✔ Code coverage ✔

    Continuous Integration/Delivery - Muito importante em projetos open source
  11. 6/12/2014 about.me/mjacobus 44 Como/onde começar • PHP – PHPUnit –

    Behat – Pspec • Javascript – QUnit – Jasmine • PhantomJS • Ruby – MiniTest – Rsec – Cucumber
  12. 6/12/2014 about.me/mjacobus 45 - Github Zend Laravel Doctrine Aura Koine

    - Vídeos ZendCasts.com CodeSchool.com code.tutplus.com railscasts Como/onde começar
  13. 6/12/2014 about.me/mjacobus 47 Desafios - Pode demorar a cair a

    ficha - 2-4 meses de redução de produtividade depois de começar - Exige disciplina - Exige mente aberta - Convencer chefes, colegas, etc