TY - GEN
T1 - Regression test selection for distributed software histories
AU - Gligoric, Milos
AU - Majumdar, Rupak
AU - Sharma, Rohan
AU - Eloussi, Lamyaa
AU - Marinov, Darko
PY - 2014
Y1 - 2014
N2 - Regression test selection analyzes incremental changes to a codebase and chooses to run only those tests whose behavior may be affected by the latest changes in the code. By focusing on a small subset of all the tests, the testing process runs faster and can be more tightly integrated into the development process. Existing techniques for regression test selection consider two versions of the code at a time, effectively assuming a development process where changes to the code occur in a linear sequence. Modern development processes that use distributed version-control systems are more complex. Software version histories are generally modeled as directed graphs; in addition to version changes occurring linearly, multiple versions can be related by other commands, e.g., branch, merge, rebase, cherry-pick, revert, etc. This paper describes a regression test-selection technique for software developed using modern distributed version-control systems. By modeling different branch or merge commands directly in our technique, it computes safe test sets that can be substantially smaller than applying previous techniques to a linearization of the software history. We evaluate our technique on software histories of several large open-source projects. The results are encouraging: our technique obtained an average of 10.89x reduction in the number of tests over an existing technique while still selecting all tests whose behavior may differ.
AB - Regression test selection analyzes incremental changes to a codebase and chooses to run only those tests whose behavior may be affected by the latest changes in the code. By focusing on a small subset of all the tests, the testing process runs faster and can be more tightly integrated into the development process. Existing techniques for regression test selection consider two versions of the code at a time, effectively assuming a development process where changes to the code occur in a linear sequence. Modern development processes that use distributed version-control systems are more complex. Software version histories are generally modeled as directed graphs; in addition to version changes occurring linearly, multiple versions can be related by other commands, e.g., branch, merge, rebase, cherry-pick, revert, etc. This paper describes a regression test-selection technique for software developed using modern distributed version-control systems. By modeling different branch or merge commands directly in our technique, it computes safe test sets that can be substantially smaller than applying previous techniques to a linearization of the software history. We evaluate our technique on software histories of several large open-source projects. The results are encouraging: our technique obtained an average of 10.89x reduction in the number of tests over an existing technique while still selecting all tests whose behavior may differ.
UR - http://www.scopus.com/inward/record.url?scp=84904819123&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84904819123&partnerID=8YFLogxK
U2 - 10.1007/978-3-319-08867-9_19
DO - 10.1007/978-3-319-08867-9_19
M3 - Conference contribution
AN - SCOPUS:84904819123
SN - 9783319088662
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 293
EP - 309
BT - Computer Aided Verification - 26th International Conference, CAV 2014, Held as Part of the Vienna Summer of Logic, VSL 2014, Proceedings
PB - Springer
T2 - 26th International Conference on Computer Aided Verification, CAV 2014 - Held as Part of the Vienna Summer of Logic, VSL 2014
Y2 - 18 July 2014 through 22 July 2014
ER -