Multi-objective test prioritization via a genetic algorithm
It is a challenging job for the software industry to release a product with the right quality level at the right time. There are some components within a software system that are more critical to the systems operation than others. Faults in components with high criticality are responsible directly or indirectly for causing high failure rate of the overall system compared to same faults in components with low criticality. Estimating the criticality of a component at the design level and focusing test effort per component based on the estimated criticality of the component helps to improve the reliability of a system within the available test resources. The objective is to identify the criticality level of a component at the design level and make a better test plan so that the high-critical components would be tested more completely and rigorously than other less-critical components. We first propose a method to estimate the criticality of a component within a system. The criticality estimation method is based upon design documents. We prioritize the components for testing according to their estimated criticality. Then, we present a genetic algorithm-based technique to select test cases out of a large pool of test cases. The intensity with which each component is tested is proportionate to its priority and the test suite is optimal under other constraints. We have conducted experiments to compare our scheme with a related scheme. The experimental results establish that higher reliability can indeed be achieved using our scheme.
genetic algorithm reliability component dependence diagram test case prioritization