by Robert C Martin (uncle bob)
1. Don't write production code except to pass a failing test
Writing Tests !== TDD
2. Write only enough test code to demonstrate a failure
3. Write only enough production code to pass the test
But most importantly:
No fear in refactoring, maintaining and enhancing your application
Bottom line - The test suite has holes