Segment-Based Test Case Prioritization: A Multi-objective Approach
<|reference_start|>Segment-Based Test Case Prioritization: A Multi-objective Approach: Regression testing of software is a crucial but time-consuming task, especially in the context of user interface (UI) testing where multiple microservices must be validated simultaneously. Test case prioritization (TCP) is a cost-efficient solution to address this by scheduling test cases in an execution order that maximizes an objective function, generally aimed at increasing the fault detection rate. While several techniques have been proposed for TCP, most rely on source code information which is usually not available for UI testing. In this paper, we introduce a multi-objective optimization approach to prioritize UI test cases, using evolutionary search algorithms and four coverage criteria focusing on web page elements as objectives for the optimization problem. Our method, which does not require source code information, is evaluated using two evolutionary algorithms (AGE-MOEA and NSGA-II) and compared with other TCP methods on a self-collected dataset of 11 test suites. The results show that our approach significantly outperforms other methods in terms of Average Percentage of Faults Detected (APFD) and APFD with Cost (APFDc), achieving the highest scores of 87.8\% and 79.2\%, respectively. We also introduce a new dataset and demonstrate the significant improvement of our approach over existing ones via empirical experiments. The paper's contributions include the application of web page segmentation in TCP, the construction of a new dataset for UI TCP, and empirical comparisons that demonstrate the improvement of our approach.<|reference_end|>
@article{huynh2024segment-based,
    title={Segment-Based Test Case Prioritization: A Multi-objective Approach},
    author={Hieu Huynh, Nhu Pham, Tien N. Nguyen, Vu Nguyen},
    journal={arXiv preprint arXiv:2408.00705},
    year={2024},
    doi={10.1145/3650212.3680349},
    archivePrefix={arXiv},
    eprint={2408.00705},
    primaryClass={cs.SE}
}