Test Models and Coverage Criteria for Automatic Model-Based Test Generation with UML State Machines

Testing is an important means of quality management and is widely used in industrial practice. Model-based functional testing is focussed on comparing the system under test to a test model. This comparison usually consists of automatically generating a test suite from the test model, executing the test suite, and comparing the observable behavior to the expected one. Important advantages of model-based testing are formal test specifications that are close to requirements, traceability of these requirements to test cases, and the automation of test case design, which helps reducing test costs. Testing cannot be complete in many cases: For test models that describe, e.g., nonterminating systems, it is possible to derive a huge and possibly infinite number of different test cases. Coverage criteria are a popular heuristic means to measure the fault detection capability of test suites. They are also used to steer and stop the test generation process. There are several open questions about test models and coverage criteria. For instance, the UML 2.1 defines 13 different kinds of diagrams, which are often used in isolation although it might be beneficial to combine them. Furthermore, there are several unconnected kinds of coverage criteria. Most of them are very useful and here, too, the question for ways to combine their benefits is very interesting. Moreover, the relation between test models and coverage criteria is not researched thoroughly yet and the question for mutual dependencies remains. The context of this thesis is automatic model-based test generation with UML state machines. The focus is on test models, coverage criteria, and their relations. We present new approaches to combine coverage criteria, to use model transformations for testing, and to combine state machines with other test models. In detail, we present a test generation algorithm that allows to combine control-flow-, data-flow-, or transition-based coverage criteria with boundary-based coverage criteria. We also show how to transform state machines in order to simulate the satisfaction of coverage criteria, to combine coverage criteria, or to define and implement new coverage criteria. Furthermore, we present ways to combine state machines with class diagrams and with interaction diagrams. We also show how to influence the efficiency of the generated test suite. Finally, we developed the prototype implementation ParTeG for the mentioned contributions and applied it to standard examples, academic applications, and industrial case studies. Zusammenfassung Testen ist ein wichtiges und weit verbreitetes Mittel des Qualitätsmanagements. Funktionale, modellbasierte Tests vergleichen das zu testende System mit einer Testspezifikation in Form eines Modells: Testsuiten werden auf Basis des Testmodells generiert und gegen das zu testende System ausgeführt – anschließend wird das aktuelle mit dem erwarteten Verhalten verglichen. Wesentliche Vorteile des modellbasierten Testens sind formale und anforderungsnahe Testmodelle, die Rückverfolgbarkeit von Anforderungen, sowie die Automatisierung des Testdesigns und damit auch die Verringerung der Testkosten. Testen kann oft nicht erschöpfend sein: Für viele Testmodelle ist es möglich, eine beliebig hohe Anzahl beliebig langer Testfälle zu generieren. Abdeckungskriterien sind populäre Mittel für das Messen des Fehleraufdeckungspotentials von Testsuiten, sowie für die Steuerung der Testerzeugung und das Stoppen derselben bei Erreichen eines gewissen Abdeckungsgrades. Zu diesen Themen gibt es etliche offene Punkte. Zum Beispiel definiert die UML 2.1 insgesamt 13 Diagrammtypen, die oftmals in Isolation verwendet werden obwohl eine kombinierte Verwendung vorteilhaft wäre. Weiterhin gibt es verschiedene Arten von Abdeckungskriterien, deren Nutzen in isolierter Verwendung bereits gezeigt wurde. Es stellt sich jedoch die Frage, wie deren Vorteile kombiniert werden können. Darüber hinaus wurden die Beziehungen zwischen Testmodellen und Abdeckungskriterien noch nicht tiefgründig erforscht und die Frage nach gegenseitigen Abhängigkeiten ist offen. Diese Dissertation befasst sich mit der automatisierten Testerzeugung basierend auf UML Zustandsmaschinen. Der Fokus liegt auf Testmodellen, Abdeckungskriterien und deren Beziehungen. Ich präsentiere verschiedene Ansätze, Abdeckungskriterien zu kombinieren, Modelltransformationen zu nutzen und Testmodelle kombinieren: Ich definiere einen Testgenerierungsalgorithmus, der kontrollfluss-, datenflussoder transitionsbasierte Abdeckungskriterien mit grenzwertbasierten Abdeckungskriterien kombiniert. Weiterhin präsentiere ich die Transformation von Zustandsmaschinen, um Abdeckungskriterien austauschbar zu machen, sie zu kombinieren oder die Implementierung neu definierter Kriterien umzusetzen. Ich kombiniere Zustandsmaschinen mit Klassendiagrammen und mit Interaktionsdiagrammen. Die zugehörigen Abdeckungskriterien können ebenfalls teilweise kombiniert werden. Darüber hinaus untersuche ich die Beeinflussung der Testeffizienz durch Eingriffe in die Testerzeugung. Zu den genannten Beiträgen habe ich den prototypischen Testgenerator ParTeG entwickelt, der bereits für Standardbeispiele, akademische Anwendungen und industrielle Fallstudien genutzt wurde.