testdriven development, why how and smells
DESCRIPTION
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 DevelopmentTRANSCRIPT
Test Driven Development
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
• 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”.
Scrum is Hot, but…
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”
Combine Scrum with XP
Test Driven Development
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”
Kent Beck about TDD
“TDD encourages simple designs and inspires confidence”
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.”
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
Source: Agile in a Flash by Jeff Langr and Tim Ottinger
Things we forget while coding
• SOLID principle– Lower Complexity– Loosely Coupled– Tighter cohesion
• Keep focus on Simple Design– YAGNI, DRY
• Continues Refactoring
Source: Agile in a Flash by Jeff Langr and Tim Ottinger
TDD mantras
TDD mantrasGiven, When, Then or Arrange, Act, Assert
Source: Agile in a Flash by Jeff Langr and Tim Ottinger
Source: Agile in a Flash by Jeff Langr and Tim Ottinger
START NOW!