Styles of TDD: First Tests
It’s easy to speak of test-driven development as if it were a single method, but there are several ways to approach it. In our experience, different approaches lead to quite different solutions.
In this workshop, we’re not trying to decide which approach is best. Rather, we’ll use concrete examples to explore
- What goes into the moment of decision when a test is written?
- How do you think about the problem you’re trying to solve?
- What strategies or techniques help you write the first few tests?
This workshop is targeted at TDD/BDD Practitioners.
20 minutes - Introduction
120 minutes total: Create examples of first tests. (For 3 systems at approximately 40 minutes each)
Given a brief specification of a system:
Write tests for 5-10 minutes - the first few tests you would write in real life (but without actually implementing anything).
Sketch out how you’d evolve the system from there - for 5-10 more minutes.
Reflect for 20 minutes on how you decided what test to write.
To analyze the results, we’ll first characterize the styles used (e.g., Outside-In, Interaction-Based, Presenter-First).
Then we’ll share our reflections on writing first tests, and try to identify:
Strategies/techniques for dividing the problem
Strategies/techniques for transforming the problem
Strategies/techniques for identifying the next move
Characteristics of the problem that made it mesh well with our approach
40 minutes, Closing Analysis - We’ll review all the examples together and see if any trends have emerged.
The output of the workshop would be a list of avatars of TDD we see emerging, and ideas and techniques for how to write tests.
Background material: “Avatars of TDD” by Naresh Jain, http://blogs.agilefaqs.com/2007/12/14/avatars-of-tdd/
Summary of last year’s workshop : http://agile2008toronto.pbwiki.com/Styles-of-TDD
- The participants will understand and appreciate different styles of doing TDD. We hope to discover new styles of TDD and what thinking goes on when someone writes their first test.

Add to calendar