The seven principles of software testing are: 1) testing shows the presence of defects but not their absence, 2) exhaustive testing is impossible due to time and resource constraints, 3) early testing is more cost effective than later testing, 4) defect clustering means focusing testing on the 20% of code with 80% of defects, 5) repeating the same tests (pesticide paradox) may not find new defects so tests must evolve, 6) testing approach depends on the software context, and 7) absence of errors does not mean the software is usable if requirements are wrong.