Abstract

AbstractGenerating test cases is essential for discovering software bugs. However, finding bugs in multi-path loops is challenging, especially when bugs can only be exposed after a specific interleaving execution order. Furthermore, the number of paths increases exponentially when the iteration count increases. It results in running out of resources (e.g., allocated search budget) in existing algorithms for test case generation before finding program bugs. To overcome these challenges and improve the effectiveness of existing algorithms in finding bugs among multi-path loops, we propose a path-oriented test case generation framework to explore loop paths of bounded depth. To fulfill this task, we first present a method that groups loop paths based on their latent similarities. Then, we formulate the problem of generating test cases to cover loop paths as a many-objective optimization one. The many-objective optimization problem is designed to optimize one group of loop paths at a time. Finally, a many-objective test case generation framework is used to generate test cases for covering loop paths. In this framework, a knowledge transfer scheme is incorporated to reuse suitable archived test cases at the start of the search process for a similar group of paths. We have implemented the proposed knowledge transfer scheme with generalized differential evolution 3 (KT-GDE3) and evaluated it with benchmarks from the competition on software verification (SV-COMP16 and SV-COMP21). The experimental results show that KT-GDE3 outperforms alternative search-based test case generation algorithms in bug finding capability for multi-path loops. To evaluate the effectiveness of the proposed knowledge transfer scheme, our approach is compared with the variant without this scheme (called KT-GDE3-unarchived) in the benchmarks. The corresponding experimental results verify our assumption that the knowledge transfer scheme can significantly enhance the optimization process of multi-objective algorithms such as generalized differential evolution when finding bugs in multi-path loops.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call