NASA NTRS · 20030017985
Generalized Symbolic Execution for Model Checking and Testing
Abstract
Modern software systems, which often are concurrent and manipulate complex data structures must be extremely reliable. We present a novel framework based on symbolic execution, for automated checking of such systems. We provide a two-fold generalization of traditional symbolic execution based approaches: one, we define a program instrumentation, which enables standard model checkers to perform symbolic execution; two, we give a novel symbolic execution algorithm that handles dynamically allocated structures (e.g., lists and trees), method preconditions (e.g., acyclicity of lists), data (e.g., integers and strings) and concurrency. The program instrumentation enables a model checker to automatically explore program heap configurations (using a systematic treatment of aliasing) and manipulate logical formulae on program data values (using a decision procedure). We illustrate two applications of our framework: checking correctness of multi-threaded programs that take inputs from unbounded domains with complex structure and generation of non-isomorphic test inputs that satisfy a testing criterion. Our implementation for Java uses the Java PathFinder model checker.
Keep this discovery
Explore connections, maps & timelines
Khurshid, Sarfraz, Pasareanu, Corina, Visser, Willem, Kofmeyer, David. 2003-01-01. Generalized Symbolic Execution for Model Checking and Testing. https://ntrs.nasa.gov/citations/20030017985
Cite the original work for its findings. Save a collection to share your selection of sources.