Test-Driven Development. It's a practice that was made popular by XP (eXtreme Programming). The theory goes something like this:
- Start with no code and no tests.
- Write a test.
- Run that test and see it fail. (Remember, you have no code, yet.)
- Write the absolute minimum amount of code to pass the test.
- Run that test and see it pass.
- Check it into source control
- Goto #2
At all times, your entire test suite should always pass, except for the one test that you're currently failing because that's the one specific piece of the spec that you're currently implementing. Whatever is in source control should always pass all the tests. Theoretically, you have 100% code coverage (as reported by Devel::Cover) because you never wrote a piece of code without having written the test for it first.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?