DocumentCode
492586
Title
DySy
Author
Csallner, Christoph ; Tillmann, Nikolai ; Smaragdakis, Yannis
Author_Institution
Coll. of Comput., Georgia Tech, Atlanta, GA
fYear
2008
fDate
10-18 May 2008
Firstpage
281
Lastpage
290
Abstract
Dynamically discovering likely program invariants from concrete test executions has emerged as a highly promising software engineering technique. Dynamic invariant inference has the advantage of succinctly summarizing both "expected" program inputs and the subset of program behaviors that is normal under those inputs. In this paper, we introduce a technique that can drastically increase the relevance of inferred invariants, or reduce the size of the test suite required to obtain good invariants. Instead of falsifying invariants produced by pre-set patterns, we determine likely program invariants by combining the concrete execution of actual test cases with a simultaneous symbolic execution of the same tests. The symbolic execution produces abstract conditions over program variables that the concrete tests satisfy during their execution. In this way, we obtain the benefits of dynamic inference tools like Daikon: the inferred invariants correspond to the observed program behaviors. At the same time, however, our inferred invariants are much more suited to the program at hand than Daikon\´s hard-coded invariant patterns. The symbolic invariants are literally derived from the program text itself, with appropriate value substitutions as dictated by symbolic execution. We implemented our technique in the DySy tool, which utilizes a powerful symbolic execution and simplification engine. The results confirm the benefits of our approach. In Daikon\´s prime example benchmark, we infer the majority of the interesting Daikon invariants, while eliminating invariants that a human user is likely to consider irrelevant.
Keywords
program testing; reasoning about programs; system monitoring; DySy tool; abstract program condition; concrete test execution; dynamic program invariant inference; dynamic symbolic execution; program behavior; software engineering technique; Application software; Benchmark testing; Computer science; Concrete; Educational institutions; Engines; Humans; Permission; Software engineering; Software testing; daikon; dynamic invariant inference; dysy; pex; symbolic reasoning;
fLanguage
English
Publisher
ieee
Conference_Titel
Software Engineering, 2008. ICSE '08. ACM/IEEE 30th International Conference on
Conference_Location
Leipzig
ISSN
0270-5257
Print_ISBN
978-1-4244-4486-1
Electronic_ISBN
0270-5257
Type
conf
DOI
10.1145/1368088.1368127
Filename
4814139
Link To Document