Test driven development (TDD) is a software development process that emphasizes the creation of tests for all functionality in a piece of software. Before adding a new feature, the developer first writes one or more tests for the feature which will fail (due to the feature not being implemented yet). At this point, the developer will write just enough code so that the previously defined tests pass. If tests have not been written for various edge cases or subtleties of the feature, these conditions will not be handled in the implementation.