TY - GEN
T1 - Efficient solving of structural constraints
AU - Elkarablieh, Bassem
AU - Marinov, Darko
AU - Khurshid, Sarfraz
PY - 2008
Y1 - 2008
N2 - Structural constraint solving is being increasingly used for software reliability tasks such as systematic testing or error recovery. For example, the Korat algorithm provides constraint-based test generation: given a Java predicate that describes desired input constraints and a bound on the input size, Korat systematically searches the bounded input space of the predicate to generate all inputs that satisfy the constraints. As another example, the STARC tool uses a constraint-based search to repair broken data structures. A key issue for these approaches is the efficiency of search. This paper presents a novel approach that significantly improves the efficiency of structural constraint solvers. Specifically, most existing approaches use backtracking through code re-execution to explore their search space. In contrast, our approach performs checkpoint-based backtracking by storing partial program states and performing abstract undo operations. The heart of our approach is a light-weight search that is performed purely through code instrumentation. The experimental results on Korat and STARC for generating and repairing a set of complex data structures show an order to two orders of magnitude speed-up over the traditionally used searches.
AB - Structural constraint solving is being increasingly used for software reliability tasks such as systematic testing or error recovery. For example, the Korat algorithm provides constraint-based test generation: given a Java predicate that describes desired input constraints and a bound on the input size, Korat systematically searches the bounded input space of the predicate to generate all inputs that satisfy the constraints. As another example, the STARC tool uses a constraint-based search to repair broken data structures. A key issue for these approaches is the efficiency of search. This paper presents a novel approach that significantly improves the efficiency of structural constraint solvers. Specifically, most existing approaches use backtracking through code re-execution to explore their search space. In contrast, our approach performs checkpoint-based backtracking by storing partial program states and performing abstract undo operations. The heart of our approach is a light-weight search that is performed purely through code instrumentation. The experimental results on Korat and STARC for generating and repairing a set of complex data structures show an order to two orders of magnitude speed-up over the traditionally used searches.
KW - Backtracking
KW - Model checking
KW - Systematic testing
UR - http://www.scopus.com/inward/record.url?scp=57449108687&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=57449108687&partnerID=8YFLogxK
U2 - 10.1145/1390630.1390637
DO - 10.1145/1390630.1390637
M3 - Conference contribution
AN - SCOPUS:57449108687
SN - 9781605580500
T3 - ISSTA'08: Proceedings of the 2008 International Symposium on Software Testing and Analysis 2008
SP - 39
EP - 49
BT - ISSTA'08
T2 - 2008 International Symposium on Software Testing and Analysis, ISSTA 2008
Y2 - 20 July 2008 through 24 July 2008
ER -