Genes and bacteria for automatic test cases optimization in the .NET environment

The level of confidence in a software component is often linked to the quality of its test cases. This quality can in turn be evaluated with mutation analysis: faulty components (mutants) are systematically generated to check the proportion of mutants detected ("killed") by the test cases. But while the generation of basic test cases set is easy, improving its quality may require prohibitive effort. We focus on the issue of automating the test optimization. We looked at genetic algorithms to solve this problem and modeled it as follows: a test case can be considered as a predator while a mutant program is analogous to a prey. The aim of the selection process is to generate test cases able to kill as many mutants as possible. To overcome disappointing experimentation results on the studied .NET system, we propose a slight variation on this idea, no longer at the "animal" level (lions killing zebras) but at the bacteriological level. The bacteriological level indeed better reflects the test case optimization issue: it introduces a memorization function and suppresses the crossover operator. We describe this model and show how it behaves on the case study.

[1]  John H. Holland,et al.  Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence , 1992 .

[2]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

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

[4]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[5]  D. E. Goldberg,et al.  Genetic Algorithms in Search , 1989 .

[6]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[7]  A. Jefferson Offutt,et al.  Investigations of the software testing coupling effect , 1992, TSEM.

[8]  Jeffrey M. Voas,et al.  The revealing power of a test case , 1992, Softw. Test. Verification Reliab..

[9]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[10]  A. Jefferson Offutt,et al.  An Experimental Evaluation of Data Flow and Mutation Testing , 1996, Softw. Pract. Exp..

[11]  Bryan F. Jones,et al.  Automatic structural testing using genetic algorithms , 1996, Softw. Eng. J..

[12]  Mark V. Lomolino,et al.  Species Diversity in Space and Time. , 1996 .

[13]  Robert V. Binder,et al.  Testing Object-Oriented Systems: Models, Patterns, and Tools , 1999 .

[14]  Jean-Marc Jézéquel,et al.  Self-testable components: from pragmatic tests to design-for-testability methodology , 1999, Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 29 (Cat. No.PR00275).

[15]  Swapna S. Gokhale,et al.  Exploring cost and reliability tradeoffs in architectural alternatives using a genetic algorithm , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[16]  Roy P. Pargas,et al.  Test‐data generation using genetic algorithms , 1999, Softw. Test. Verification Reliab..

[17]  Jean-Marc Jézéquel,et al.  Trustable components: yet another mutation-based approach , 2000 .

[18]  Kent Beck,et al.  Test-infected: programmers love writing tests , 2000 .

[19]  John A. Clark,et al.  Investigating the effectiveness of object‐oriented testing strategies using the mutation method , 2001, Softw. Test. Verification Reliab..

[20]  Sudipto Ghosh,et al.  Interface mutation , 2001, Softw. Test. Verification Reliab..

[21]  John A. Clark,et al.  Investigating the effectiveness of object‐oriented testing strategies using the mutation method , 2001 .

[22]  Per Runeson,et al.  System level mutation analysis applied to a state-based language , 2001, Proceedings. Eighth Annual IEEE International Conference and Workshop On the Engineering of Computer-Based Systems-ECBS 2001.

[23]  Philippe Chevalley,et al.  Applying mutation analysis for object-oriented programs using a reflective approach , 2001, Proceedings Eighth Asia-Pacific Software Engineering Conference.

[24]  Gary McGraw,et al.  Generating Software Test Data by Evolution , 2001, IEEE Trans. Software Eng..

[25]  Ivan Moore Jester - a JUnit test tester , 2001 .

[26]  James M. Bieman,et al.  Fault detection capabilities of coupling-based OO testing , 2002, 13th International Symposium on Software Reliability Engineering, 2002. Proceedings..

[27]  Jean-Marc Jézéquel,et al.  Automatic test case optimization using a bacteriological adaptation model: application to .NET components , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[28]  Byoungju Choi,et al.  Effective test case selection for component customization and its application to Enterprise JavaBeans , 2004, Softw. Test. Verification Reliab..