Listen to this post
A typical question those adopting TDD ask is: How much testing is enough? Or, put another way, does everything really need to be tested? How do you decide what to test and what not to test?
It’s an interesting question, but I prefer to address it this way: everything will be tested. The real question is, by whom? Will it be you, or someone else?
Defects detected quickly, by you, are addressed in a much cheaper way than those detected and reported by your customers. Those are expensive it terms of the time it takes to find them and in terms of the reputation of your products and your organization overall.
Also, you have to consider the possibility that your customers will encounter a defect and never tell you. That means that: a) they are suffering with it, b) they don’t trust you do fix it, or c) you have created features that nobody uses. These are all bad things.
TDD identifies useful behavior and ensures it is correctly implemented.