Test Driven Development (TDD)
TDD process gives your confidence in the delivered code for the following things.
1. TDD can remove duplication of code and also disciplines the developer to intend in his mind on giving what is absolutely necessary. That means the system you create only does what it is supposed to do because you first write test cases for the business needs and then write the needed functionality to satisfy the test cases.
2. These unit tests can be repeatedly play to alert the development team immediately if someone divides any existing functionality. All the unit tests may be play overnight as part of the deployment process and test results may be emailed to the development process team.
3. TDD ensures that message becomes thoroughly unit tested. It is not right to write thorough unit tests if you leave it to the end due to lack of motivation, deadline pressures etc.
4. TDD complements design by contract methodology and receives the developer thinking in terms of post and pre conditions as well as exceptions.
5. When using TDD, tests drive your message and to some extent they assist you in validating your design at an earlier stage.
6. TDD also gives you refactor your message with confidence that if it breaks the business program it receives picked up when you run your unit tests next time.
7. TDD creates design to interface not implementation design concept. E.g: when your code has to take input from a device or an external source which is not allow at the time of writing your unit tests, you need to make an interface, which takes input from another device in order for your tests to work.