Learning Summary: Seven Principles of Software Testing
These notes cover the Seven Principles of Software Testing. They give you a simple framework to shape your test strategy.
1. Testing Shows Presence of Defects
- Key Idea: Testing finds bugs. It never proves that no bugs exist.
- Study Point: Run tests that challenge your code. Accept that some bugs may still hide.
2. Exhaustive Testing Is Not Possible
- Key Idea: You cannot test every possible scenario.
- Study Point: Use risk analysis and logic to choose tests. Focus on areas that matter most.
3. Early Testing
- Key Idea: Start testing as soon as possible.
- Study Point: Involve testers during requirements and planning. Fix issues before they grow.
4. Defect Clustering
- Key Idea: A few parts of the code often cause most problems.
- Study Point: Track where bugs appear. Focus more tests on those modules.
5. Pesticide Paradox
- Key Idea: Running the same tests repeatedly finds fewer new bugs.
- Study Point: Regularly update your test cases. Add exploratory testing to uncover different issues.
6. Testing Is Context Dependent
- Key Idea: Your testing methods should match the project type.
- Study Point: Adjust tests based on the product’s domain and risk level. Use heavier documentation for safety-critical projects and simpler tests for less critical ones.
7. Absence of Errors Fallacy
- Key Idea: A product with no detected bugs might still miss user needs.
- Study Point: Look beyond bug counts. Gather user feedback and check performance to measure true value.
Additional Study Points
- Cognitive Biases: Recognize biases (like confirmation bias) that can affect how you test.
- Logical Thinking: Use clear, logical steps to select and design tests.
- Agile Testing Mindset: Work closely with developers and stakeholders from the start.
Quick Reference Table
Principle | Key Point |
1. Testing Shows Defects | Finds bugs; never proves complete absence |
2. Exhaustive Testing Is Not Possible | Test high-risk areas; use logic to prioritize |
3. Early Testing | Involve QA early; catch issues sooner |
4. Defect Clustering | Focus on modules with most bugs |
5. Pesticide Paradox | Refresh tests to keep finding new bugs |
6. Testing Is Context Dependent | Adapt tests to project needs and risks |
7. Absence of Errors Fallacy | Zero bugs does not equal a useful product |