TDD is not about code coverage, it's about how you design your code. The TD stands for "test-driven", meaning that tests are used as a tool to push implementation forward. It doesn't focus on the tests itself, they are only the measure of completion for a specific unit of code when applying TDD. The code coverage and documentation are merely welcome and useful side effects. Obviously, it takes practice and you need to know how to write tests well. The latter is true for code of any kind, but knowing how to write good tests and applying TDD can also foster better production code.
Ákos Kőműves It all depends on the complexity of the app and the business logic. Small apps with a lot of reused (and hence tried & tested code) may need less unit tests and integration tests may be sufficient. However, I believe that practice makes perfect and it would be wise in my opinion to apply TDD whenever possible to come up with a solid code design.