On the use of evolutionary algorithms for test case prioritization in regression testing considering requirements dependencies

Nowadays, software systems encounter repeated modifications in order to satisfy any requirement regarding a business change. To assure that these changes do not affect systems' proper functioning, those parts affected by the changes need to be retested, minimizing the negative impact of performed modifications on another part of the software. In this research, we investigate how different optimization techniques (with various criteria) could improve the effectiveness of the testing activity, in particular the effectiveness of test case prioritization. The most efficient test schedules are identified by using either a Greedy algorithm or a Genetic Algorithm, optimizing a quality function that incorporates single or multiple criteria. Both functional requirements (with the existing dependencies between them) and non-functional requirements (i.e. quality attributes for test cases) are integrated with the quality assessment of a test order. Therefore, the conducted experiments considered various criteria combinations (faults, costs, and number of test cases), being applied to both theoretical case studies and a real-world benchmark. The conclusion of the experiments shows that the Genetic Algorithm outperforms the Greedy on all considered criteria.

[1]  David E. Goldberg,et al.  Genetic Algorithms in Search Optimization and Machine Learning , 1988 .

[2]  Mark Harman,et al.  Using hybrid algorithm for Pareto efficient multi-objective test suite minimisation , 2010, J. Syst. Softw..

[3]  Laura Diosan,et al.  Requirement dependencies-based formal approach for test case prioritization in regression testing , 2017, 2017 13th IEEE International Conference on Intelligent Computer Communication and Processing (ICCP).

[4]  Gregg Rothermel,et al.  An empirical study of the effect of time constraints on the cost-benefits of regression testing , 2008, SIGSOFT '08/FSE-16.

[5]  Mark Harman,et al.  Search Based Software Engineering: Techniques, Taxonomy, Tutorial , 2010, LASER Summer School.

[6]  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).

[7]  Jun Cheng,et al.  A Fine-Grained Parallel Multi-objective Test Case Prioritization on GPU , 2013, SSBSE.

[8]  Prioritizing test cases for regression testing , 2000, ISSTA.

[9]  Tao Xie,et al.  Time-aware test-case prioritization using integer linear programming , 2009, ISSTA.

[10]  R. Kavitha,et al.  Test Case Prioritization for Regression Testing based on Severity of Fault , 2010 .

[11]  Mark Harman,et al.  Clustering test cases to achieve effective and scalable prioritisation incorporating expert knowledge , 2009, ISSTA.

[12]  Wan M.N. Wan-Kadir,et al.  A review on prioritization techniques in regression testing , 2016 .

[13]  Barbara Kitchenham,et al.  Procedures for Performing Systematic Reviews , 2004 .

[14]  Gregg Rothermel,et al.  Test Case Prioritization: A Family of Empirical Studies , 2002, IEEE Trans. Software Eng..

[15]  Andrea De Lucia,et al.  A Test Case Prioritization Genetic Algorithm Guided by the Hypervolume Indicator , 2020, IEEE Transactions on Software Engineering.

[16]  Mark Harman,et al.  Pareto efficient multi-objective test case selection , 2007, ISSTA '07.

[17]  Neelam Gupta,et al.  Test suite reduction with selective redundancy , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[18]  Gregg Rothermel,et al.  An empirical study of the effects of minimization on the fault detection capabilities of test suites , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[19]  Ladan Tahvildari,et al.  Prioritizing Requirements-Based Regression Test Cases: A Goal-Driven Practice , 2011, 2011 15th European Conference on Software Maintenance and Reengineering.

[20]  RothermelGregg,et al.  Prioritizing Test Cases For Regression Testing , 2001 .

[21]  Charles J. Colbourn,et al.  Prioritized interaction testing for pair-wise coverage with seeding and constraints , 2006, Inf. Softw. Technol..

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

[23]  Andrea De Lucia,et al.  Hypervolume-Based Search for Test Case Prioritization , 2015, SSBSE.

[24]  Andreas Podelski,et al.  If A Fails, Can B Still Succeed? Inferring Dependencies between Test Results in Automotive System Testing , 2015, 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST).

[25]  Giuseppe Scanniello,et al.  A Multi-Objective Technique to Prioritize Test Cases Based on Latent Semantic Indexing , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

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

[27]  Hyunsook Do,et al.  Requirements based test prioritization using risk factors: An industrial study , 2016, Inf. Softw. Technol..

[28]  Gregg Rothermel,et al.  Prioritizing JUnit Test Cases: An Empirical Assessment and Cost-Benefits Analysis , 2006, Empirical Software Engineering.

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

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

[31]  Luc Lamontagne,et al.  A metrics suite for JUnit test code: a multiple case study on open source software , 2014, Journal of Software Engineering Research and Development.

[32]  Mark Harman,et al.  Empirical evaluation of pareto efficient multi-objective regression test case prioritisation , 2015, ISSTA.

[33]  Mark Harman,et al.  Search Algorithms for Regression Test Case Prioritization , 2007, IEEE Transactions on Software Engineering.

[34]  Ashima Singh Prioritizing Test Cases in Regression testing using Fault Based Analysis , 2012 .

[35]  Giuseppe Scanniello,et al.  A Multi-Objective Technique to Prioritize Test Cases , 2016, IEEE Transactions on Software Engineering.

[36]  Gregory M. Kapfhammer,et al.  Test suite reduction methods that decrease regression testing costs by identifying irreplaceable tests , 2014, Inf. Softw. Technol..