Software Testing Tutorial
7 Principles of Software Testing
There are 7 fundamental testing principles of Software Testing which help the QA to utilize their time and effort and make the testing process an effective one. What are the basic principles of Software Testing? Let’s have a look:
7 Principles of Software Testing
- Exhaustive testing is not possible
- Testing shows presence of defects
- Early testing
- Defect clustering
- Pesticide paradox
- Testing is context dependent
- Absence of errors fallacy
1) Exhaustive testing is not possible:
It is difficult to Test all the functionalities using all valid and invalid inputs and preconditions during actual testing. Therefore, we make some few testing combinations based on the priority using different techniques.
Let’s do an exercise for better understanding:
Assume we have to test an input field which accept a number from 1 to 1000. So in Exhaustive testing we have to test all the number from 1 to 1000. You can say, yes we can achieve it by doing automation tool. So let’s imagine we increase the limit from 1000 to a billion values. It’s impossible to test all the possible value during release time.
So instead of doing Exhaustive Testing, risks and priorities item will be taken into consideration during testing and estimating the testing efforts.
2) Testing shows presence of defects:
Testing an application is important to make sure that the application is bug or defects free. While doing testing, Our main focus is to break the application functionalities so that we can find hidden defects. By doing this we can reveal undiscovered defects in the application, but it does mean that the Software is bug or defect free.
For example, an application might seem to be error free on staging env but on the production environment, the user may encounter some defects which did not occur during testing.
3) Early testing:
Testing should start as early as possible in SDLC(Software Development Life Cycle). So that any defects in the requirements or design phase can be found in early stages. The cost involved in fixing these type of defects is very less when we compared to those that are found during the later stages of testing. But how early can anyone start testing? Answer is as early as the requirements got finalized.
So testing needs to be performed on requirement documents and specification or any other type of document if available so that if requirements are incorrectly defined then it can be fixed immediately rather than fixing them in the development phase.
4) Defect clustering:
When a small module contains the most of the defects than it’s called the defect clustering. As per the Pareto Principle, approximately 80% of the problems are found in 20% of the modules.
5) Pesticide Paradox:
When the same set of repetitive test cases are conducted again and again, then the method will be useless for discovering new defects.
To overcome this, the test cases need to be reviewed and revised regularly. And also add new & different test cases to find more defects in the application.
6) Testing is context dependent:
It means testing approach depends on the context of software we developed. Means we can not test a commercial website the same way we test an E-Commerce website. Basically we have to use different approach, methodologies, techniques, and types of testing as per the application type.
7) Absence of errors fallacy:
It is possible that a 99% bug-free software is still unusable. This can be happened when we test the application thoroughly for the wrong requirement. Software testing is not about to finding defects, but also to check whether a software fulfills the business requirement or not.
The absence of error fallacy means identifying and fixing the bugs would not help if the application is impractical and does not fulfill the client requirements and needs.
I hope you guys enjoyed this article and understood the 7 testing principles and their importance in Software Testing.
Share this Page