7 principles of testing:
- Testing shows presence of defects: cannot prove absence of defects, Reduces probability, Not a proof of correctness.
- Exhaustive testing is impossible = you can’t test all scenarios you product may encounter, Risk analysis and priorities are the key
- Early testing = start testing reqs. to save money and time. Half of bugs are in design phase.
- Defect clustering = 80% defects can be found from 20% of code
- Pesticide paradox = try different test data, and create different test cases
- Testing is context dependent = types of tests depend of industry, testing e-commerce is different from Android app.
- Absence-of-errors fallacy = If a built software is 99% bug-free but it does not follow the user requirement then it is unusable. You brought the best ORANGE, but customer wanted APPLE.