title: Using Model-based Testing for Creating Behaviour-Driven Tests
Creators: name: Schneider, Simon
Publisher: name: TU Wien
Year: 2021
Subjects: subject: behaviour-driven development
subject: model-based testing
subject: behaviour-driven testing

description: Behaviour Driven Development (BDD) ist eine Strategie in agilen Entwicklerteams um eine Systembeschreibung in natürlicher Sprache zu verfassen. Das Verhalten wird dabei in einer domänenspezifischen Sprache mit einer vorgegebenen Struktur beschrieben: "Gegeben ist eine Vorbedingung; Wenn eine Aktion stattfindet; Dann wird eine Ausgabe produziert". Dieser Ansatz fördert die Kommunikation und kann gleichzeitig zur Steuerung automatisierter Tests verwendet werden. Der Ansatz funktioniert in der Praxis gut, ist aber informell und kann zu langatmigen Beschreibungen führen, die das Risiko bergen, Teile des Systems nicht vollständig zu spezifizieren.Modellbasiertes Testen (MBT) ist hingegen ein strukturierter Ansatz zur automatischen Generierung von Testfällen. Durch den Einsatz von Modellen eignet er sich hervorragend zur Beschreibung komplexer Strukturen. Selbst einfache grafische Zustandsdiagramme können intuitiv ausdrücken, was viele Seiten textuelle Beschreibung nicht vermögen. Modelle sind durch ihren Abstraktionsgrad flexibel und ermöglichen das einfache Neugenerieren der Testfälle, wenn sich die Spezifikation verändert.Diese Diplomarbeit präsentiert einen Ansatz, der BDD und MBT mittels Zustandsdiagrammen kombiniert und so eine automatische Generierung von BDD-Testfällen ermöglicht. Mit einem Prototypen wird gezeigt, wie die BDD-Spezifikation aus Modellen generiert werden kann. Eine Fallstudie, die einen kommerziellen Voice over IP (VoIP) Gateway untersucht, zeigt vielversprechende Resultate: Die generierten Testfälle konnten die Funktionalität des Systems gut abdecken und der benötigte Aufwand war vergleichbar oder geringer als die Erstellung ähnlicher manueller Tests. Eine Umfrage unter BDD-Experten ergab, dass die Benutzer zwar sehr wohl automatisch generierte BDD-Testfälle zu erkennen vermochten, in einigen Fällen diese aber gegenüber manuell geschriebenen Tests bevorzugten.
description: Behaviour-driven development (BDD) is a strategy to describe a system’s specification using a business domain language: “Given a precondition; “When” some action is performed; “Then” an outcome is achieved'' (GWT). This style improves the communication between the involved parties and the resulting specification can be leveraged to drive automated tests. While this approach works well in practice, it suffers from some disadvantages: It is informal and verbose, thus bearing the risk of failing to specify all parts of a system.Model-based testing (MBT) is a structured approach for automatically generating test cases. It is well-suited for describing complex interactions and cross-linked code paths using models. Even basic graphical state machines can define what takes many pages to write down in natural language. Models describe a system on a higher level of abstraction and allow to quickly recreate test cases in the event that the behaviour of the system changes or gets extended.This thesis presents a testing approach that combines BDD with MBT based on state machine models to automate the process of writing BDD tests. A prototype generating BDD tests from graphical state machine models has been developed and evaluated in a case study with promising results: The generated test cases covered the functionality of the tested system, and the effort to create them was comparable to writing similar test cases by hand. A survey among practitioners showed that while users were able to identify automatically generated BDD tests, in some instances, they preferred them over manually written ones.