Symbolic Execution for Software Testing: Three Decades Later

Abstract

Symbolic execution has garnered a lot of attention in recent years as an effective technique for generating high-coverage test suites and for finding deep errors in complex software applications. While the key idea behind symbolic execution was introduced more than three decades ago, it has only recently been made practical, as a result of significant advances in constraint satisfiability, and of more scalable dynamic approaches that combine concrete and symbolic execution.