Software Testing Principles
Software Testing Principles
In this tutorial, we will learn about Software Testing Principles. These principles give an overview of key testing practices.
Let’s first outline the fundamental software testing principles. The principles are as follows:
- Testing shows only the presence of defects, not their absence.
- Exhaustive Testing is not possible
- Early Testing saves money
- Defect Clustering
- Pesticide Paradox
- Testing is Context-dependent
- The absence of errors is a fallacy
Testing shows only the presence of defects
Testing can only show the presence of defects or bugs in the software under test. Software testing cannot prove that the software product is 100% defect-free. Testing increases the probability of finding undiscovered bugs in the product, but cannot show the absence of bugs in the product.
Exhaustive Testing is not possible
Testing everything is practically impossible. Testing all combinations and test scenarios is not possible. In the real world, Agile frameworks build fast and ship often within 2 – 4 weeks of time. Testing teams increase test coverage of main functionality and automation rate to reduce the software risk.
Early Testing saves money
Software defects that are identified early in the product life cycle are easy to fix and take less cost fixing them. The main and critical functionality of the product should be tested first.
Defect Clustering
This principle is based on the 80-20 Pareto rule that can be applied for the defects. 80 percent of the bugs can be found in 20 percent of the modules. The software testing team should concentrate on testing these modules.
Pesticide Paradox
states that if the same set of test cases is executed repeatedly on a system over time, the tests will eventually lose their effectiveness. This happens because the tests become “immune” to detecting new defects, much like how pests develop resistance to pesticides.
In agriculture and farming, if we apply the same pesticide over and over again the insects would build immunity to the medicine. In the same way, if we repeat the same tests over and over again, the test will not find new defects in the product.
Context-dependent
Software testing is context-dependent. Different applications need to be tested differently. Testing approaches, strategies, and tools vary from application to application.
The absence of errors is a fallacy
The software product should meet end-users’ expectations, requirements, and fitness of use. If the software doesn’t fit the customer’s use, then it is irrelevant how many bugs are discovered and fixed by the software team. It’s important to take end users’ feedback so that the software product meets users’ expectations. Even if the product is error-free, it’s not worth it if it’s not usable for the customer.
—
Software Testing Tutorials: