Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Test Driven Design - GDG DevFest Istanbul 2016

234,412 views

Published on

TDD is the elengant way of designing software. People scares from it so much, because software design is hard and it requires discipline. In this talk, I tried to describe what TDD is from software design perspective.

Published in: Software
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/u8dlexw } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/u8dlexw } ......................................................................................................................... Download Full doc Ebook here { https://tinyurl.com/u8dlexw } ......................................................................................................................... Download PDF EBOOK here { https://tinyurl.com/u8dlexw } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/u8dlexw } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/u8dlexw } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1url.pw/tWzTC ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • How Brainwave Frequencies Can Change Your Life! ▲▲▲ https://bit.ly/30Ju5r6
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Start working at home with Google! Just work for few hours and have more time with friends and family. I earn up to $2700 per month. It's a great work at home opportunity. I can't believe how easy it was once I tried it out ........................................................................................................................ ..................................................................................................................................................... Visit for more details☛☛☛☛☛☛☛ { http://bit.ly/2JqcEWE } ...................................................................................................................................... Visit for more details☛☛☛☛☛☛☛ { http://bit.ly/2JqcEWE } ...................................................................................................................................... Visit for more details☛☛☛☛☛☛☛ { http://bit.ly/2JqcEWE } ...................................................................................................................................... Visit for more details☛☛☛☛☛☛☛ { http://bit.ly/2JqcEWE } ...................................................................................................................................... Visit for more details☛☛☛☛☛☛☛ { http://bit.ly/2JqcEWE } ...................................................................................................................................... Visit for more details☛☛☛☛☛☛☛ { http://bit.ly/2JqcEWE } ......................................................................................................................... ......................................................................................................................... ...............................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • good share
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Test Driven Design - GDG DevFest Istanbul 2016

  1. TEST DRIVEN DESIGNLEMi ORHAN ERGiN software craftsman @ acm
  2. LEMi ORHAN ERGiN agile software craftsman @ acm /lemiorhan lemiorhanergin.com @lemiorhan managing partner at acm developing since 2001 worked at Sony and eBay/GittiGidiyor consultant, architect, trainer, developer founder of Software Craftsmanship Turkey ex product owner of Agile Turkey Summit meetup.scturkey.org summit.agileturkey.org
  3. Jack W. Reeves The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf What is So!ware Design?
  4. Source code is the real so!ware design Designing so!ware is an exercise in managing complexity Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  5. The so!ware design is not complete until it has been coded and tested Testing is part of the process of refining the design Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  6. Programming Source Code SOFTWARE DESIGN Test and Verification
  7. The very first value of so!ware is… Robert C. Martin Author of Clean Code and Clean Coder Owner of cleancoders.com training site
  8. The very first value of so!ware is to tolerate and facilitate on-going changes Robert C. Martin Author of Clean Code and Clean Coder Owner of cleancoders.com training site
  9. Each city has to be renewed in order to meet the needs of its populace. So!ware-intensive systems are like that. Grady Booch Developed UML Wrote foreword to “Design Patterns” and “Technical Debt” books Istanbul, TurkeyCredit: European Space Imaging
  10. Programming Source Code SOFTWARE DESIGN Refactoring Test and Verification
  11. Everything is part of the design process Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  12. but… we develop without driving the design
  13. nebulaconcepts and terminology trigger ideas about the design what we really do in general…
  14. proto-star initial classes containing the logic simple structure, basic domain model and behaviors
  15. brown dwarfbasic dependencies, works as we expect utility classes start to occur
  16. main sequence star needless complexity starts, a lot of inter-dependencies manual testing starts to take longer time than usual
  17. hard to add new features too much debugging too many workarounds too complex to know every flow red giant
  18. blue-white super giant single change affects many areas, no reuse - duplication hell, fragile system - unstable prod scary refactoring, silos occur
  19. red super giant huge classes, tons of workarounds, no new features, maintenance mode rules, basic implementations take weeks, no one knows how overall system works, rollbacks a!er deployments, architect saves the company
  20. supernova employee turnovers, frustrated management, blame & fight
  21. black hole deadly loop of total rewrite or exit from the market
  22. Programming Source Code SOFTWARE DESIGN Refactoring Test and Verification
  23. Programming Source Code SOFTWARE DESIGN Refactoring good? Test and Verification
  24. COUPLING When readfile() is changed, do you change writeFile() too? It shows how many places we need to change
  25. Two elements are loosely coupled if they are not shown in the same diff Kent Beck The creator of extreme programming One of the signatories of the Agile Manifesto Pioneered software design patterns and TDD
  26. COHESION Do you search a lot where to change? It shows how easy to find the places we need to change
  27. How many files at any one time is still open for edit shows the level of cohesion Nat Pryce Co-Author of Growing Object-Oriented Software Guided by Tests Early adopter of XP
  28. Programming Source Code SOFTWARE DESIGN Refactoring Low Coupling Test and Verification High Cohesion
  29. Programming Source Code SOFTWARE DESIGN Refactoring is hard and needs discipline! Test and Verification High CohesionLow Coupling
  30. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  31. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  32. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  33. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  34. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  35. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  36. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  37. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  38. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  39. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  40. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  41. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  42. small set of entities few lines in methods follows OOP design guidelines simple design, names are the intensions marbles
  43. If you really want to see something interesting:) ursa minor and polaris
  44. LEMi ORHAN ERGiN agile software craftsman @ acm /lemiorhan lemiorhanergin.com @lemiorhan

×