Test Driven Development (TDD) is a software development process that relies on the repetition of a very short development cycle. Requirements are turned into test cases, then the software is developed to pass the tests. In other words, it creates a safety net that serves to keep the developer's problems or bugs at bay while enabling the developer to refactor efficiently. This is opposed to software development that allows software to be added that is not proven to meet requirements.
Allows developers to create smaller units of improvement as initially code should only aim to pass the tests.
Leads to more modular and flexible code as it will be developed in smaller independent units.
Generates faster feedback, for example by telling you whether your last change (or refactoring) has broken some previously working code.
Creates a detailed specification.