TY - GEN
T1 - On test repair using symbolic execution
AU - Daniel, Brett
AU - Gvero, Tihomir
AU - Marinov, Darko
PY - 2010
Y1 - 2010
N2 - 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.
AB - 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.
KW - Verification
UR - http://www.scopus.com/inward/record.url?scp=77955892905&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=77955892905&partnerID=8YFLogxK
U2 - 10.1145/1831708.1831734
DO - 10.1145/1831708.1831734
M3 - Conference contribution
AN - SCOPUS:77955892905
SN - 9781605588230
T3 - ISSTA'10 - Proceedings of the 2010 International Symposium on Software Testing and Analysis
SP - 207
EP - 217
BT - ISSTA'10 - Proceedings of the 2010 International Symposium on Software Testing and Analysis
T2 - 19th International Symposium on Software Testing and Analysis, ISSTA 2010
Y2 - 12 July 2010 through 16 July 2010
ER -