I can't find a link for a really useful article I received today via email on software testing. (Subscribe to Eiffelworld newsletter) (No attempt to insert whole article here, but here's the 7 principles. Read the article for explanations.)
Principle 1: Definition of software testing
To test a program is to try to make it fail.
Principle 2: Tests versus specs
Tests are no substitute for specifications. One can derive tests from specifications, not the other way around.
Principle 3: Regression testing
Any failed execution must yield a test case, to remain permanently part of the project's test suite.
Principle 4: Applying oracles
Determining success or failure of tests must be an automatic process.
Principle 5: Manual and automatic
An effective testing process must include both manually and automatically produced test cases.
Principle 6: Empirical assessment of testing strategies
Evaluate any testing strategy, however attractive it may appear in principle, through objective assessment based on explicit criteria and a reproducible testing process.
Principle 7: Assessment criteria
The most important property of a testing strategy is the number of faults (or, if faults are not directly measurable, failures) it uncovers as a function of testing time.