Prioritization techniques schedule the execution of test cases in an order that attempts to increase their effectiveness at meeting some performance goal.
Therefore, given any Prioritization goal, various Prioritization techniques may be applied to a test snite with the aim of meeting that goal.
Prioritization can be done at two levels.
a) Prioritization for regression test snite.
b) Prioritization for system test snite.
1) Coverage- based case Prioritization: This type of Prioritization is based on the coverage of codes, such as statement coverage and branch coverage and the fault exposing capabilities of the test cases. Test cases are ordered based on their coverage.
i) Total statement coverage Prioritization: This Prioritization orders the test cases based on the total number of statements covered. It counts the number of statements covered by the test cases and orders them in a descending order. If multiple test-cases cover the same number of statements then a random order may be used.
ii) Additional statement coverage Prioritization: Total statement coverage Prioritization schedules the test cases based on the total statements covered. However, it will be useful if it can execute those statements that have not been covered as yet. Additional statement coverage Prioritization interactively elects a test case T 1 that yields the greatest statement coverage and then selects the test case which covers a statement uncovered by T1. Repeat the process until all statements covered by at-least one test case have been covered.
iii) Total branch coverage Prioritization: In this Prioritization, the criterion to order is to consider condition branches in a program instead of statements, thus it is the coverage of each possible outcome of a condition in a predicate the test case which will cover maximum branch outcomes will be ordered first.
iv) Additional branch coverage Prioritization: The idea is the same as in additional statement coverage of first selecting the test case with the maximum coverage of branch outcomes and then selecting the test case which covers the branch outcome not covered by the previous one.
v) Total fault exposing potential Prioritization: Statement and branch coverage Prioritization ignore a fact about test cases and faults.
Some bugs/faults are more easily uncovered than other faults.
Some test cases have the proficiency to uncover particular bugs as compared to other test cases thus, the ability of a test case to expose a fault is called the fault exposing potential (FEP). It depends not only on whether test cases cover a faulty statement but also on the probability that a fault in that statement will also cause a failure for that test case.
2) Risk- based Prioritization: Risk based Prioritization is a well-defined process that prioritize modules for testing. It uses risk analysis to highlight potential problem areas whose failure have adverse consequences. The testers use this risk analysis to select the most crucial tests. Thus, risk based techniques and to prioritize the test case based on some potential problems which may occur during the project.
3) Prioritization based on operational profiles: In this approach the test planning is done based on the operational profiles of the important functions which are of use to the customers. An operational profile is a set of tasks performed by the system and their probabilities of occurrence. After estimating the operational profiles, testers decide the total number of test cases keeping in view the costs and resources constraint.
4) Prioritization using relevant slices: During regression testing the modified program is executed on all existing regression test, cases to check that it still works the same way as the original program except where a change is expected. However re-running the test suite for every change in the software makes regression testing a time consuming process. If we find the portion of the software which has been affected with the change in the s/w we can prioritize the test cases based on the information this is slicing technique.
1) Execution slice: the set of statements executed under a test case is called the execution slice of the program.
2) Dynamic slice: the set of statements executed under a test case having an effect on the program output is called the dynamic slice of the program with respect to the output variable.
3) Relevant slice: the set of statements that were executed under a test case and did not affect the output but have the potential to affect the output produced by a test case is known as relevant slice.
5) Prioritization based on requirements: This technique is used for prioritizing the system test cases. The system test cases also become too large in number as this testing is performed on many grounds. Since system test cases are largely dependent on the requirements the requirements can be analysed to prioritize the test cases.
6) Data flow based test case Prioritization: Data flow testing is a white box testing technique that can be used to detect improper use of data values due to coding errors. The data usage for a variable affects the while box testing and thereby the regression testing. If the Prioritization of regression test snite is based on this concept the rate of detection of faults will be high and sceptical bugs can be discovered earlier.
7) Module coupling slice based test case Prioritization: This techniques is based on dependence and coupling between the modules and proceeds in two steps. In the first step we find the highly affected module whenever there is a change in a module. In the second step we prioritize the test cases of the affected module identified in the first step. In both the steps coupling information between the modules is taken into consideration.
8) Program structure analysis - Based test case Prioritization: This technique is based on the analysis of the source code witted by the developer’s. They considered various factors based on structural programming and then these factors were assigned a weight is assigned on the basis of a survey conducted in various organizations among different programmers. The factors and corresponding weight of the factors are given below: