Efficient regression testing based on test history: An industrial evaluation

Due to changes in the development practices at Axis Communications, towards continuous integration, faster regression testing feedback is needed. The current automated regression test suite takes approximately seven hours to run which prevents developers from integrating code changes several times a day as preferred. Therefore we want to implement a highly selective yet accurate regression testing strategy. Traditional code coverage based techniques are not applicable due to the size and complexity of the software under test. Instead we decided to select tests based on regression test history. We developed a tool, the Difference Engine, which parses and analyzes results from previous test runs and outputs regression test recommendations. The Difference Engine correlates code and test cases at package level and recommends test cases that are strongly correlated to recently changed packages. We evaluated the technique with respect to correctness, precision, recall and efficiency. Our results are promising. On average the tool manages to identify 80% of the relevant tests while recommending only 4% of the test cases in the full regression test suite.

[1]  Per Runeson,et al.  A systematic review on regression test selection techniques , 2010, Inf. Softw. Technol..

[2]  Gregg Rothermel,et al.  An empirical study of regression test selection techniques , 2001, ACM Trans. Softw. Eng. Methodol..

[3]  Adam A. Porter,et al.  A history-based test prioritization technique for regression testing in resource constrained environments , 2002, ICSE '02.

[4]  Mark Harman,et al.  Regression testing minimization, selection and prioritization: a survey , 2012, Softw. Test. Verification Reliab..

[5]  RothermelGregg,et al.  An empirical study of regression test application frequency , 2005 .

[6]  Per Runeson,et al.  A Qualitative Survey of Regression Testing Practices , 2010, PROFES.

[7]  Gregg Rothermel,et al.  A safe, efficient regression test selection technique , 1997, TSEM.

[8]  Frank P. A. Coolen,et al.  Managing the uncertainties of software testing: a Bayesian approach , 2001 .

[9]  Tibor Gyimóthy,et al.  Code coverage-based regression test selection and prioritization in WebKit , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[10]  Gregg Rothermel,et al.  An empirical study of regression test application frequency , 2005, Softw. Test. Verification Reliab..

[11]  Per Runeson,et al.  An Empirical Evaluation of Regression Testing Based on Fix-Cache Recommendations , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[12]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[13]  Robert Feldt,et al.  Dynamic Regression Test Selection Based on a File Cache An Industrial Evaluation , 2009, 2009 International Conference on Software Testing Verification and Validation.

[14]  Kuan-Li Peng,et al.  A history-based cost-cognizant test case prioritization technique in regression testing , 2012, J. Syst. Softw..