Nathaniel Neitzke Lighthouse1, LLC
Test driven development Where did it come from? What is it?
Why automated tests? To verify correctness?
Confidence Ability to change
Isolation Debugging is hard, time consuming
Design BDUF Goldplating
Documentation What does this code do?
Testability Send quality code to QA
So what’s wrong with tdd? Focus on tests so it must be testing right? Sapir-Whorf
The problem with “unit” What is a unit? Unit test -> class
Programmers think… I’m not going to write all those tests It’s really simple code, it doesn’t need to be tested Testing is a waste of time I’ve done this all a million times (loops, data retrieval, functionality, etc…)
Manager’s think… We test after the code is done That’s what we have a testing person for We can’t spend that time now
Behavior driven development TDD done very well Not about tests Think differently Dan North/Aslak Hellesøy 2004
Specifications Executable specifications around the behavior of your system
User stories Conversation between customer and developer Drive our executable specifications Role, feature, benefit As a [role] I want [feature] so that [benefit]
Scenarios Detail acceptance criteria for a particular user story Context – Action – Observation Given [Context] When [Action] Then [Observation]
Format Title (one line describing the story) Narrative: As a [role] I want [feature] So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: Given [context] And [some more context]… When [event] Then [outcome] And [another outcome]…. Scenario 2: ….
rspec & cucumber Frameworks/Tools
DEMO
.NET Frameworks NBehave, .NETSpec Machine.Specifications
Other Tools TextMate/e Autotest Heckle Rake RCov
Resources Dan North RSpec Cucumber IronRuby Beyond Test Driven Development Video The RSpec Book: BDD with RSpec, Cucumber, etc..
Questions?