The Emerging Field of Test Amplification: A Survey

Context: The increasing adoption of test-driven development results in software projects with strong test suites. These suites include a large number of test cases, in which developers embed knowledge about meaningful input data and expected properties in the form of oracles. Objective: This article surveys various works that aim at exploiting this knowledge in order to enhance these manually written tests with respect to an engineering goal (e.g., improve coverage of changes or increase the accuracy of fault localization). While these works rely on various techniques and address various goals, we believe they form an emerging and coherent field of research, and which we call "test amplification". Method: We devised a first set of papers based on our knowledge of the literature (we have been working in software testing for years). Then, we systematically followed the citation graph. Results: This survey is the first that draws a comprehensive picture of the different engineering goals proposed in the literature for test amplification. In particular, we note that the goal of test amplification goes far beyond maximizing coverage only. Conclusion: We believe that this survey will help researchers and practitioners entering this new field to understand more quickly and more deeply the intuitions, concepts and techniques used for test amplification.

[1]  Martin Monperrus,et al.  Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions , 2015, Inf. Softw. Technol..

[2]  Hiroaki Yoshida,et al.  FSX: fine-grained incremental unit test generation for C/C++ programs , 2016, ISSTA.

[3]  Gregg Rothermel,et al.  A Hybrid Directed Test Suite Augmentation Technique , 2011, 2011 IEEE 22nd International Symposium on Software Reliability Engineering.

[4]  Mark Harman,et al.  Test data regeneration: generating new test data from existing test data , 2012, Softw. Test. Verification Reliab..

[5]  Martin Monperrus,et al.  Test case purification for improving fault localization , 2014, SIGSOFT FSE.

[6]  Qinghua Zheng,et al.  Directed test suite augmentation via exploiting program dependency , 2014, CSTVA 2014.

[7]  Amin Milani Fard,et al.  Leveraging existing tests in automated test generation for web applications , 2014, ASE.

[8]  Mauro Pezzè,et al.  Supporting Test Suite Evolution through Test Case Adaptation , 2012, 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation.

[9]  Phil McMinn,et al.  Search‐based software test data generation: a survey , 2004, Softw. Test. Verification Reliab..

[10]  Cristian Cadar,et al.  Shadow of a Doubt: Testing for Divergences between Software Versions , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

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

[12]  Mauro Pezzè,et al.  Automatic test case evolution , 2014, Softw. Test. Verification Reliab..

[13]  Laurie A. Williams,et al.  Should software testers use mutation analysis to augment a test set? , 2009, J. Syst. Softw..

[14]  A. Orso,et al.  Retesting software during development and maintenance , 2008, 2008 Frontiers of Software Maintenance.

[15]  Gordon Fraser,et al.  EvoSuite: automatic test suite generation for object-oriented software , 2011, ESEC/FSE '11.

[16]  Arie van Deursen,et al.  Refactoring test code , 2001 .

[17]  Nikolai Tillmann,et al.  Unit tests reloaded: parameterized unit testing with symbolic execution , 2006, IEEE Software.

[18]  Corina S. Pasareanu,et al.  A survey of new trends in symbolic execution for software testing and analysis , 2009, International Journal on Software Tools for Technology Transfer.

[19]  Zhenkai Liang,et al.  Test generation to expose changes in evolving programs , 2010, ASE '10.

[20]  Yue Jia,et al.  KD-ART: Should we intensify or diversify tests to kill mutants? , 2017, Inf. Softw. Technol..

[21]  Jean-Marc Jézéquel,et al.  Automatic test case optimization: a bacteriologic algorithm , 2005, IEEE Software.

[22]  Raúl A. Santelices,et al.  Applying aggressive propagation-based strategies for testing changes , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[23]  Jon Edvardsson,et al.  A Survey on Automatic Test Data Generation , 2002 .

[24]  Andreas Zeller,et al.  Generating parameterized unit tests , 2011, ISSTA '11.

[25]  Zhihong Xu,et al.  Directed test suite augmentation , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[26]  Martin Monperrus,et al.  Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs , 2018, IEEE Transactions on Software Engineering.

[27]  Michael D. Ernst,et al.  Eclat: Automatic Generation and Classification of Test Inputs , 2005, ECOOP.

[28]  W. Marsden I and J , 2012 .

[29]  Myra B. Cohen,et al.  Factors affecting the use of genetic algorithms in test suite augmentation , 2010, GECCO '10.

[30]  Myra B. Cohen,et al.  Directed test suite augmentation: techniques and tradeoffs , 2010, FSE '10.

[31]  Sebastian G. Elbaum,et al.  Amplifying tests to validate exception handling code , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[32]  Cristian Cadar,et al.  KATCH: high-coverage testing of software patches , 2013, ESEC/FSE 2013.

[33]  Myra B. Cohen,et al.  Directed test suite augmentation: an empirical investigation , 2015, Softw. Test. Verification Reliab..

[34]  Alessandro Orso,et al.  Isolating failure causes through test case generation , 2012, ISSTA 2012.

[35]  Lu Fang,et al.  PerfBlower: Quickly Detecting Memory-Related Performance Problems via Amplification , 2015, ECOOP.

[36]  Andreas Zeller,et al.  Generating test cases for specification mining , 2010, ISSTA '10.

[37]  Darko Marinov,et al.  ReAssert: Suggesting Repairs for Broken Unit Tests , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[38]  Tao Xie,et al.  Augmenting Automatically Generated Unit-Test Suites with Regression Oracle Checking , 2006, ECOOP.

[39]  Michael D. Ernst,et al.  Improving test suites via operational abstraction , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[40]  Abhik Roychoudhury,et al.  CoREBench: studying complexity of regression errors , 2014, ISSTA 2014.

[41]  Matias Martinez,et al.  B-Refactoring: Automatic test code refactoring to improve dynamic analysis , 2016, Information and Software Technology.

[42]  Kai-Yuan Cai,et al.  Mutation-oriented test data augmentation for GUI software fault localization , 2013, Inf. Softw. Technol..

[43]  Laurie A. Williams,et al.  On guiding the augmentation of an automated test suite via mutation analysis , 2009, Empirical Software Engineering.

[44]  Mauro Pezzè,et al.  Generating Effective Integration Test Cases from Unit Ones , 2013, 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation.

[45]  Yves Le Traon,et al.  Improving test suites for efficient fault localization , 2006, ICSE.

[46]  Alessandro Orso,et al.  Test-Suite Augmentation for Evolving Software , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[47]  Yves Le Traon,et al.  Transforming and Selecting Functional Test Cases for Security Policy Testing , 2009, 2009 International Conference on Software Testing Verification and Validation.

[48]  Roderick Bloem,et al.  Automating Test-Suite Augmentation , 2014, 2014 14th International Conference on Quality Software.

[49]  Lu Zhang,et al.  Isomorphic regression testing: executing uncovered branches without test augmentation , 2016, SIGSOFT FSE.

[50]  Koushik Sen,et al.  Predictive testing: amplifying the effectiveness of software testing , 2007, ESEC-FSE '07.

[51]  Alessandra Gorla,et al.  Cross-checking oracles from intrinsic software redundancy , 2014, ICSE.

[52]  Y. L. Traon,et al.  From genetic to bacteriological algorithms for mutation‐based testing , 2005, Softw. Test. Verification Reliab..

[53]  Martin Monperrus,et al.  Crash reproduction via test case mutation: let existing test cases help , 2015, ESEC/SIGSOFT FSE.