Maximizing Branch Coverage with Constrained Horn Clauses
Open Access
- 30 March 2022
- book chapter
- Published by Springer Nature
- p. 254-272
Abstract
State-of-the-art solvers for constrained Horn clauses (CHC) are successfully used to generate reachability facts from symbolic encodings of programs. In this paper, we present a new application to test-case generation: if a block of code is provably unreachable, no test case can be generated allowing to explore other blocks of code. Our new approach uses CHC to incrementally construct different program unrollings and extract test cases from models of satisfiable formulas. At the same time, a CHC solver keeps track of CHCs that represent unreachable blocks of code which makes the unrolling process more efficient. In practice, this lets our approach to terminate early while guaranteeing maximal coverage. Our implementation called Horntinuum exhibits promising performance: it generates high coverage in the majority of cases and spends less time on average than state-of-the-art.Keywords
This publication has 32 references indexed in Scilit:
- A Data Driven Approach for Algebraic Loop Invariants2013
- Grammar-based whitebox fuzzingACM SIGPLAN Notices, 2008
- Demand-Driven Compositional Symbolic Execution2008
- Z3: An Efficient SMT Solver2008
- CUTEACM SIGSOFT Software Engineering Notes, 2005
- Test input generation with java PathFinderACM SIGSOFT Software Engineering Notes, 2004
- A Tool for Checking ANSI-C Programs2004
- Houdini, an Annotation Assistant for ESC/Java2001
- Symbolic Model Checking without BDDs1999
- Symbolic execution and program testingCommunications of the ACM, 1976