Here's a nice video from NetObjectives on a new hybrid form of test driven development called "Acceptance Test-Driven Development" (ATDD) where UAT is integrated directly with unit testing:
Unit tests are typically done to reduce technical debt, but usually at a cost of increasing development efforts. As in everything in life, nothing is free but if executed well, the benefit to cost ratio usually weighs to the positive side when unit tests are employed correctly.
ATDD seems to offset the increase in development efforts since it allows the whole team to collaboratively discusses acceptance criteria, with examples, and then distills them into a set of concrete acceptance tests before development begins. This ensures that everyone has the same shared understanding of what is actually being built. It may also facilitate a better shared understanding and definition of what it means to be Done.
For those in software development doing Scrum and XP, I'd advise looking into this.



