Test-Driven Development
This practice develops tests prior to implementing the code and uses those tests to drive the implementation.
Relationships
Main Description

The Test Driven Development practice reduces time to market by reducing the amount of time needed to integrate and stabilize builds. It improves productivity by finding and fixing errors close to the time they're introduced. And it increases the overall quality of the software by guaranteeing all new code has been tested, and all existing code has been regression tested, prior to check-in.

Developers use TDD to create the [Software Implementation] and the Developer Tests.

TDD has a simple flow: Create a new test to validate a planned change/addition to the software. Run the test to perform a sanity check - it should fail since no software has been written for it yet. Make a small change, refactor the code, and run the test. Keep changing/refactoring/testing until the test passes and the code is in a robust, well-factored state. Then begin the cycle again on a new small piece of the solution.



TDD Practice Information

See the How to Adopt this Practice for information on navigating the TDD Practice.

History

TDD was originally part of Kent Beck's Extreme Programming process. It's now also used in many other Agile and non-Agile contexts.