TestDriven Development, Why How and Smells


Published on

These are the slides used in our Mastering Agile Development session in September 2012. It gives some insights into the why, how and smells of doing TestDriven Development

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

TestDriven Development, Why How and Smells

  1. 1. Test Driven Development
  2. 2. Scrum is Hot, but…Many Scrum teams are struggling• Slow down (fewer features/sprint) – More and more production issues – Increased fragility• Requests for ‘refactoring’ stories from development team
  3. 3. Scrum is Hot, but…• Regression testing is demanded – Takes up lots of time in a sprint – Sprints start to lengthen• Documentation becomes an issue because Agile teams “don’t do” documentation.• Technical debt is introduced via “Copy and paste coding”.
  4. 4. 10 Year Agile Manifesto meet up 2011 concluded“As a group, we agreed on the following four belief statements: •Demand technical excellence •Promote individual change and lead organizational change •Organize knowledge and improve education •Maximize value creation across the entire process”
  5. 5. Combine Scrum with XP
  6. 6. Test Driven Development
  7. 7. Uncle Bob About TDD “The act of writing a unit test is more an act of design than of verification. It is also more an act of documentation than of verification.The act of writing a unit test closes a remarkable number of feedback loops, the least of which is the one pertaining to verification of function”
  8. 8. Kent Beck about TDD“TDD encourages simple designs and inspires confidence”
  9. 9. About Unit Testing “A procedure used to validate that individual units of source code are working properly.A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, etc., while in object oriented programming, the smallest unit is a method.”
  10. 10. Why Unit Tests?• Avoid Combinatorial Complexity• Fine grained makes it easy to pin-point defects• Coded documentation that stays in sync• Supports changing the code• Supports collective code ownership
  11. 11. Source: Agile in a Flash by Jeff Langr and Tim Ottinger
  12. 12. Things we forget while coding• SOLID principle – Lower Complexity – Loosely Coupled – Tighter cohesion• Keep focus on Simple Design – YAGNI, DRY• Continues Refactoring
  13. 13. Source: Agile in a Flash by Jeff Langr and Tim Ottinger
  14. 14. TDD mantras
  15. 15. TDD mantrasGiven, When, Then or Arrange, Act, Assert
  16. 16. Source: Agile in a Flash by Jeff Langr and Tim Ottinger
  17. 17. Source: Agile in a Flash by Jeff Langr and Tim Ottinger
  18. 18. START NOW!