- Software Testing Tutorial
- Software Testing - Home
- Software Testing - Overview
- Software Testing - Defect Management
- Software Testing - Life Cycle
- Software Testing - Bug Life Cycle
- Software Testing - Myths
- Software Testing - QA, QC & Testing
- Software Testing - Environment
- Software Testing - Test Plans
- Software Testing - Strategies
- Software Testing - Steps
- Software Testing - Test Scenarios
- Software Testing - Test Analysis
- Software Testing - ISO Standards
- Software Testing - Types
- Software Testing - Methods
- Software Testing - Metrics
- Software Testing - Levels
- Software Testing - Documentation
- Software Testing - Estimation Techniques
- Software Testing - Test Data Generation
- Software Testing - 7 Principles
- Software Testing - Severity & Priority
- Software Testing - Test Script
- Software Testing - Defect Density
- Software Testing Useful Resources
- Software Testing - Quick Guide
- Software Testing - Useful Resources
- Software Testing - Discussion
Software Testing - 7 Principles
The software testing process is one of the most important phases towards a successful software development. The testing is quite a difficult, cumbersome and time-taking activity. In order to increase its effectiveness, it is necessary to be guided by some principles to reap the maximum benefits from software testing.
The 7 principles of testing are listed below −
Testing Exposes Presence of Defects
Once a software comes from the development to the testing team’s bucket, it is thoroughly tested using the various layers, types, methodologies of testing. As a result, all probable bugs in the software get uncovered, and finally resolved. Also, a software goes through multiple cycles to detect as many bugs as possible.
In spite of all the testing efforts, there is no guarantee that the delivered software is entirely defect free. There may exist some scenarios which might not be tested. Thus testing only reduces the possibility of encountering bugs in the software, but it does not assure it to be 100 percent defect free.
Exhaustive Testing is Impossible
While a software is being tested, it is impossible to cover all possible combinations of prerequisites, data, scenarios, use cases etc. Besides, exhaustive testing requires a lot of time, effort, and cost. Instead of doing so, an attempt should be made to choose the best, optimal, and most effective set of test cases, rather than testing all combinations. The best choice of test cases can be done only through experiences, knowledge of software, and analyzing all the possible risks and their mitigations.
Defect Clustering
It is observed that a maximum number of defects are identified from a small count of modules of the software. This comes from the Pareto principle in testing. It states that eighty percent of the defects originated from twenty percent components of the software.
Thus it helps to detect the bug prone modules. If a defect is seen from a module, there are high chances of more defects from the same area. But it must be noted that if a similar set of test cases are executed on the same modules repeatedly, the chances of getting newer errors reduce.
Pesticide Paradox
This is based on the fact that if the same pesticide is used over and over again on the vegetation, then ultimately the insects get accustomed, and after a while it becomes ineffective to the insects.
Similarly, if the identical group of test cases are executed over and over again, they become useless as they fail to detect new bugs in the software. To overcome this, it is mandatory to review test cases frequently, add, modify, or delete them based on the new requirements, modules, and functionalities. Also, the test cases should be run against newer combinations or sets of data, and scenarios to identify more bugs.
Early Testing
The testing should begin from the initial stages of the software development life cycle (SDLC), starting with detecting errors in the requirements, design or development stages. It is always better to identify defects at the early stages rather than that right at the end. The cost of fixing the defects are more at the later stages of SDLC. Also, the project deadlines get hampered to fix defects which require recording a critical feature at the later stages.
Testing is Context Dependent
Each software is unique in its own way. For example, a ticket booking application is not the same as an e-commerce application. Hence the testing approaches, strategy, methodologies to verify a ticket booking application is always different from an e-commerce application. Thus a common framework of test strategies does not work for all software, and varies from context to context.
Absence of Error Fallacy
There may be situations where a complete software has been tested thoroughly and there is a ninety-percent chance of no defect being encountered. However, it may be found later that the entire testing was on the basis of incorrect requirements. Thus the software turns out to be without any defects but unusable and unacceptable to the customer. This points to the fact that testing is always not only about detecting defects, it also means verifying if the software is in accordance with the user's needs.
This concludes our comprehensive take on the tutorial on Software Testing 7 Principles. We’ve started with describing what are 7 principles of software testing. This equips you with in-depth knowledge of Software Testing 7 Principles. It is wise to keep practicing what you’ve learned and exploring others relevant to Software Testing to deepen your understanding and expand your horizons.
To Continue Learning Please Login
Login with Google