Generierung von Systemtests für Web-basierte Informationssysteme

Dokumente

Ausarbeitung

Hintergrund

Beim Testen von Informationssystemen muss die Interaktion mit dem System getestet werden. Benutzer agieren hierbei mit dem Informationssystem typischerweise über eine Gui. Systemtests behandeln daher genau die Anwendungsfälle, die vom Benutzer über die Bedienung der Gui erreicht werden können. Der Systemtest besteht aus einem vorgegebenem Anwendungsszenario und vorgegebenen Erwartungen, wie sich das getestete Programm zu verhalten hat. Ziel des Systemtests ist es, zu prüfen, ob die einzelnen Funktionsschritte in der (nach einem testbarem Schema aufgebauten) Gui die gewünschte Ergebnisse erzielen. Wie Prozesse im Programmcode genau abgearbeitet werden ist für den Systemtest hierbei nicht relevant, solange es nicht über die Gui direkt beeinflussbar ist.

Für eine Durchführung des Systemtests müssen alle möglichen Funktionen, die die Gui besitzt, für die Testsoftware auch testbar sein. Für Benutzeroberflächen hat dies zur Folge, dass sie sich u.U. an ein bestimmtes Aufbaumuster halten müssen und keine Funktionalitäten besitzen, welche nicht von der Testsoftware überprüfbar sind.

Die Menge der möglichen Testfälle deckt dabei insgesamt die Menge der mit dem geprüften Programm möglichen Anwendungsszenarien ab, sofern deren Funktionalität sich mit den Mitteln des Systemtests auf ihre Korrektheit prüfen lässt. An jedem durchgeführten Testfall sind weiterhin gewisse Erwartungen gesetzt, welche beim Systemtest geprüft werden. So ließe sich z.B. das Erstellen eines neuen Users mittels eines Namen und einer eindeutigen ID dadurch überprüfen, ob nach Abschließen des Anlegens auch tatsächlich ein solcher User in der Userdatenbank vorhanden ist. Die Erwartungen an das Verhalten des Systems sind in einer für die Testsoftware prüfbaren Form beschriebene Anforderungen an die einzelnen Systemschritte. Bei jedem Schritt des Systemtests wird geprüft, ob tatsächlich sämtliche Anforderungen zutreffen. Zu solchen Anforderungen gehört z.B. ob sich das getestete Programm in einem bestimmten Menü befindet oder ob eine Variable einen bestimmten Wert hat.

In einer vorangegangenen Arbeit wurde ein Werkzeug (EJB-Gen) entwickelt, welches basierend auf UML-Klassendiagrammen ein Informationssystem generiert. Die Interaktionsmöglichkeiten des Benutzers über die Gui solcher Systeme werden in dieser Bachelorarbeit im Einzelnen getestet.

Aufgabe

Das Ziel dieser Bachelorarbeit ist die Entwicklung eines Systemtestmodels zur Beschreibung von Systemtests. Aus diesem sollen dann mittels Model-zu-Text Transformation automatisch ausführbare Systemtests generiert werden. Im Rahmen der Arbeit ist außerdem zu prüfen, ob sich die Systemtests mithilfe einer Beschreibung der GUI und entsprechender Anwendungsfälle (Use-Cases) ableiten lassen.

Systemtests überprüfen neben Szenarien, welche eine für das Programm korrekte Anwendung beschreiben, auch Szenarien, in denen für die Software nicht korrekt einlesbare Eingaben erfolgen. Im Falle der oben genannten User-Erstellung wären die Eingabe einer bereits vorhandenen ID oder der Benutzung eines für die ID unkorrekten Zeichenformats Beispiele für Anwendungsszenarien, in denen der Systemtest den Benutzer auf eine entsprechend fehlerhafte Eingabe hinzuweisen hat. Hier muss der Systemtest den Fehler erkennen und eine Fehlerwarnung ausgeben. Das in dieser Arbeit entwickelte  Systemtestmodell muss daher eine Möglichkeit zu Modellierung solcher Fehler vorsehen.

Ein korrekter Systemtest hat die Aufgabe, sämtliche getesteten Reaktionen der Gui, welche sich nicht exakt so verhalten, wie erwartet,  als Fehler zu klassifizieren. Dies gilt auch dann, wenn diese Vorgänge nur formal von den Anforderungen des Testfalls abweichen und weiterhin einen reibungslosen Programmablauf sicherstellen würden. So werden im Vorfeld klar definierte Erwartungen gesetzt, wie sich das System zu verhalten hat, sobald das System einen bestimmten Schritt durchführt. Für den Systemtest ist es also wichtig, feststellt, in welchem Zustand  sich das System befindet und welche anderen Zustände von diesem aus erreichbar sind. In dieser Bachelorarbeit soll daher im Rahmen der Testfallgenerierung eine Methode entwickelt werden, mit der der aktuelle Zustand des Systems ableitbar ist.

Eine Möglichkeit ist hierbei das Ermitteln der vorhandenen Buttons und Eingabefenster und eine Interpretation ihrer Funktonalität anhand einer für die Software lesbaren Beschreibung. Diese Beschreibung könnte durch eine interne Variable eines Buttons verankert werden, aber auch rein optische Beschriftungen für nebenstehende Begriffe (wie ?Ok?, ?Abbrechen?, ?Hilfe?, etc.) sind für Interpretationen des Programmzustands  möglich, sofern die Gui sich hierbei an eindeutig festgelegte Vorgaben der Systemtestsoftware hält.