It is important to deliver a well-tested software to ensure that all requirements are implemented and all goals are met. It requires a plan, strategy, and set of principles to be followed to make it happen. Knowledge of these 7 Software Testing Principles will help us understand the software testing process and achieve goals.
Here are the 7 Principles:
|Summary of the Seven Testing Principles|
|Principle 1||Exhaustive testing is impossible|
|Principle 2||Defect Clustering|
|Principle 3||Pesticide Paradox|
|Principle 4||Testing shows presence of defects|
|Principle 5||Absence of errors – fallacy|
|Principle 6||Early Testing|
|Principle 7||Testing is context dependent|
1. Exhaustive testing is not possible
Yes! Exhaustive testing is not possible. One cannot identify all scenarios, test cases and combination to test. Instead, we need the optimal amount of testing based on the risk assessment of the application.
It is always the best way to identify the areas which are most impacted or areas which are prone to fail or cause deviations from the requirement.
2. Defect Clustering
Defect Clustering which states that a small number of modules contain most of the defects detected. This is the application of the Pareto Principle to software testing: approximately 80% of the problems are found in 20% of the modules.
By applying experience, one can identify those 20% modules which are holding 80% problems. Stabilizing these 20% modules will increase the software stability by 80%.
3. Pesticide Paradox
A same set of medicines do not make the similar impact on diseases. Repetitive use of the same pesticides to control insects during farming will over time lead to the insects developing resistance to the pesticide. The same context applies to software testing. If the same set of repetitive tests are conducted, the method will be useless for discovering new defects.
A regular exercise of test cases refinement, updating is needed to keep tests and test cases up to date to catch more bugs.
4. Testing shows presence of defects
Testing talks about the presence of defects and don’t talk about the absence of defects. No bugs are found it doesn’t mean the software is bugfree. One has to identify more and new tests to identify more bugs.
Next principle is the result of this 4th principle.
5. Absence of Error
A 99% bug-free software can still be useless or unstable. This can happen when software was thoroughly tested for the wrong requirement. Software testing is not only about finding defects but also to ensure that the software meets the business needs. This is also called “Absence of Error is a Fallacy” which means Finding and fixing defects does not help if the system build is useless and does not meet the user’s needs & requirements.
To solve this problem, the 6th principle of testing states that Early Testing should be done.
6. Early Testing
Testing should start as early as possible in the Software Development Life Cycle. This will result in catching design issues at early stages. It is much cheaper to fix a Defect in the early stages of testing.
You may be thinking now, how early one should start testing? It is recommended that you start finding the bug the moment the requirements are defined.
7. Testing is context dependent
You cannot test a mobile application the way you test web application. You cannot test video streaming website the way you test e-commerce websites. All the developed software’s are not identical. Approaches, methodologies, strategy, techniques and type of testing will vary depending upon the application type.