Exhaustive testing is type of software testing approach where all the possible data combinations are used for testing. It is a quality assurance testing in which all scenarios or data is used for testing. Exhaustive testing is a process to ensure that the product cannot be crashed or destroyed for random circumstances.
Though practically, the exhaustive testing is impossible, the software testing techniques like risk based testing, structure based testing, specification based testing etc can be used. Hence, software testing cannot prove the absence of defects but can show presence of defects and reduce the risk of failure.
Exhaustive testing considers all possible inputs and scenarios. It is very rare for products to completely pass the exhaustive testing but there may be few failures it can be considered as unlikely scenario it is called as low priority bug with very unlikely to occur and it occurs for very small population of users. When a software or hardware passes the exhaustive testing it is considered as perfect and robust for its application. It includes the data combinations implied on the present in the state of software to start testing.
Consider an example of an application which accepts the password with 4 characters with no consecutive repeated entries. With alphabets there are 26 characters with 4 input permutations as 26*26*26*26. Input characters including special and standard characters there are 256*256*256*256 input combinations. As the name suggests it is very exhaustive. We use all permutations and combinations of the input.
Another example, a software with 4 pages, 3 menus with 2 options each, each option has 5 fields, 2 types of inputs each fields, each input type has 50 possible values. The total test conditions for exhaustive testing: 4 pages * 3 menus * 2 options * 5 fields * 2 types * 50 values = 30000 tests.
Each element of code is verified under this process. The exhaustive testing is done when the scope of project is small for bigger projects this test is impractical and time consuming. The exhaustive testing is done in depth for all possible values which is very time consuming.