Automatic Generation Of Object-Oriented Unit Tests Using Genetic Programming

dc.contributor.advisorSchieferdecker, Inaen
dc.contributor.authorWappler, Stefanen
dc.contributor.grantorTechnische Universität Berlin, Fakultät IV - Elektrotechnik und Informatiken
dc.date.accepted2007-12-19
dc.date.accessioned2015-11-20T17:48:15Z
dc.date.available2008-01-07T12:00:00Z
dc.date.issued2008-01-07
dc.date.submitted2008-01-07
dc.description.abstractDie Automatisierung der Testfallermittlung für den struktur-orientierten Unit-Test objektorientierter Software verspricht enorme Kostenreduktion und Qualitätssteigerung für ein Softwareentwicklungsprojekt. Die Herausforderung besteht darin, automatisch Testsequenzen zu generieren, die eine hohe Überdeckung des Quellcodes der zu testenden Klasse erreichen. Diese Testsequenzen modellieren bestimmte Szenarien, in denen die zu testende Klasse geprüft wird. Der Grad an erzielter Code-Überdeckung ist ein Maß für die Testabdeckung und damit der Testqualität generell. Die existierenden Automatisierungsansätze beruhen hauptsächlich auf entweder symbolischer Ausführung und Constraint-Lösung oder auf einem Suchverfahren. Sie haben jedoch verschiedene Begrenzungen, die sowohl ihre Anwendbarkeit für unterschiedliche zu testende Klassen als auch ihre Effektivität im Hinblick auf die erreichbare Code-Überdeckung einschränken. Die Ansätze basierend auf symbolischer Ausführung und Constraint-Lösung weisen die Beschränkungen dieser Techniken auf. Dies sind beispielsweise Einschränkungen hinsichtlich der Skalierbarkeit und bei der Verwendung bestimmter Programmierkonstrukte wie Schleifen, Felder und komplexer Prädikate. Die suchbasierten Ansätze haben Schwierigkeiten bei komplexen Prädikaten und komplexen Methodenaufrufabhängigkeiten. Die Ansätze adressieren weder den Test nicht-öffentlicher Methoden, ohne die Objektkapselung zu verletzen, noch die Behandlung von Laufzeitausnahmen während der Testgenerierung. Objektkapselung, nicht-öffentliche Methoden und Laufzeitausnahmen sind jedoch grundlegende Konzepte objektorientierter Software, die besonderes Augenmerk während des Tests erfordern. Die vorliegende Dissertation schlägt 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 Ansätze gestatten. Effektivere Suchen nach Testsequenzen zur Erreichung von hoher Code-Überdeckung werden so ermöglicht. Der Ansatz umfasst außerdem den Test nicht-öffentlicher Methoden ohne Kapselungsbruch und berücksichtigt Laufzeitausnahmen, indem er die für die Suche verwendeten Zielfunktionen adequat definiert. Eine umfangreiche Fallstudie demonstriert die Effektivität des Ansatzes. Die dabei verwendeten Klassen besitzen nicht-öffentliche Methoden und führen in zahlreichen Fällen zu Laufzeitausnahmen während der Testgenerierung. Die erreichten Code-Überdeckungen werden den Ergebnissen eines Zufallsgenerators sowie zweier kommerzieller Testsequenz-Generatoren gegenübergestellt. In der Mehrheit der Fälle übertraf der hier vorgeschlagene Ansatz die alternativen Generatoren.de
dc.description.abstractAutomating the generation of object-oriented unit tests for structural testing techniques has been challenging many researchers due to the benefits it promises in terms of cost saving and test quality improvement. It requires test sequences to be generated, each of which models a particular scenario in which the class under test is examined. The generation process aims at obtaining a preferably compact set of test sequences which attains a high degree of structural coverage. The degree of achieved structural coverage indicates the adequacy of the tests and hence the test quality in general. 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 optimization 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 runtime 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.en
dc.identifier.uriurn:nbn:de:kobv:83-opus-17330
dc.identifier.urihttps://depositonce.tu-berlin.de/handle/11303/2045
dc.identifier.urihttp://dx.doi.org/10.14279/depositonce-1748
dc.languageEnglishen
dc.language.isoenen
dc.rights.urihttp://rightsstatements.org/vocab/InC/1.0/en
dc.subject.ddc004 Datenverarbeitung; Informatiken
dc.subject.otherAutomatisierungde
dc.subject.otherGenetische Programmierungde
dc.subject.otherObjektorientierungde
dc.subject.otherTestfallermittlungde
dc.subject.otherAutomationen
dc.subject.otherGenetic programmingen
dc.subject.otherObject orientationen
dc.subject.otherTest case generationen
dc.titleAutomatic Generation Of Object-Oriented Unit Tests Using Genetic Programmingen
dc.title.translatedAutomatische Generierung objektorientierter Unit-Tests mittels Genetischer Programmierungde
dc.typeDoctoral Thesisen
dc.type.versionpublishedVersionen
tub.accessrights.dnbfree*
tub.affiliationFak. 4 Elektrotechnik und Informatik::Inst. Softwaretechnik und Theoretische Informatikde
tub.affiliation.facultyFak. 4 Elektrotechnik und Informatikde
tub.affiliation.instituteInst. Softwaretechnik und Theoretische Informatikde
tub.identifier.opus31733
tub.identifier.opus41656
tub.publisher.universityorinstitutionTechnische Universität Berlinen

Files

Original bundle
Now showing 1 - 1 of 1
Loading…
Thumbnail Image
Name:
Dokument_6.pdf
Size:
1.95 MB
Format:
Adobe Portable Document Format

Collections