Non-Semantics-Preserving Transformations For Higher-Coverage Test Generation Using Symbolic Execution

被引:5
作者
Converse, Hayes [1 ]
Olivo, Oswaldo [2 ]
Khurshid, Sarfraz [1 ]
机构
[1] Univ Texas Austin, Elect & Comp Engn, Austin, TX 78712 USA
[2] Univ Texas Austin, Comp Sci, Austin, TX 78712 USA
来源
2017 10TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION (ICST) | 2017年
基金
美国国家科学基金会;
关键词
Symbolic Execution; compiler optimizations; non-semantics-preserving transformations; test generation; LLVM; KLEE;
D O I
10.1109/ICST.2017.29
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Symbolic execution is a well-studied method that has a number of useful applications, including generation of high quality test suites that find many bugs. However, scaling it to real world applications is a significant challenge, as it depends on the often expensive process of solving constraints on program inputs. Our insight is that when the goal of symbolic execution is test generation, non-semantics-preserving program transformations can reduce the cost of symbolic execution and the tests generated for the transformed programs can still serve as quality suites for the original program. We present five such transformations based on a few different program simplification heuristics that are designed to lower the cost of symbolic execution for input generation. As enabling technology we use the KLEE symbolic execution engine and the LLVM compiler infrastructure. We evaluate our transformations using a suite of small subjects as well as a subset of the well-studied Unix Coreutils. In a majority of cases, our approach reduces the time for symbolic execution for input generation and increases code coverage of the resultant suite.
引用
收藏
页码:241 / 252
页数:12
相关论文
共 43 条
[1]  
Albert E., 2011, LOG BAS PROGR SYNTH, P99
[2]  
Anand S, 2008, LECT NOTES COMPUT SC, V4963, P367, DOI 10.1007/978-3-540-78800-3_28
[3]  
[Anonymous], 2012, ACM QUEUE, DOI DOI 10.1145/2090147.2094081
[4]  
Avgerinos T., 2011, NDSS
[5]  
Baresel A., 2004, Software Engineering Notes, V29, P108, DOI 10.1145/1013886.1007527
[6]  
Baresel A, 2003, LECT NOTES COMPUT SC, V2724, P2442
[7]  
Burnim Jacob, 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering, P443, DOI 10.1109/ASE.2008.69
[8]  
Bush WR, 2000, SOFTWARE PRACT EXPER, V30, P775, DOI 10.1002/(SICI)1097-024X(200006)30:7<775::AID-SPE309>3.0.CO
[9]  
2-H
[10]  
Cadar C., 2008, Proceedings of the 8th USENIX conference on Operating systems design and implementation, OSDI'08, (USA), P209