It is not possible to perform complete Testing or Exhaustive Testing. Testing is always performed on sampling basis. Selection of test data needs good skill in the test data selection methods. In this type of testing all probable data combinations are used for test execution. This way, users can find software endurance and check for extreme situations. For instance, consider an application with 10 input fields where each can have six possible values. In order to perform exhaustive testing, number of combinations are 6^10 tests. The situation becomes worse when one needs to perform testing in different environments. It is impractical and is not performed in real-time testing applications, and has only theoretical significance. Instead of checking for each of the combinations, user may assign risk and priority to perform testing. Tester need to give focus on both technical and business risks associated with the project constraints like time and budget. Risk assessment needs to be performed initially to understand the level of testing required. Testing activity should be able to offer sufficient details to clients to create decision about the product release.
Why Exhaustive Testing Is Not Practical?
- Testers have to work under strict deadlines and have to complete other testing activities also, apart from test execution. Deadlines would never allow the testers to perform Exhaustive testing.
- Programs can also have more number of states. Timing constraints is yet another limitation of exhaustive testing. i.e., an input, which is valid at a particular time, might be invalid at another time.
- Exhaustive testing demands testing of all probable duration of time each user may operate the AUT. This is a tedious task and is not feasible to perform.
- Moreover, the design might be too intricate to perform test execution.
- It is not feasible to test all probable test execution environments of the AUT. This becomes even more complex if the AUT is dependent on real time scenarios like temperature, pressure and the like.
- It is not possible to test for all probable outputs or sequence of operations with exhaustive testing.
- It is not possible to perform exhaustive testing by checking for different combinations of user types and number of users.
However, testers can optimize test execution by adhering to the following guidelines: Though the testing performed by QA testers is exhaustive, at times the application fails due to code breakage during build change and some business scenarios which results in UAT defects. This would result in reduced Customer Satisfaction Index (CSI). To tackle this issue, some special exhaustive processes or strategies need to be followed to boost testing productivity.
Advantages Of Following Exhaustive Testing Strategy:
- Reduced Manual Effort
- More testing pertinent to business requirement
- Improved exploitation of automation resources
- It ensures that high priority tasks will be tested for sure
- It helps in saving time and rework effort
- Improved customer satisfaction index (CSI)
- Count of UAT defects would be reduced and would also result in productive testing metrics
- While retesting, checking other pertinent scenarios may also reveal new defects
- Improved exhaustive testing can be performed with less manual effort
Process That Can Be Adopted For Optimizing Testing:
- Exhaustive testing can be implemented by focusing on critical or crucial scenarios on every build change by means of automation.
- QA team needs to work on the other relevant scenarios while retesting an issue.
- QA team also needs to ensure that adhoc testing is performed on business scenarios at the end of system test execution.
- Testers also need to prioritize the test cases and execute the high priority cases in the first week of system testing.
- Sanity testing needs to be performed during changes in build or environment.
- Stable environment should be available for performing test case execution.
- Special care should be taken to make sure that test cases are precise, brief and effective.
- Peers, business analysts and other relevant users should review test suite.
- Tester should also take special care to create new test cases or updating prevailing test cases when new bugs are confirmed.
- The configuration data, input / output test data need to be obviously stated.
- Focus more on testing strategies like OATS testing which helps to optimize testing and cover wide range of test data.
Usually the failure of application occurs more in pertinent scenarios, so retesting such scenarios would certainly turn up other defects in the system. Rework effort associated with exhaustive testing is high, but user is guaranteed defect free application. Failure of critical scenarios would result in UAT defects that affect the testing metrics. Adopting an efficient test strategy that optimizes testing could help you to achieve results almost similar to that of exhaustive testing.