• 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