The original article is taken from guru99.com and enhanced a little bit for beginners.
There are basically 7 basic software testing principles that are good to remember while starting your career as a software testing or QA Analyst.
Testing can show that defect or bug exists in the project but it cannot make sure or prove that there is no defect or bug at all. In simple words, Software cannot be 100% bug-free. Testing reduces the number of undiscovered defects but even if there is no bug found, it is not proof of correctness.
Testing every possible condition or combination is not possible. For example, you need to test one web page that has 15 input fields (textbox controls) and each field can have 5 possible values. To test all possible combinations you need (515) = 30 517 578 125 test cases. This is simply impossible cause you do not have enough time and resources to test this huge number of test cases. So you priorities test cases based on importance & business need and execute them.
Defect Clustering states “small number of the module contains most of the defects tested”. For example, if you open 100 different websites in Internet Explorer tabs, you will find that your computer gets extremely slow and sometimes gets crash. So you can make an assumption with little knowledge and experience that Internet Explorer may have an issue with heavy multitasking (more than one task at a time). After finding this, you will test Multi-tasking thoroughly because this module may have a number of defects.
Even if you do defect clustering and keep testing critical modules you found during defect clustering process, eventually, same test case won’t be able to find more defects because you already have found possible defects. This principle is called Pesticide Paradox.
Pesticide Paradox Definition “insects eventually build up resistance and the pesticide no longer works”.
To resolve the Pesticide Paradox issue, regularly revise and review test cases, add new test cases to find more defects.
If we put more effort into testing and avoid Pesticide Paradox by adding revised and new test cases, still we cannot claim that the product is 100% error-free. (Testing shows the presence of effect – 1st Principle).
If you put EXTRA effort and claim your software product is 99% bug-free but your software is not according to the client’s requirements, this effort is totally useless.
Absence of errors – Fallacy principle states “Finding and fixing defects doesn’t help if your end product is not according to user requirements”.
To fix the Absence of errors – Fallacy principle issue, the Early Testing principle solution should be adopted. It means, does not wait for the product to be built and then starting testing (e.g. Waterfall SDLC). Start from testing as soon the project gets initiated e.g. test requirements documents and verify that they are according to the client’s requirements e.g. V-Model testing and Agile SDLC help to identify early testing defects.
It means testing is based on the nature of software; the testing for a financial system would be different from testing the educational system. The tester should have analytical skills to design test cases and testing procedures according to the software’s domain.