The long and arduous journey of software development has taken many twists and turns in the past decades, and one of the prominent software engineering technique is nonetheless TDD.
For more details and documents on TDD refer to http://agiledata.org/essays/tdd.html.
In a nutshell, TDD is a software development practice in which the development cycle begins with writing a test case that will fail, then writes the actual software to make the test pass, and continues to refactor and repeat the cycle till the software reaches the acceptable level. This process is depicted in the following diagram: