On test repair using symbolic execution

Brett Daniel, Tihomir Gvero, Darko Marinov

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

When developers change a program, regression tests can fail not only due to faults in the program but also due to out-of-date test code that does not reflect the desired behavior of the program. When this occurs, it is necessary to repair test code such that the tests pass. Repairing tests manually is difficult and time consuming. We recently developed ReAssert, a tool that can automatically repair broken unit tests, but only if they lack complex control flow or operations on expected values. This paper introduces symbolic test repair, a technique based on symbolic execution, which can overcome some of ReAssert's limitations. We reproduce experiments from earlier work and find that symbolic test repair improves upon previously reported results both quantitatively and qualitatively. We also perform new experiments which confirm the benefits of symbolic test repair and also show surprising similarities in test failures for open-source Java and NET programs. Our experiments use Pex, a powerful symbolic execution engine for NET, and we find that Pex provides over half of the repairs possible from the theoretically ideal symbolic test repair.

Original languageEnglish (US)
Title of host publicationISSTA'10 - Proceedings of the 2010 International Symposium on Software Testing and Analysis
Pages207-217
Number of pages11
DOIs
StatePublished - 2010
Event19th International Symposium on Software Testing and Analysis, ISSTA 2010 - Trento, Italy
Duration: Jul 12 2010Jul 16 2010

Publication series

NameISSTA'10 - Proceedings of the 2010 International Symposium on Software Testing and Analysis

Other

Other19th International Symposium on Software Testing and Analysis, ISSTA 2010
Country/TerritoryItaly
CityTrento
Period7/12/107/16/10

Keywords

  • Verification

ASJC Scopus subject areas

  • Computational Theory and Mathematics
  • Software

Fingerprint

Dive into the research topics of 'On test repair using symbolic execution'. Together they form a unique fingerprint.

Cite this