Title
Automating Differential Testing with Overapproximate Symbolic Execution
Abstract
Before releasing updated software, developers typically run regression test suites to verify that the code changes behave as intended and do not introduce unintended behaviors. Regression test suites, however, are often incomplete and can miss relevant software behaviors. To mitigate this issue, we introduce a technique for detecting potentially unintended behavioral changes. Given two versions of the software, our technique first finds functions that reach modified code in either version. It then performs underconstrained symbolic execution on both the original and revised programs, starting from the identified functions. If the execution reaches changed code, the technique compares corresponding program states across versions and logs differences. Because the so-generated raw log can contain a large number of redundant entries and a mixture of both intended and unintended differences, our technique clusters, orders, and ranks the logged differences to help developers identify feasible, unintended differences. We evaluated our technique by (1) applying it to a large set of known regressions, (2) comparing our results with those of a state-of-the-art approach, and (3) applying it to a popular program, Redis. Our results are promising: for the known regressions, our technique automatically identified more than half of the regressions, generated a low number of false positives, ranked the true positives above the false positives in most cases, and reported more regressions than the state-of-the-art technique we used as a baseline; for the refactored Redis versions, our technique reported no regressions.
Year
DOI
Venue
2022
10.1109/ICST53961.2022.00035
2022 IEEE Conference on Software Testing, Verification and Validation (ICST)
Keywords
DocType
ISSN
differential testing,overapproximate symbolic execution,updated software,regression test suites,code changes,unintended behaviors,relevant software behaviors,potentially unintended behavioral changes,underconstrained symbolic execution,original revised programs,identified functions,changed code,corresponding program states,logs differences,raw log,intended differences,unintended differences,technique clusters,logged differences,feasible differences,known regressions,popular program,refactored Redis versions
Conference
2159-4848
ISBN
Citations 
PageRank 
978-1-6654-6680-6
0
0.34
References 
Authors
21
2
Name
Order
Citations
PageRank
Richard Rutledge100.34
Alessandro Orso23550172.85