Testing is a difficult area. Unit testing is good, especially when making changes to software that you already know works. It does rely on the fact that you have written your tests correctly. Also, getting close to 1005 code coverage means spending as much or more time writing tests as writing the app. That only tests individual methods too. You still have to perform integration tests user acceptance tests. When you get to the higher levels, there are tools around that can help but there's only so much they can do. Often you will have to write your software in such a way as to make it testable and automated tests don't create themselves, so that's more work.