Created by W.Langdon from gp-bibliography.bib Revision:1.8010
Existing approaches to automatic test generation for object-oriented software mainly rely either on symbolic execution and constraint solving, or on a particular search technique. However, these approaches suffer from various limitations which negatively affect both their applicability in terms of classes for which they are feasible, and their effectiveness in terms of achievable structural coverage. The approaches based on symbolic execution and constraint solving inherit the limitations of these techniques, which are, for instance, issues with scalability and problems with loops, arrays, and complex predicates. The search-based approaches encounter problems in the presence of complex predicates and complex method call dependences. In addition, existing work addresses neither testing non-public methods without breaking data encapsulation, nor the occurrence of runtime exceptions during test generation. Yet, data encapsulation, non-public methods, and exception handling are fundamental concepts of object-oriented software and require also particular consideration for testing.
This thesis proposes a new approach to automating the generation of object-oriented unit tests. It employs genetic programming, a recent meta-heuristic optimisation technique, which allows formulating the task of test sequence generation as a search problem more suitably than the search techniques applied by the existing approaches. The approach enables testing non-public methods and accounts for run time exceptions by appropriately designing the objective functions that are used to guide the genetic programming search.
The value of the approach is shown by a case study with real-world classes that involve non-public methods and runtime exceptions. The structural coverage achieved by the approach is contrasted with that achieved by a random approach and two commercial test sequence generators. In most of the cases, the approach of this thesis outperformed the other methods.",
Die existierenden Automatisierungsansatze beruhen hauptsachlich auf entweder symbolischer Ausfuhrung und Constraint-Losung oder auf einem Suchverfahren. Sie haben jedoch verschiedene Begrenzungen, die sowohl ihre Anwendbarkeit fur unterschiedliche zu testende Klassen als auch ihre Effektivitat im Hinblick auf die erreichbare Code-Uberdeckung einschranken. Die Ansatze basierend auf symbolischer Ausfuhrung und Constraint-Losung weisen die Beschrankungen dieser Techniken auf. Dies sind beispielsweise Einschrankungen hinsichtlich der Skalierbarkeit und bei der Verwendung bestimmter Programmierkonstrukte wie Schleifen, Felder und komplexer Pradikate. Die suchbasierten Ansatze haben Schwierigkeiten bei komplexen Pradikaten und komplexen Methodenaufrufabhangigkeiten. Die Ansatze adressieren weder den Test nicht-offentlicher Methoden, ohne die Objektkapselung zu verletzen, noch die Behandlung von Laufzeitausnahmen wahrend der Testgenerierung. Objektkapselung, nicht-offentliche Methoden und Laufzeitausnahmen sind jedoch grundlegende Konzepte objektorientierter Software, die besonderes Augenmerk wahrend des Tests erfordern.
Die vorliegende Dissertation schlagt einen neuen Ansatz zur automatischen Generierung objektorientierter Unit-Tests vor. Dieser Ansatz verwendet Genetische Programmierung, ein neuartiges meta-heuristisches Optimierungsverfahren. Dadurch kann die Testsequenz-Generierung geeigneter als Suchproblem formuliert werden als es die existierenden Ansatze gestatten. Effektivere Suchen nach Testsequenzen zur Erreichung von hoher Code-Uberdeckung werden so ermoglicht. Der Ansatz umfasst ausserdem den Test nicht-offentlicher Methoden ohne Kapselungsbruch und berucksichtigt Laufzeitausnahmen, indem er die fur die Suche verwendeten Zielfunktionen adequat definiert.
Eine umfangreiche Fallstudie demonstriert die Effektivitat des Ansatzes. Die dabei verwendeten Klassen besitzen nicht-offentliche Methoden und fuhren in zahlreichen Fallen zu Laufzeitausnahmen wahrend der Testgenerierung. Die erreichten Code-Uberdeckungen werden den Ergebnissen eines Zufallsgenerators sowie zweier kommerzieller Testsequenz-Generatoren gegenubergestellt. In der Mehrheit der Falle ubertraf der hier vorgeschlagene Ansatz die alternativen Generatoren.",
Genetic Programming entries for Stefan Wappler