Test-first development is an approach to code software systems. More than that, it's the approach I use in my daily coding work and that I advocate in this tutorial. Test-first is much more than a quality-assurance activity; it drives the software design towards easy testing and simplicity. That's why test-first development is also called test-driven development or even test-driven design [Beck02]. The following points describe the most important aspects of the test-first approach.

This small set of rules may appear arbitrary to some programmers and contradict their personal experiences. Kent Beck [02] does an excellent job at showing the obvious and not so obvious reasons why test-driven development is a sound idea. The goal of this tutorial is to show how test-driven development looks in practice and to convince you that it actually works. Some of its benefits are obvious.

Don't get me wrong, though: test-driven coding can be difficult and trying; it is no silver bullet either. That's why another goal of this tutorial is to show typical test-first problems and to explain when it is acceptable or even necessary to depart from the rules.

Many experienced and successful software developers who have been engaged mainly in design-first programming during their professional careers are sceptical about the idea of a design that develops gradually in small steps. All these skeptics are encouraged to temporarily forget about their doubts, experiment with the approach (for not too short) a while, and then judge. For one phenomenon can only be experienced when you try it yourself: in contrast to subsequent testing, creating test cases before the app code is really fun!