Learning Finite State Machine Specifications from Test Cases
Lernen von Spezifikationen in Form von endlichen Zustandsmaschinen aus Testfällen
by Edith Benedicta Maria Werner
Date of Examination:2010-06-01
Date of issue:2010-08-05
Advisor:Prof. Dr. Jens Grabowski
Referee:Prof. Dr. Jens Grabowski
Referee:Prof. Dr. Stephan Waack
Files in this item
Name:werner.pdf
Size:1.52Mb
Format:PDF
Description:Dissertation
Abstract
English
Up-to-date software systems are often modular and need to be changeable. While modularity is believed to reduce software production costs, it also leads to increased difficulty in testing, as the future uses of a module are getting more varied and therefore harder to guess. Also, reused modules are often represented as black boxes, whose interior structure is hidden from the system. In consequence, on reusing a module, the testing focuses on integration testing and monitoring the interfaces of the module.In order to monitor a system, a model of the system is needed to compare the observed traces to. However, with the advent of agile development methods and decreasing time to market, formal models of a system are seldom available. While formal modeling has not been widely adopted in industry, the importance of testing has increased, in part thanks to the same agile development methods that obsolete explicit modeling. An example is the test first paradigm of eXtreme Programming, which requires that the tests for any software have to be written before the software itself. Therefore, test cases are available even for systems without a formal model.In consequence, we propose to generate a system model suitable for monitoring from a test suite for the system. The approach is based on automata learning. Angluin´s learning algorithm is used to generate an appropriate model, while state-merging methods are applied to represent the test cases in a format that can be processed by the learning algorithm.Both Angluin´s algorithm and state-merging are tailored to the characteristics of testing. For Angluin´s algorithm, this comprises a mapping of the query mechanisms onto a test suite. The state-merging is used to construct a generic representation of arbitrary test suites by exploiting the properties of a given test specification language for a better coverage. The approach is implemented in a prototypical tool and validated by a case study.
Keywords: machine learning; reverse engineering; model based testing; test validation
Other Languages
Moderne Software-Systeme sind häufig modular aufgebaut, müssen dabei aber Ansprüchen an Wartbarkeit und Änderbarkeit genügen. Während man einerseits annimmt, dass modulare Software mit geringerem Kostenaufwand hergestellt werden kann, wird andererseits die Komplexität des Testens erhöht, da die zukünftigen Anwendungen eines Moduls sich nur schwer vorhersagen lassen. Dazu kommt, dass Module häufig als abgeschlossene Bausteine wiederverwendet werden, so dass die innere Struktur der Module dem System verborgen bleibt. Daher konzentriert sich der Test eines wiederverwendeten Moduls oft auf den Integrationstest und das Beobachten der Schnittstellen des Moduls (Monitoring).Um das System-Verhalten an der beobachteten Schnittstelle bewerten zu können, wird ein formales Modell des Systems benötigt, um die beobachteten Ereignisfolgen damit zu vergleichen. Leider sind formale Modelle nur selten verfügbar, da durch die Anwendung agiler Entwicklungsmethoden und die immer kürzer werdenden Entwicklungszeiten häufig keine formalen Modelle erstellt werden. Gleichzeitig hat sich das Testen von Software immer mehr durchgesetzt, so dass für die meisten Software-Systeme eine Sammlung von Testfällen vorliegt.Die vorliegende Arbeit schlägt eine Methode vor, mit deren Hilfe aus den Testfällen eines Software-Systems ein formales Modell errechnet werden kann. Die Methode basiert auf Ansätzen zum maschinellen Lernen von endlichen Automaten. Ein Lernalgorithmus, der zuerst von Dana Angluin vorgeschlagen wurde, erzeugt das formale Modell, während Methoden zur Zustands-Vereinigung die Testfälle in eine für den Lernalgorithmus geeignete Datenstruktur umwandeln.Sowohl der Lernalgorithmus als auch die Methoden zur Zustands-Vereinigung werden an die Eigenschaften des Testens angepasst. Für den Lernalgorithmus von Dana Angluin bedeutet das, dass die Fragemechanismen auf die Testfälle abgebildet werden müssen. Die Zustands-Vereinigung wird benutzt um eine generische Repräsentation beliebiger Testfälle zu errechnen, wobei die semantischen Eigenschaften der Testsprache ausgenutzt werden um eine bessere Überdeckung des Zielmodells zu erhalten. Der kombinierte Ansatz wird in einem prototypischen Werkzeug implementiert und durch eine Fallstudie belegt.
Schlagwörter: Maschinelles Lernen; Modellrekonstruktion; Modell-basiertes Testen; Test-Validierung