Growing oos guided_by_tests entire

382 visualizações

Publicada em

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
382
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Growing oos guided_by_tests entire

  1. 1. Growing Object Oriented Software Guided By Tests.
  2. 2. Introdução Uma leve introdução de como testes podem criar aplicações confiáveis e ainda sim com design fácil de ser alterado e expandido e o porque da necessidade de ser escrever o teste antes.
  3. 3. TDD - Presentation  Testes feitos antes do código em si.  Confiabilidade e flexibilidade. Usado especialmente em agile software, práticas XP e Scrum projects.
  4. 4. TDD - Learning Desenvolvimento de software como aprendizado. “Antecipar as alterações não antecipáveis (To antecipate unantecipated changes)”
  5. 5. TDD - Benefits  Ideia clara do próximo passo. Escrever componentes pouco acoplados. Detectar erros quando “frescos” na mente.
  6. 6. TDD - Benefits  Fazer apenas o necessário.  Deploy contínuo.  Lógica separada do design do código
  7. 7. “Never write new functionality without a failing test”.
  8. 8. TDD - Refactoring  Pensar apenas no local da alteração e agir somente nesse local.  Confusão entre conceitos com refactoring com redesign.
  9. 9. Qualidade interna e externa
  10. 10. Níves de testes  Acceptance: O sistema está em completo funcionamento?  Integration: O código funciona contra um código que não se pode alterar?  Unit: Nossos objetos fazem a coisa certa? Eles estão funcionando?
  11. 11. Ciclo de feedback interno e externo Write a Make Write a failing the unit test failing test pass acceptance test Refactor
  12. 12. Extenal quality Amount of feedback Internal quality unit integration end-to-end
  13. 13. TDD com objetos  Diferenciar os papéis, as responsabilidades e os colaboradores.  Algumas técnicas como CRC cards podem ser usadas para reprensentar os papéis.
  14. 14. Coupling and cohesion  Acomplamento  Alto acoplamento: Quando altera-se um objetos e há necessidade de alterar outros.  Baixoacoplamento: Quando altera-se objetos e consequentemente, com pouca ou sem necessidades de alterar outros.
  15. 15. Coupling and cohesion  Coesão  Em OO é quando uma classe tem um propósito bem claro e definido.
  16. 16. TDD – web of objects  Em geral, um objeto deve ter apenas uma ligação com o seu “vizinho”.  Siga as “mensagens”: em Java por exemplo, para identificar-se os papéis do sistema usa-se o conceito de interfaces.  Pode-se usar CRC cards para tentar definir as funcionalidades de um sistema.
  17. 17. CRC card Game Engine Displays game state Renderer Updates game state Animator Resolves collisions Collision Detector
  18. 18. TDD with objects  Tell, don’t ask.  Métodos que ao invés de “perguntarem” para a classe, simplesmente “dizem” o que a classe deve fazer.
  19. 19. Ao invés de usar isso ((EditaSaveCustomizer) master.getModelisable() .getDockablePanel() .getCustomizer()) .getSaveItem().setEnabled(Boolean.FALSE)); Use isso master.allowSavingOfCustomisations();
  20. 20. TDD with objects  But sometimes ask.  Algumas vezes é necessário perguntar a classe o que fazer.
  21. 21. Ao invés de usar isso public void reserveSeats(ReservationRequest request) { for(Carriage carriage : carriages) { if (carriage.getSeats().getPercenReserved() < this.percentReservedBarrier) { .... } }
  22. 22. Use isso public void reserveSeats(ReservationRequest request) { for(Carriage carriage : carriages) { if (carriage.hasSeatsAvailableWithin( this.percentReservedBarrier)) { .... } }
  23. 23. Unit-test and collaborators
  24. 24. TDD - TOOLS  Junit4  Jmock2  Hamcrest Matchers
  25. 25. Conclusão O livro Growing Object-Oriented Software, Guided by tests inicialmente mostra uma pequena introdução sobre como crescer de forma “incremental” usando testes e as principais ferramentas do mercado.
  26. 26. Referências  Livro Growing Object-Oriented Software, Guide By Tests by Steve Freeman and Nat Pryce. October 2009.  All of ilustrations inside this presentation had taken from the book above mentioned.  CRC model from http://www.agilemodeling.com/artifacts/crcModel.htm.  Law of Demeter from http://en.wikipedia.org/wiki/Law_of_Demeter.

×