According to Wikipedia, software testing can be defined as “Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test”
Software testing is must for a project to be successful. The general guidelines for software testing can be understood with the help of following 7 principles.
1. Testing shows presence of defects: Testing can help us find bugs or it can show that bugs exists. But if tester is not able to find bugs, it doesn’t prove that there are no bugs. Good testing can just decrease the probability of undiscovered defects, but it can’t guarantee that there are no bugs.
2. Exhaustive testing is impossible: You can’t test each and every piece of software against all the input/output combinations. Instead, you need to do risk analysis and prioritization of bugs. One should use techniques like Equivalence Class Partitioning(ECP) and Boundary Value Analysis (BVA)
3. Early Testing: As the old saying goes, “A stitch in time saves nine”. Bugs found in initial phases of SDLC require lesser efforts to fix than the bugs found in later phases. So in order to find bugs early in the SDLC, one much start testing process early. Infact, testing team should be involved right from the requirement gathering phase.
4. Defect Clustering: This can be described by Pareto principel -80% of bugs can be found in 20% of code/modules. So testing efforts should be proportionally focused as per observed defect density of code.
5. Pesticide Paradox: Running same set of tests again and again will eventually result in no bug. One must continously keep on updating test cases to find more and more potential bugs.
6. Testing is context dependent: Testing totally depends on the context. The test cases will be totally different for eCommerce site and a blog.
7. Absence-of-errors fallacy: Absence of errors doesn’t imply that software is a success or ready to use. There are other factors like usability, fulfillment of user needs.