Working with greenfield code
This section illustrates the three-step rhythm of writing a failing test, coding enough to make it work, and then refactoring it. This is implied greenfield coding as opposed to working with an existing legacy code.
TDD is an evolutionary development approach. It offers test-first development where the production code is written only to satisfy a test, and the code is refactored to improve the code quality. In TDD, unit tests drive the design. You write the code to satisfy a failing test, so it limits the code you write to only what is needed. The tests provide fast automated regression for refactoring and new enhancements.
Kent Beck is the originator of Extreme Programming and TDD. He has authored many books and papers. Visit http://en.wikipedia.org/wiki/Kent_Beck for details.
The following diagram represents the TDD life cycle:
First, we write a failing test, then add code to satisfy the failing test, and then refactor the code and again start with another test...