Techniques for Improving Regression Testing in Continuous Integration Development Environments Sebastian Elbaumy, Gregg Rothermely, John Penixz yUniversity of Nebraska - Lincoln zGoogle, Inc. Lincoln, NE, USA Mountain View, CA, USA {elbaum, grother}@cse.unl.edu
[email protected] ABSTRACT 1. INTRODUCTION In continuous integration development environments, software en- In continuous integration development environments, engineers gineers frequently integrate new or changed code with the main- merge code that is under development or maintenance with the line codebase. This can reduce the amount of code rework that is mainline codebase at frequent time intervals [8, 13]. Merged code needed as systems evolve and speed up development time. While is then regression tested to help ensure that the codebase remains continuous integration processes traditionally require that extensive stable and that continuing engineering efforts can be performed testing be performed following the actual submission of code to more reliably. This approach is advantageous because it can re- the codebase, it is also important to ensure that enough testing is duce the amount of code rework that is needed in later phases of performed prior to code submission to avoid breaking builds and development, and speed up overall development time. As a result, delaying the fast feedback that makes continuous integration de- increasingly, organizations that create software are using contin- sirable. In this work, we present algorithms that make continu- uous integration processes to improve their product development, ous integration processes more cost-effective. In an initial pre- and tools for supporting these processes are increasingly common submit phase of testing, developers specify modules to be tested, (e.g., [3, 17, 29]).