Test-driven design (TDD) is an
evolutionary approach to software development which combines test-first development where
you write a test before you write just enough production code to fulfill that
test and refactoring. TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism. It's about specification not validation of code.
Kent Beck popularized TDD in eXtreme Programming