Combining Symbolic Execution and Search-Based Testing for Programs with Complex Heap Inputs

被引:44
作者
Braione, Pietro [1 ]
Denaro, Giovanni [1 ]
Mattavelli, Andrea [2 ]
Pezze, Mauro [3 ]
机构
[1] Univ Milano Bicocca, Milan, Italy
[2] Imperial Coll London, London, England
[3] USI, Lugano, Switzerland
来源
PROCEEDINGS OF THE 26TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON SOFTWARE TESTING AND ANALYSIS (ISSTA'17) | 2017年
基金
英国工程与自然科学研究理事会;
关键词
Automatic test case generation; Symbolic execution; Search-based software engineering; GENERATION;
D O I
10.1145/3092703.3092715
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Despite the recent improvements in automatic test case generation, handling complex data structures as test inputs is still an open problem. Search-based approaches can generate sequences of method calls that instantiate structured inputs to exercise a relevant portion of the code, but fall short in building inputs to execute program elements whose reachability is determined by the structural features of the input structures themselves. Symbolic execution techniques can effectively handle structured inputs, but do not identify the sequences of method calls that instantiate the input structures through legal interfaces. In this paper, we propose a new approach to automatically generate test cases for programs with complex data structures as inputs. We use symbolic execution to generate path conditions that characterise the dependencies between the program paths and the input structures, and convert the path conditions to optimisation problems that we solve with search-based techniques to produce sequences of method calls that instantiate those inputs. Our preliminary results show that the approach is indeed effective in generating test cases for programs with complex data structures as inputs, thus opening a promising research direction.
引用
收藏
页码:90 / 101
页数:12
相关论文
共 56 条
  • [1] Albert E., 2011, 2011 18th Working Conference on Reverse Engineering, P441, DOI 10.1109/WCRE.2011.67
  • [2] Baars A., 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering, P53, DOI 10.1109/ASE.2011.6100119
  • [3] Baluda M, 2015, INT WORKSH AUT TEST, P16, DOI [10.1145/2804322.2804325, DOI 10.1145/2804322.2804325]
  • [4] Bidirectional Symbolic Analysis for Effective Branch Testing
    Baluda, Mauro
    Denaro, Giovanni
    Pezze, Mauro
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2016, 42 (05) : 403 - 426
  • [5] Enhancing structural software coverage by incrementally computing branch executability
    Baluda, Mauro
    Braione, Pietro
    Denaro, Giovanni
    Pezze, Mauro
    [J]. SOFTWARE QUALITY JOURNAL, 2011, 19 (04) : 725 - 751
  • [6] 6 Years of SMT-COMP
    Barrett, Clark
    Deters, Morgan
    de Moura, Leonardo
    Oliveras, Albert
    Stump, Aaron
    [J]. JOURNAL OF AUTOMATED REASONING, 2013, 50 (03) : 243 - 277
  • [7] Boyapati C., 2002, Software Engineering Notes, V27, P123, DOI 10.1145/566171.566191
  • [8] Braione P., 2014, SOFTW QUAL J, V22, P1
  • [9] Braione P., 2013, P 9 JOINT M FDN SOFT, P411
  • [10] JBSE: A Symbolic Executor for Java']Java Programs with Complex Heap Inputs
    Braione, Pietro
    Denaro, Giovanni
    Pezze, Mauro
    [J]. FSE'16: PROCEEDINGS OF THE 2016 24TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2016, : 1018 - 1022