The Seven Principles of Testing
The seven principles of testing have been established by the ISTQB as testing and software development has evolved over the years and are considered the core of testing.
Principle 1: Testing shows the presence of defects
Software testing indicates the presence of defects, but it cannot demonstrate that there are no defects.
More straightforward, software testing reduces the probability of undiscovered defects in the software, but if there are no defects found, that is not a validation of correctness.
Principle 2: Exhaustive testing
Testing everything is not possible. Trying all combinations of impossible inputs and preconditions is not feasible except for trivial cases. Instead of exhaustive testing, we use risks and priorities to focus testing efforts.
Testing activities should start as early as possible in the Software Development Life Cycle. Creating so early helps you catch many bugs in the early phases, making it much cheaper to fix.
The best time to start early testing is when your requirements are more defined. Always focus on defined objectives.
Principle 4: Defect clustering
Defect clustering is a small number of modules containing most defects found during pre-release testing or showing the most operational failures.
This principle applies the Pareto Principle to software testing: around 80% of the problems are found in 20% of the modules.
Principle 5: Pesticide paradox
The pesticide paradox says that if the same tests are repeated over and over again, eventually, the same set of test cases will no longer identify any new bugs in the system.
To overcome this 'pesticide paradox,' the test cases must be regularly reviewed and revised. New and different tests need to be written to exercise different parts of the software or system to potentially find more defects.
Principle 6: Testing is context
Several domains are available in the market, such as banking, medical, advertisement, etc. Each domain has applications with different requirements, functions, and testing purposes. In a nutshell, different domains, and different testing.
For example, safety-critical software is tested differently from an e-commerce website. The risk associated with each type of application is different, so using the same method is ineffective.
Principle 7: Absence-of-errors
If the software is tested thoroughly and no defects are found before the release, we can say it's 99% bug-free. But what if the product was tested for the wrong requirements? There is a possibility that a software that is 99% bug-free can still be unusable.
Finding and fixing defects does not help if the system is unusable and does not fulfill users' needs and requirements.
One of the most common errors in the testing industry is not testing in the proper environments. For example, let's say your client has an application that works on Android devices. Consider testing the app on the most recent Android operating system versions. Everything goes smoothly, but your client finds a bug on an older operating system you were not expecting.
Software Testing is a vital step in Software Development Life Cycle as it establishes whether the software is working as per end-user needs. Testing helps you identify as many defects as possible. Everyone should be aware of the seven software testing principles to perform testing effectively.
Ultimately, the seven testing principles will help you create an effective Test Strategy and draft error-catching test cases.
Let's work together
You made it this far! Thank you for reading this article. We hope you found it useful. Please feel free to share it with your peers if you feel like supporting us.