FSCT: A new fuzzy search strategy in concolic testing
FSCT: A new fuzzy search strategy in concolic testing
复制标题
DOI:
10.1016/j.infsof.2018.11.006
复制
发表时间:
2019-03
期刊:
影响因子:
--
通讯作者:
A. Sabbaghi;H. Kanan;M. Keyvanpour
中科院分区:
文献类型:
--
作者:
A. Sabbaghi;H. Kanan;M. Keyvanpour
ContextConcolic testing is a promising approach to automate structural test data generation. However, combinatorial explosion of the path space, known as path explosion, and also constrained testing budget, makes achieving high code coverage in concolic testing a challenging task.ObjectiveAll branches of the previously explored paths make up the search space of concolic testing and search strategy define the mechanism of choosing branches to be flipped to drive the execution toward testing goals. With regard to the large number of candidate branches, choosing the right branch to continue the search is so crucial and has a direct impact on coverage rate and effort. This paper aims to improve the effectiveness of branch testing by considering the characteristics of paths reaching uncovered branches and presenting a novel search strategy for effectively and efficiently exploring the search space.MethodWe model the branch selection process in concolic testing as a decision making system and introduce a new Fuzzy Search Strategy in Concolic Testing (FSCT). FSCT chooses a branch to be filliped in which the most suitable path with respect to the proposed coverage factors reaches an uncovered branch with the highest priority and this priority is assigned by the designed fuzzy expert system. The proposed coverage factors effectively help to determine the characteristics of paths.ResultsWe implemented FSCT on top of CREST and evaluated it using several popular benchmarks. The experimental results show that FSCT outperforms the state-of-the-art techniques in terms of coverage rate and coverage effort.ConclusionFSCT helps concolic testing to better cope with path explosion problem and shows its capabilities to achieve higher code coverage while at the same time decreases testing efforts in terms of both runtime and number of iterations.