Let's discuss what tests are for, and let those thoughts evolve into guide lines for a good testing philosophy. This talk is based on my experiences, both good and bad, and will offer advice for testing throughout the lifetime of your program. I will also discuss some pitfalls that are easy to fall into, and how to avoid them. The primary focus will be on unit-testing, but the philosophy and conventions are applicable to many more types of tests.