Software Testing Principles - Principles of Software Testing
Software Testing Principles
- To make a product defect free, we need to follow certain principles.
- These principles helps the test engineers to test the software with their effort and time.
- There are 7 Essential principles for a software testing:
- Testing shows the presence of Defects
- Exhaustive Testing is not possible
- Early Testing
- Defect Clustering
- Pesticide Paradox
- Testing is Context-Dependent
- Absence of Error Fallacy
Software Testing Principles
Testing shows the presence of defects
- The application will be tested by test engineer to make it defects free.
- Testing is done to identify the errors in application or software.
- Primary purpose of testing is to identify unknown bugs using various methods and testing techniques because the entire test should match the customer requirement to find that any defects that might cause the product failure to meet the client needs.
- By testing any application multiple times, we can decrease the number of bugs,which does not mean that the application is defect free, and software feels bug free while performing multiple types of testing on the application.
- Even after performing multiple tests on the application, when it is deployed in the production server, end user can find bugs which are not found in the testing process.
Exhaustive Testing is not possible
- Process of testing the software functionality with valid or invalid inputs and pre-condition is known as exhaustive testing.
- Exhaustive testing is not possible, which means the software can never test at every test case.
- In exhaustive test cases only certain test cases are tested and assumed that the software is correct and this testing will produce the correct output in every test case tested.
- It will take more cost, effort to test each and every test case which is impractical.
Early Testing
- Early testing is done to find the defect in the software.
- Defects detected during the early phase will be less expensive.
- As the name suggests this testing will be done very early at the stage of requirement analysis phase for the better performance of software.
Early Testing
Defect clustering
- Small number of modules in a project contains most of the defects.
- Pareto principle in testing states that 80% of the defect comes from 20% of the modules.
Defect clustering
Pesticide paradox
- Pesticide paradox states that if testing is repeated again and again, we cannot find new bugs.
- Reviewing the test case and updating the test case will help us to find new bugs.
Testing is context-dependent
- Approach of the testing depends on the software content developed.
- Different types of testing need to performed for different software.
- For example, Testing an ecommerce site is different from testing an Android Application.
Absence of errors fallacy
- If a 99% bug free software is built and it does not follow the user requirement then the software is said to be unusable.
- It is not necessary that the software built is 99% bug free but also it is mandatory for the software to fulfill the customer requirements as well.