A survey of new trends in symbolic execution for software testing and analysis

被引:132
|
作者
Corina S. Păsăreanu
Willem Visser
机构
[1] Carnegie Mellon University,NASA Ames Research Center
[2] University of Stellenbosch,Department of Computer Science
关键词
Model Checker; Decision Procedure; Path Condition; Symbolic Execution; Symbolic State;
D O I
10.1007/s10009-009-0118-1
中图分类号
学科分类号
摘要
Symbolic execution is a well-known program analysis technique which represents program inputs with symbolic values instead of concrete, initialized, data and executes the program by manipulating program expressions involving the symbolic values. Symbolic execution has been proposed over three decades ago but recently it has found renewed interest in the research community, due in part to the progress in decision procedures, availability of powerful computers and new algorithmic developments. We provide here a survey of some of the new research trends in symbolic execution, with particular emphasis on applications to test generation and program analysis. We first describe an approach that handles complex programming constructs such as input recursive data structures, arrays, as well as multithreading. Furthermore, we describe recent hybrid techniques that combine concrete and symbolic execution to overcome some of the inherent limitations of symbolic execution, such as handling native code or availability of decision procedures for the application domain. We follow with a discussion of techniques that can be used to limit the (possibly infinite) number of symbolic configurations that need to be analyzed for the symbolic execution of looping programs. Finally, we give a short survey of interesting new applications, such as predictive testing, invariant inference, program repair, analysis of parallel numerical programs and differential symbolic execution.
引用
收藏
页码:339 / 353
页数:14
相关论文
共 50 条
  • [21] APPLICATIONS OF SYMBOLIC EXECUTION TO PROGRAM TESTING
    DARRINGER, JA
    KING, JC
    [J]. COMPUTER, 1978, 11 (04) : 51 - 59
  • [22] Symbolic execution and model checking for testing
    Pasareanu, Corina S.
    Visser, Willem
    [J]. HARDWARE AND SOFTWARE: VERIFICATION AND TESTING, 2008, 4899 : 17 - +
  • [23] TESTING MIXAL PROGRAMS BY SYMBOLIC EXECUTION
    ERMAKOV, GV
    [J]. PROGRAMMING AND COMPUTER SOFTWARE, 1988, 14 (01) : 1 - 6
  • [24] Symbolic Execution Enhanced System Testing
    Davies, Misty
    Pasareanu, Corina S.
    Raman, Vishwanath
    [J]. VERIFIED SOFTWARE: THEORIES, TOOLS, EXPERIMENTS, 2012, 7152 : 294 - +
  • [25] Symbolic execution techniques for refinement testing
    Le Gall, Pascale
    Rapin, Nicolas
    Touil, Assia
    [J]. TESTS AND PROOFS, 2007, 4454 : 131 - +
  • [26] A Survey of Recent Trends in Testing Concurrent Software Systems
    Bianchi, Francesco Adalberto
    Margara, Alessandro
    Pezze, Mauro
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2018, 44 (08) : 747 - 783
  • [27] Symbolic Execution and Recent Applications to Worst-Case Execution, Load Testing, and Security Analysis
    Pasareanu, Corina S.
    Kersten, Rody
    Luckow, Kasper
    Phan, Quoc-Sang
    [J]. ADVANCES IN COMPUTERS, VOL 113, 2019, 113 : 289 - 314
  • [28] Generalized symbolic execution for model checking and testing
    Khurshid, S
    Pasareanu, CS
    Visser, W
    [J]. TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, PROCEEDINGS, 2003, 2619 : 553 - 568
  • [29] Dynamic Symbolic Execution for Testing Distributed Objects
    Griesmayer, Andreas
    Aichernig, Bernhard
    Johnsen, Einar Broch
    Schlatte, Rudolf
    [J]. TESTS AND PROOFS, PROCEEDINGS, 2009, 5668 : 105 - 120
  • [30] Hybrid Testing Based on Symbolic Execution and Fuzzing
    Xie, Xiao-Fei
    Li, Xiao-Hong
    Chen, Xiang
    Meng, Guo-Zhu
    Liu, Yang
    [J]. Ruan Jian Xue Bao/Journal of Software, 2019, 30 (10): : 3071 - 3089