Testing is the process of finding the bugs, defects in the software project to make it reliable as much as it is possible, no matter how much you find out the bugs it is almost impossible to make the software 100% error free, So there are some principals of software testing which every software tester should keep in mind to perform the testing efficiently.
#Video Lecture on the Topic in Hindi / Urdu :
1 - Exhaustive testing is not possible :
Exhaustive testing means considering all the aspects and elements of the software to test which is not possible, No matter how much efforts you make to test a software completely few parts of it remain untested and show their impact after getting into the production.
Example : There is text input field in a software which accepts values from 1 to 1000 you may check its validation by giving it some random values in the range but It would not be possible for you to check the field on every single value between 1 to 1000. Still few values may remain untested.
2 - Testing Shows Presence of Defects:
The goal of the testing is to show the presence of the defects not resolve them or not to make the application defect free, The best testing is something which is able to find and show the maximum number of the defects in the software, No matter how much best testing you perform still a small amount of bugs will be there when your software will go into the production environment.
Example : For example being a developer you have a professional environment i.e. having HiTech PC and stable internet connection so things will go smooth but may show error in the user environment where the PC is not and internet connection is not as stable as yours.
3 - Early Testing:
Always try to introduce the testing in the early stages of software development if you introduce the testing to the project after completing it and just before pushing it into the development environment it, Defects at that stage would cost you so much to fix.
Example : When you start building a house it is better to resolve the issues on the paper plan or on prototype removing the walls from the constructed house and making the new on some other locations to change the size of the rooms and etc will cost you much more.
4 - Defect Clustering :
It state that the small area of a project may contains the most of the error in the project let say 20% of the code in the project will be causing the issues in the 80% of the software so it is best to find and focus on that 20% area.
5 - Pesticide Paradox :
This principal says repeating the same test case over and over again will not help you to find a new bug, You have to see things from the different perspective to get new defects in the product.
Example : It is same like spray of same pesticides killing medicines again and again on crops will not help you to kill pesticides on the crops as they will start developing immune system again that medicine.
6 - Testing is Context dependent :
You can't test every application with the same approaches of the testing it depends on what kind of software you are testing.
Example : If you are testing a management system of a grocery store the approach to test it will be different from the approach you use for a banking software. You can't use the same parameters every where.
7 - Absence of Error :
Even your software is 99% bug free it may still be unusable if it doesn't addressing the business requirements properly so it is important to address the business requirements and testers should have early involvement as per principal number 3 to keep an eye if the software meets the requirements or not.