Test Case Prioritization in Continuous Integration environments: A systematic mapping study

Abstract Context: Continuous Integration (CI) environments allow frequent integration of software changes, making software evolution more rapid and cost-effective. In such environments, the regression test plays an important role, as well as the use of Test Case Prioritization (TCP) techniques. Such techniques attempt to identify the test case order that maximizes certain goals, such as early fault detection. This research subject has been raising interest because some new challenges are faced in the CI context, as TCP techniques need to consider time constraints of the CI environments. Objective: This work presents the results of a systematic mapping study on Test Case Prioritization in Continuous Integration environments (TCPCI) that reports the main characteristics of TCPCI approaches and their evaluation aspects. Method: The mapping was conducted following a plan that includes the definition of research questions, selection criteria and search string, and the selection of search engines. The search returned 35 primary studies classified based on the goal and kind of used TCP technique, addressed CI particularities and testing problems, and adopted evaluation measures. Results: The results show a growing interest in this research subject. Most studies have been published in the last four years. 80% of the approaches are history-based, that is, are based on the failure and test execution history. The great majority of studies report evaluation results by comparing prioritization techniques. The preferred measures are Time and number/percentage of Faults Detected. Few studies address CI testing problems and characteristics, such as parallel execution and test case volatility. Conclusions: We observed a growing number of studies in the field. Future work should explore other information sources such as models and requirements, as well as CI particularities and testing problems, such as test case volatility, time constraint, and flaky tests, to solve existing challenges and offer cost-effective approaches to the software industry.

[1]  In-Young Ko,et al.  Cost-Effective Regression Testing Using Bloom Filters in Continuous Integration Development Environments , 2017, 2017 24th Asia-Pacific Software Engineering Conference (APSEC).

[2]  Walter Brenner,et al.  Fit for Continuous Integration: How Organizations Assimilate an Agile Practice , 2014, AMCIS.

[3]  Eunseok Lee,et al.  History-Based Test Case Prioritization for Failure Information , 2016, 2016 23rd Asia-Pacific Software Engineering Conference (APSEC).

[4]  Gregg Rothermel,et al.  Incorporating varying test costs and fault severities into test case prioritization , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[5]  Tsong Yueh Chen,et al.  How well does test case prioritization integrate with statistical fault localization? , 2012, Inf. Softw. Technol..

[6]  Dayang N. A. Jawawi,et al.  Test case prioritization approaches in regression testing: A systematic literature review , 2018, Inf. Softw. Technol..

[7]  Yuming Zhou,et al.  The impact of continuous integration on other software development practices: A large-scale empirical study , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[8]  Gregg Rothermel,et al.  TERMINATOR: better automated UI test case prioritization , 2019, ESEC/SIGSOFT FSE.

[9]  Casper Lassenius,et al.  Problems, causes and solutions when adopting continuous delivery - A systematic literature review , 2017, Inf. Softw. Technol..

[10]  Bo Jiang,et al.  Testing and Debugging in Continuous Integration with Budget Quotas on Test Executions , 2016, 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS).

[11]  Klaus D. Müller-Glaser,et al.  Fast Feedback from Automated Tests Executed with the Product Build , 2016, SWQD.

[12]  Morten Mossige,et al.  Reinforcement learning for automatic test case prioritization and selection in continuous integration , 2017, ISSTA.

[13]  Mark Harman,et al.  Faster Fault Finding at Google Using Multi Objective Regression Test Optimisation , 2011 .

[14]  Claes Wohlin,et al.  Guidelines for snowballing in systematic literature studies and a replication in software engineering , 2014, EASE '14.

[15]  Gregg Rothermel,et al.  Redefining Prioritization: Continuous Prioritization for Continuous Integration , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[16]  Arnaud Gotlieb,et al.  TITAN: Test Suite Optimization for Highly Configurable Software , 2017, 2017 IEEE International Conference on Software Testing, Verification and Validation (ICST).

[17]  Alexander Radway,et al.  Continuous Integration and Visual GUI Testing: Benefits and Drawbacks in Industrial Practice , 2018, 2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST).

[18]  Tao Xie,et al.  Learning for test prioritization: an industrial case study , 2016, SIGSOFT FSE.

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

[20]  Peter C. Rigby,et al.  Test Re-Prioritization in Continuous Testing Environments , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[21]  Yaser Hafeez,et al.  Enhanced regression testing technique for agile software development and continuous integration strategies , 2019, Software Quality Journal.

[22]  Yves Le Traon,et al.  Comparing White-Box and Black-Box Test Prioritization , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[23]  Arnaud Gotlieb,et al.  Test Case Prioritization for Continuous Regression Testing: An Industrial Case Study , 2013, 2013 IEEE International Conference on Software Maintenance.

[24]  Sagar Sen,et al.  DevOps Improvements for Reduced Cycle Times with Integrated Test Optimizations for Continuous Integration , 2018, 2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC).

[25]  Elaine J. Weyuker,et al.  Automated System-Level Regression Test Prioritization in a Nutshell , 2017, IEEE Software.

[26]  Amit Kumar,et al.  A Literature Survey on test case prioritization , 2014 .

[27]  Peter C. Rigby,et al.  Improving Test Effectiveness Using Test Executions History: An Industrial Experience Report , 2019, 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP).

[28]  Miroslaw Staron,et al.  Supporting Continuous Integration by Code-Churn Based Test Selection , 2015, 2015 IEEE/ACM 2nd International Workshop on Rapid Continuous Software Engineering.

[29]  Rajiv Gupta,et al.  Fault localization using value replacement , 2008, ISSTA '08.

[30]  Mary Jean Harrold,et al.  Empirical evaluation of the tarantula automatic fault-localization technique , 2005, ASE.

[31]  Huai Liu,et al.  Monitoring Informed Testing for IoT , 2018, 2018 25th Australasian Software Engineering Conference (ASWEC).

[32]  Dusica Marijan,et al.  Test Prioritization with Optimally Balanced Configuration Coverage , 2017, 2017 IEEE 18th International Symposium on High Assurance Systems Engineering (HASE).

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

[34]  Gregg Rothermel,et al.  Prioritizing test cases for regression testing , 2000, ISSTA '00.

[35]  Arvinder Kaur,et al.  Systematic Literature Review on Regression Test Prioritization Techniques , 2012, Informatica.

[36]  Deepti Mishra,et al.  Test case prioritization: a systematic mapping study , 2012, Software Quality Journal.

[37]  Vahid Garousi,et al.  The need for multivocal literature reviews in software engineering: complementing systematic literature reviews with grey literature , 2016, EASE.

[38]  Pasi Kuvaja,et al.  Systematic literature review on the impacts of agile release engineering practices , 2017, Inf. Softw. Technol..

[39]  Myra B. Cohen,et al.  Combinatorial Interaction Regression Testing: A Study of Test Case Generation and Prioritization , 2007, 2007 IEEE International Conference on Software Maintenance.

[40]  Kai Petersen,et al.  Systematic Mapping Studies in Software Engineering , 2008, EASE.

[41]  Bo Jiang,et al.  On the Integration of Test Adequacy, Test Case Prioritization, and Statistical Fault Localization , 2010, 2010 10th International Conference on Quality Software.

[42]  Dusica Marijan,et al.  Effect of Time Window on the Performance of Continuous Regression Testing , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[43]  T. H. Tse,et al.  On Practical Adequate Test Suites for Integrated Test Case Prioritization and Fault Localization , 2011, 2011 11th International Conference on Quality Software.

[44]  Vahid Garousi,et al.  Guidelines for including the grey literature and conducting multivocal literature reviews in software engineering , 2017, Inf. Softw. Technol..

[45]  Jan Bosch,et al.  Modeling continuous integration practice differences in industry software development , 2014, J. Syst. Softw..

[46]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[47]  Shuai Wang,et al.  Employing rule mining and multi-objective search for dynamic test case prioritization , 2019, J. Syst. Softw..

[48]  Lu Zhang,et al.  Optimizing test prioritization via test distribution analysis , 2018, ESEC/SIGSOFT FSE.

[49]  Theodore D. Hellmann,et al.  Agile Testing: Past, Present, and Future -- Charting a Systematic Map of Testing in Agile Software Development , 2012, 2012 Agile Conference.

[50]  Mary Jean Harrold,et al.  An empirical study of the effects of test-suite reduction on fault localization , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[51]  Liming Zhu,et al.  Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices , 2017, IEEE Access.

[52]  Hanspeter Pfister,et al.  UpSet: Visualization of Intersecting Sets , 2014, IEEE Transactions on Visualization and Computer Graphics.

[53]  D. Moher,et al.  Preferred reporting items for systematic reviews and meta-analyses: the PRISMA Statement , 2009, BMJ : British Medical Journal.

[54]  Pasi Kuvaja,et al.  Test Prioritization in Continuous Integration Environments , 2018, J. Syst. Softw..

[55]  Arnaud Gotlieb,et al.  A learning algorithm for optimizing continuous integration development and testing practice , 2018, Softw. Pract. Exp..

[56]  Jerffeson Teixeira de Souza,et al.  Incorporating user preferences in search-based software engineering: A systematic mapping study , 2017, Inf. Softw. Technol..

[57]  Foutse Khomh,et al.  On rapid releases and software testing: a case study and a semi-systematic literature review , 2015, Empirical Software Engineering.

[58]  Eunseok Lee,et al.  Failure history data-based test case prioritization for effective regression test , 2017, SAC.

[59]  Mika Mäntylä,et al.  The highways and country roads to continuous deployment , 2015, IEEE Software.

[60]  Elaine J. Weyuker,et al.  Experience Report: Automated System Level Regression Test Prioritization Using Multiple Factors , 2016, 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE).

[61]  Tsong Yueh Chen,et al.  How Well Do Test Case Prioritization Techniques Support Statistical Fault Localization , 2009, 2009 33rd Annual IEEE International Computer Software and Applications Conference.

[62]  Aurora Trinidad Ramirez Pozo,et al.  Hyper-Heuristic Based Product Selection for Software Product Line Testing , 2017, IEEE Computational Intelligence Magazine.

[63]  Georgios Gousios,et al.  TravisTorrent: Synthesizing Travis CI and GitHub for Full-Stack Research on Continuous Integration , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

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

[65]  Ying Zhong,et al.  Test case prioritization and selection technique in continuous integration development environments: a case study , 2018 .

[66]  Wen Wen,et al.  Improving RETECS method using FP-Growth in continuous integration , 2018, 2018 5th IEEE International Conference on Cloud Computing and Intelligence Systems (CCIS).

[67]  Gregg Rothermel,et al.  Test case prioritization: an empirical study , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).