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.
Principle 3: Early testing
Testing activities should start as early as possible in the Software Development Life Cycle. Creating so early helps you catch a lot of bugs in the early phases, which makes 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 need to 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
There are several domains available in the market, such as banking, medical, advertisement, etc. Each domain has its applications with different requirements, functions, and testing purposes. In a nutshell, different domains, 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 the 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. You consider testing the app on the most recent versions of the Android operating system. 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 if the software is working as per end-user needs or not. Testing helps you identify as many defects as possible. To perform testing effectively, everyone should be aware of the seven principles of software testing.
Ultimately, the seven principles of testing will help you create an effective Test Strategy and draft error-catching test cases.
Find out more about our advice for the ISTQB exam in our article!