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

Date
2009-10
Authors
Pasareanu, Corina S.
Visser, Willem
Journal Title
Journal ISSN
Volume Title
Publisher
Springer Verlag
Abstract
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 sym- bolic 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 multith- reading. 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 proce- dures for the application domain. We follow with a dis- cussion of techniques that can be used to limit the (possi- bly infinite) number of symbolic configurations that need to be analyzed for the symbolic execution of looping pro- grams. 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.
Description
The original publication is available at http://link.springer.com/article/10.1007/s10009-009-0118-1
Keywords
Symbolic values, Symbolic execution, Computer programming, Computer software -- Testing
Citation
Pasareanu, C. S. & Visser, W. 2009. A survey of new trends in symbolic execution for software testing and analysis. International Journal on Software Tools for Technology Transfer, 11(4):339-353, doi:10.1007/s10009-009-0118-1.