DiverJS: path exploration heuristic for difference analysis of event-driven code
DiverJS: path exploration heuristic for difference analysis of event-driven code
复制标题
DOI:
10.1145/3412841.3442049
复制
发表时间:
2021-03
期刊:
影响因子:
--
通讯作者:
Ena Tominaga;Yoshitaka Arahori;K. Gondow
中科院分区:
文献类型:
--
作者:
Ena Tominaga;Yoshitaka Arahori;K. Gondow
The existing methods of difference analysis cannot cope with event-driven code well, since they explore only the input space for program input like integers and strings, but do not explore the event space for all possible event sequences. This paper proposes a novel heuristic, as well as a tool called DiverJS, for performing difference analysis that copes well with both the input space and event space. To efficiently explore huge space, DiverJS prunes redundant event sequences based on Dynamic Partial Order Reduction (DPOR). DiverJS also stochastically switches two exploration heuristics: (1) one aims to increase code coverage, using shared variable information, derived from Write-Read (WR) set and dynamic taint analysis, (2) the other aims to guide the execution to the location of code changes, using the distance between the branch to be negated and the change. We conducted a preliminary experiment to evaluate the detection accuracy of program behavioral differences, and the efficiency of exploration by the number of paths. The result shows DiverJS outperformed the existing methods; DiverJS detected the differences with higher detection accuracy in fewer paths, which suggests our DiverJS's difference analysis is effective and efficient.