By Mike Hill, Joshua Kerievsky

How can you increase the speed and joy of software development while decreasing the stress of modifying code? Test-Driven Development can help! TDD is a rhythm, a design technique, a development process and a revolution, all in one.

Get this Album

Volume Licensing

Have Any Questions?


Code with Confidence: Learn & practice Test-Driven Development to improve your code quality and speed. Learn more...
Instant Critiques: Take a TDD exercise and get instant feedback from our automated band of experts. Learn more...

Expert Videos: Learn tools & techniques by watching short videos from industry experts. Learn more...
Integrated Forums: Ask questions, get expert replies and read fascinating discussions. Learn more...


  • 3-5 hours of content
  • 115 pages
  • A Catalog of TDD Patterns
  • 14 Videos
  • 2 Exercises
  • 3 Interactive Quizzes
  • A TDD Flowchart
  • Automated TDD Critique
  • Support for Visual Studio


You Are Here 3
Test-Driven Development In One Sentence 4
Some TDD -Isms 5
Why Adopt TDD? 6
This Album 7
A First Look At The TDD Cycle ← Click to Preview 9
Keyword: Red 10
Getting To Red 11
Keyword: Green 12
Getting To Green 13
It Isn't Easy Getting to Green 14
Keyword: Refactor 15
Refactorings In The TDD Cycle 16
Refactoring Is Critical 17
Keyword: Integrate 18
Integration 19
Continuous Integration 20
This Will Never Work! 22
We Only Have Hard Defects Here 23
It All Boils Down to Expectations… 24
TDD Will Not Validate Our System 25
Tests+Code > Just Code ← Click to Preview 26
An End To The Arguments? 27
Introducing TDD Patterns 29
Essence First 30
Essence First Video 31
Test First 32
Test First Video 33
Assert First 34
Assert First Video 35
Frame First ← Click to Preview 36
Frame First Video ← Click to Preview 37
Good Or Bad Framing? 38
Do The Simplest Thing That Could Possibly Work 39
Do The Simplest Thing That Could Possibly Work Video 40
Break It To Make It 41
Break It To Make It Video 42
Refactor Mercilessly 43
Refactor Mercilessly Video 44
Test Driving 45
Test Driving Video 46
TDD Cycle Deeper Look Video 48
Why Record? 50
The Steps You'll Take 51
Step 1. Install the Recorder 52
Step 2. Download the Exercise 53
Step 3. Import the Exercise 54
Step 4. Perform the Exercise 55
Step 5. Upload the Archive 56
Step 6. Critique Your Performance 57
Remaining Issues 58
Carry On! 59
The Purpose of this Exercise 61
Critiquing Your Performance 62
Proceed with Caution 63
Installing the Recorder 64
Download the Code 65
Exercise Instructions 66
Upload Your Work 67
A Graph of Your TDD Activity 68
Your Critique Results 69
Your Customized Feedback 70
Our Solution 71
TDDing Big Bill's Billing System ← Click to Preview 73
Some Advice Before You Begin 74
Critiquing Your Performance 75
Installing the Recorder 76
Setup 77
An Exercise Composed of Four Tasks 78
Task 1: Calculate A Simple Phone Bill 79
Task 2: Calculate Excess Minutes 80
Task 3: Calculate Family Discount 81
Task 4: Calculate Complete Phone Bill 82
Upload Your Work 83
A Graph of Your TDD Activity 84
Your Critique Results 85
Your Customized Feedback 86
Task 1 Solution ← Click to Preview 87
Task 2 Solution 88
Task 3 Solution 89
Task 4 Solution 90
An Alternative Solution 91
A Third Solution 92
The Secret To TDDing GUI's 94
The Open Dialog 95
A Naive Implementation 96
The Thick Black Line 97
Model: The Dialog Without The GUI Parts 98
Models Don't Speak GUI 99
View: All GUI, All The Time 100
How The Split Helps 101
The Meta-Pattern: Split Along TDD-Happy Lines 102
Does TDD Eliminate Formal Design? 104
What Is Design, Anyway? 105
A Massively Experienced TDD Team ← Click to Preview 106
Where's My Design? 107
Inverted Design? 108
Distributed Design 109
Incremental Design 110
The Stepwise Premise 111
Architecture 112
Architecture Story 113
Conclusion 115

Related Items

Supported Browsers

  • Latest Firefox
  • Internet Explorer 8+
  • Latest Chrome
  • Latest Safari

Operating Systems

  • Windows
  • Linux
  • Mac OS X

Development Tools

You can use whatever developments tools you prefer. If you do use an IDE (Integrated Development Environment), many (though not all) of our labs come with projects pre-configured for Eclipse, IntelliJ and Visual Studio.

Speakers or headphones are required for our videos.

Flash is required to view charts or watch videos — download for free.