Contributions for Improving Genetic Programming-Based Approaches to the Evolutionary Testing of Object-Oriented Software
Authors
Abstract
Software Testing is the process of exercising an application to detect errors and to verify that it satisfies the specified requirements. It is an expensive process, typically consuming roughly half of the total costs involved in software development; automating Test Data generation is thus vital to advance the state-of-the-art in Software Testing. The application of Evolutionary Algorithms to Test Data generation is often referred to as Evolutionary Testing. The goal of Evolutionary Testing is to find a set of Test Programs which satisfies a particular test criterion. The focus of this work was put on developing a Genetic Programming-based solution for evolving Test Data for the structural Unit Testing of Object-Oriented programs.The technical approach to Object-Oriented Evolutionary Testing proposed involves representing Test Programs using the Strongly-Typed Genetic Programming paradigm. Test Program quality evaluation includes instrumenting the Test Object, and executing it using the generated Test Programs with the intention of collecting trace information with which to derive coverage metrics. The aim is that of efficiently guiding the search process towards achieving full structural coverage of the program under test.
The foremost objectives of this work were those of defining strategies for addressing the challenges posed by the Object-Oriented paradigm, and of proposing methodologies for enhancing the efficiency and the effectiveness of search-based approaches to Software Testing.
Relevant contributions include: the introduction of a novel strategy for Test Program evaluation and search guidance;
the presentation of an Input Domain Reduction methodology based on the concept of Purity Analysis; suggesting an adaptive methodology for promoting the introduction of relevant instructions into the generated Test Programs by means of Mutation; and the proposal of an Object Reuse methodology for Genetic Programming-based approaches to Evolutionary Testing, which allows a single object instance to be used as a method parameter multiple times.
The advances attained resulted in the development and implementation of the eCrash Test Data generation tool, which embodies the approach to Object-Oriented Evolutionary Testing proposed; special attention was paid to improving the level of automation of both the static Test Object analysis and the iterative Test Data generation processes.