Experience Report: Automated System Level Regression Test Prioritization Using Multiple Factors

We propose a new method of determining an effective ordering of regression test cases, and describe its implementation as an automated tool called SuiteBuilder developed by Westermo Research and Development AB. The tool generates an efficient order to run the cases in an existing test suite by using expected or observed test duration and combining priorities of multiple factors associated with test cases, including previous fault detection success, interval since last executed, and modifications to the code tested. The method and tool were developed to address problems in the traditional process of regression testing, such as lack of time to run a complete regression suite, failure to detect bugs in time, and tests that are repeatedly omitted. The tool has been integrated into the existing nightly test framework for Westermo software that runs on large-scale data communication systems. In experimental evaluation of the tool, we found significant improvement in regression testing results. The re-ordered test suites finish within the available time, the majority of fault-detecting test cases are located in the first third of the suite, no important test case is omitted, and the necessity for manual work on the suites is greatly reduced.

[1]  Elaine J. Weyuker,et al.  Predicting the location and number of faults in large software systems , 2005, IEEE Transactions on Software Engineering.

[2]  Darko Marinov,et al.  An empirical analysis of flaky tests , 2014, SIGSOFT FSE.

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

[4]  Mohammad Abdollahi Azgomi,et al.  An improved method for test case prioritization by incorporating historical test case data , 2012, Sci. Comput. Program..

[5]  Mika Mäntylä,et al.  Prioritizing Manual Test Cases in Traditional and Rapid Release Environments , 2015, 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST).

[6]  Elaine J. Weyuker,et al.  The distribution of faults in a large industrial software system , 2002, ISSTA '02.

[7]  Jeffrey K. Hollingsworth,et al.  Efficient instrumentation for code coverage testing , 2002, ISSTA '02.

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

[9]  Lionel C. Briand,et al.  Achieving scalable model-based testing through test case diversity , 2013, TSEM.

[10]  Brendan Murphy,et al.  The Art of Testing Less without Sacrificing Quality , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[11]  Stephane Durocher,et al.  Exploring Test Suite Diversification and Code Coverage in Multi-Objective Test Case Selection , 2015, 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST).

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

[13]  Michael D. Ernst,et al.  Empirically revisiting the test independence assumption , 2014, ISSTA 2014.

[14]  Emelie Engström,et al.  Efficient regression testing based on test history: An industrial evaluation , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[15]  Per Runeson,et al.  Improving Regression Testing Transparency and Efficiency with History-Based Prioritization -- An Industrial Case Study , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[16]  Dusica Marijan,et al.  Multi-perspective Regression Test Prioritization for Time-Constrained Environments , 2015, 2015 IEEE International Conference on Software Quality, Reliability and Security.

[17]  Hyuncheol Park,et al.  Historical Value-Based Approach for Cost-Cognizant Test Case Prioritization to Improve the Effectiveness of Regression Testing , 2008, 2008 Second International Conference on Secure System Integration and Reliability Improvement.

[18]  Mary Lou Soffa,et al.  TimeAware test suite prioritization , 2006, ISSTA '06.

[19]  Robert Feldt Do System Test Cases Grow Old? , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation.

[20]  Y. Fazlalizadeh,et al.  Prioritizing test cases for resource constraint environments using historical test case performance data , 2009, 2009 2nd IEEE International Conference on Computer Science and Information Technology.

[21]  Michael D. Ernst,et al.  Reducing wasted development time via continuous testing , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[22]  Gregg Rothermel,et al.  Techniques for improving regression testing in continuous integration development environments , 2014, SIGSOFT FSE.