The principles of software testing refer to the guidelines that help testing teams effectively utilize their time and effort to discover hidden effects of a testing project. The below 7 Fundamental Principles of Software Testing have been investigated from the real practice and research for testers to apply widely in software testing area.
1. Testing indicates the present defects of the project
This principle can be described in another way: testing is about the presence of defects, not their absence. Software testing can only figure out the defects which are existing in an application or software. Testing always helps eliminate the number of undiscovered defects in the software, however, even no bugs are found during the testing process, it doesn’t mean the correctness. Despite the thorough testing of a product or application, no one can ensure the product is 100% defect free.
2. Exhaustive testing is not possible
It is impossible to test all the combinations of data, inputs, and test scenarios since it requires lots of time. Instead, testing team can only focus on some important criteria such as risk and priorities to set up the test strategy. The project timescales could never allow the testing team to test a huge number of valid combinations in a project. That’s why accessing and managing the risks is considered among the essential activities in testing projects.
3. Early testing
Testing activities must be conducted as soon as possible to get ready for the next stage of software development. Testers can even start testing as long as the product requirements or documents are generated. Obviously, it is always easier and cheaper to fix the issues from the beginning rather than changing the whole system if the bugs are found too late. Therefore, with the early testing, testers can detect the bugs and help development team resolve it with fewer costs and efforts.
4. Defect clustering
Defect clustering refers to fact that most of the defects are found in a few modules. This principle requires the testing team to use their knowledge and experience to identify the potential modules to test. That forecast can help save the time and effort as the team only needs to focus on those “sensitive” areas. However, this approach also contains the drawbacks: once testers only concentrate on a small area all the team, they may miss the bugs from other areas.
5. Pesticide Paradox
Pesticide Paradox refers to the repetitive tests that testers run in projects. These tests are only applied in some limited modules instead of the whole system. This kind of test may cause the issues of not discovering new bugs outside that modules. It, therefore, requires testing teams to frequently review and update the test cases in order to cover various sections of the projects.
6. Testing is basically context-dependent
Various products or projects contain different elements, features, and requirements. Hence, testers cannot apply the same test approach for different projects. For instance, an application in banking industry should require more testing than an entertainment software.
7. The absence of Errors Fallacy
The software product should not be only tested on the technical side but also on the expectations and needs of users. Although the testing didn’t show up any bugs in the software, it would not mean that the product is ready to be released since it must be confirmed the testing is conducted thoroughly with the right requirements.
The above principles have been summarized from the research “Foundations of Software Testing” (ISTQB Certification) by Rex Black, Erick Van Veenendaal, and Dorothy Graham. These principles can be applied as the core guidelines for most of the testing projects. However, as mentioned earlier, every single product or project contains very different factors and requirements that need various testing approach. Testers should leverage their experience and knowledge to decide and balance those methods.