• Keine Ergebnisse gefunden

Nachdem im vorangegangenen Abschnitt die Struktur des Referenzmodells für Testwerk-zeuge auf oberster Aggregationsebene vorgestellt wurde, folgt nun die Erläuterung der ein-zelnen Bausteine des Modells. Jeder der identifizierten Anwendungsbereiche für Software-Testwerkzeuge wird im Rahmen des Referenzmodells durch einen Baustein repräsentiert.

Die in den Bausteinen abgebildeten Funktionen werden im Folgenden erläutert; darüber hin-aus werden Bhin-austeine mit einem hohen Funktionsumfang durch eigenständige Diagramme visualisiert, welche einen höheren Detaillierungsgrad besitzen als dies im Übersichtsdia-gramm der Fall ist.

Testmanagement und -steuerung

Werkzeuge zum Testmanagement und zur Teststeuerung unterstützen die Software-Quali-tätssicherung durch die Planung und Steuerung des Testprozesses. Weiterhin ermöglichen sie die Pflege und Priorisierung von Testfällen sowie deren Verknüpfung mit den Anforder-ungen, welche an das Software-System gestellt werden. Darüber hinaus besitzen derar-tige Werkzeuge eine Schnittstelle zum Konfigurationsmanagement, um auf die Bausteine und Versionen des Testobjekts zugreifen zu können. Die im Rahmen der Testdurchführung aufgedeckten Abweichungen vom Soll-Verhalten werden im Rahmen des Abweichungsma-nagements in Form von Abweichungsberichten erfasst und verwaltet. Die Protokolle der Testdurchführungen werden durch Testwerkzeuge dieser Klasse ausgewertet und aufberei-tet, wodurch das Berichtswesen der einsetzenden Organisation unterstützt wird.

Abbildung 14 stellt die verschiedenen Funktionen dieses Anwendungsbereichs von Test-werkzeugen, welche in Abschnitt 3.2.1 erarbeitet wurden, in einem höheren Detaillierungs-grad dar. Die Granularität des Modells wurde hierbei erhöht, indem die besonders umfang-reichen Anwendungsfälle in Teilfunktionen untergliedert wurden. Die Beziehungen zwischen einem übergeordneten Anwendungsfall zu seinen Teilfunktionen werden mit Hilfe von Inklu-sionsbeziehungen dargestellt.

Auf diese Weise wird diePlanung und Steuerung des Testprozesses in die Zeit-, Personal-und Sachmittel-Planung sowie die Überwachung des Testfortschritts untergliedert. Als GrPersonal-und- Grund-lage für die Steuerung des Testprozesses sollte das Werkzeug eine Testfortschrittsanzeige beinhalten, mit welcher sich der Testmanager über den aktuellen Stand der auszuführenden Testfälle informieren kann.

Im Zuge derDefinition von Testfällenbietet das ideale Testwerkzeug Möglichkeiten zur Ver-sionierung und Priorisierung und lässt darüber hinaus die Pflege eines Testfalls in mehreren Varianten zu. Die Erstellung verschiedener Versionen für einen Testfall ermöglicht es, die

Testmanagement und Teststeuerung

Abbildung 14: Referenzmodell für Testwerkzeuge: Baustein Testmanagement und Teststeuerung.

Quelle: Eigene Darstellung.

an der Definition vorgenommenen Änderungen nachzuvollziehen und den Testfall an un-terschiedliche Versionen des Testobjekts beziehungsweise der Testumgebung anzupassen.

Durch die Priorisierung von Testfällen kann sichergestellt werden, dass kritische System-teile bevorzugt geprüft werden. Mit Hilfe von Varianten kann ein Testfall unter Verwendung verschiedener Testdaten-Sets ausgeführt werden. Darüber hinaus stellt das Auswerten der Anforderungen, die an das zu prüfende Software-System gestellt werden, sowie Verknüpfen der Testfälle mit diesen Anforderungen einen weiteren Anwendungsfall dar, der im Rahmen der Testfall-Definition besteht.

Der Zugriff auf dasKonfigurationsmanagement wird auf dieser Aggregationsebene des Re-ferenzmodells in die Ermittlung der verschiedenen Module, der Versionen sowie des Quell-codes des Testobjekts unterteilt.

Weiterhin stellt die effiziente Abwicklung des Abweichungsmanagements einen wesentli-chen Anwendungsfall für Testwerkzeuge dieser Klasse dar. Hierbei beinhaltet das Werkzeug Funktionen, um Abweichungsberichte zu erfassen, zu verwalten und auszuwerten. Die Aus-wertung kann unter anderem darin bestehen, Kennzahlen und Statistiken zu erheben, die Aufschluss über den Qualitätsstand des Testobjekts und die Effizienz des Testprozesses geben.

Zuletzt unterstützen Werkzeuge für das Testmanagement und die Teststeuerung das Be-richtswesender einsetzenden Organisation, indem sie die im Rahmen der Testdurchführung entstandenen Protokolle auswerten und aufbereiten.

Generierung von Testdaten und Testfällen

Testwerkzeuge sind in der Lage, den Testdesigner hinsichtlich der Definition von Testfällen zu unterstützen, indem sie Testdaten erzeugen und Testfälle erstellen. Wie in Abschnitt 3.2.2 erläutert wurde, erfolgt diese Generierung auf Grundlage der Spezifikation, der Schnittstel-len oder des Quellcodes des zu prüfenden Software-Systems.

Dasmodellbasierte Testen (MBT) ist in dem in Abbildung 13 dargestellten Referenzmodell als Spezialisierung des spezifikationsorientierten Ansatzes enthalten, da das Konzept die Generierung von Testfällen aus dem Systemmodell des Testobjekts vorsieht.

Die Auswertung von GUI-Elementen zur Generierung von Testdaten und Testfällen stellt eine Spezialisierung des schnittstellenorientierten Ansatzes dar, da die grafische Oberflä-che zu den äußeren Schnittstellen des zu testenden Anwendungssystems gezählt werden kann.

Messung und Visualisierung der Testüberdeckung

Ein weiterer Anwendungsbereich für Testwerkzeuge besteht in der Messung und Visuali-sierung der Überdeckung, welche die definierten Testfälle hinsichtlich des Testobjekts errei-chen.

Der Grad derTestüberdeckung kann entweder funktionsorientiert anhand der Anforderun-gen und der Spezifikation des Testobjekts oder strukturorientiert anhand seines Quellcodes ermittelt werden. Im Kontext des strukturorientierten Ansatzes können kontroll- oder daten-flussorientierte Methoden zur Anwendung kommen. Weiterhin erfordert die Messung der Testüberdeckung auf Grundlage des Quellcodes in der Regel die Instrumentierung des Testobjekts, welche durch das im Referenzmodell beschriebene Testwerkzeug mit idealem Funktionsumfang vorgenommen werden kann.

Zusätzlich zur Messung der Testüberdeckung sind Werkzeuge dieser Klasse in der Lage, einen Testfall mit demjenigen Codepfad zu verknüpfen, welcher im Rahmen der Ausführung dieses Testfalls durchlaufen wird. Auf diese Weisevisualisierendie Werkzeuge die Testüber-deckung, wodurch die Analyse von Fehlerzuständen erleichert wird.

In Abschnitt 3.2.3 wurden die Einsatzmöglichkeiten von Werkzeugen zur Messung und Vi-sualisierung der Testüberdeckung ausführlich beschrieben. Die von derartigen Werkzeugen implementierten funktions- und strukturorientierten Testmethoden wurden in den Abschnit-ten 2.2 und 2.3 erläutert.

Testausführung

Werkzeuge für die Testausführung sind zum einen in der Lage, als Testvorbereitung den Testrahmen zu generieren und während des Testlaufs die Produktivumgebung nachzubil-den. Zum anderen rufen derartige Werkzeuge das Testobjekt im Rahmen der Testdurchfüh-rung automatisiert auf, vergleichen die in diesem Zuge erhaltenen Rückgabewerte mit den im Testfall hinterlegten Soll-Werten und protokollieren die Testergebnisse.

Diese Anwendungsfälle für Testwerkzeuge der genannten Klasse wurden in Abschnitt 3.2.4 erarbeitet. Während das Übersichtsdiagramm des Referenzmodells die geforderten Funk-tionen in abstrakter Form darstellt, sind sie in Abbildung 15 in TeilfunkFunk-tionen aufgegliedert und auf diese Weise präzisiert worden.

Durch die Untergliederung der Anwendungsfälle wird deutlich, dass die Generierung des Testrahmens die Erzeugung von Testtreibern sowie von Platzhaltern einschließt.

Testausführung

Testrahmen generieren Testtreiber

erzeugen

Platzhalter erzeugen

Produktivumgebung simulieren

Rückgabewerte prüfen

Ergebnisse protokollieren äußere

Schnittstellen

Testobjekt aufrufen

innere Schnittstellen

<<include>> <<include>>

GUI

Capture-and-Replay Unit Test

Komparator Dienst /

Kommandozeile

Konfiguration

Testumgebung Abweichungen

Testfälle

<<include>>

<<include>>

<<include>>

<<include>>

manuell automatisch

Abbildung 15: Referenzmodell für Testwerkzeuge: BausteinTestausführung.

Quelle: Eigene Darstellung.

Der Aufruf des Testobjekts kann einerseits unter Verwendung von dessen äußeren Schnitt-stellen erfolgen. Hierbei werden Verfahren, welche die grafische Oberfläche des zu testen-den Systems automatisiert ansprechen, unter dem Begriff „Capture-and-Replay“ zusam-mengefasst. Um die Anfälligkeit dieses Ansatzes gegenüber Änderungen am Oberflächen-design zu vermeiden, besteht alternativ die Möglichkeit, die Funktionen des Testobjekts über Programmierschnittstellen direkt auszuführen. Für derartige Aufrufe verwenden Testwerk-zeuge die Kommandozeile des Betriebssystems oder von der zu testenden Anwendung zur Verfügung gestellte Dienste, die beispielsweise als Web-Services vorliegen können.

Neben der Verwendung der äußeren Schnittstellen kann das Testwerkzeug andererseits die inneren Schnittstellen des zu testenden Anwendungssystems ansprechen. Da dies in der Regel im Zuge des Modultests geschieht, ist für diesen Ansatz die englische Bezeichnung

„Unit Test“ verbreitet.

Nach dem Aufruf des Testobjekts vergleicht der Komparator des Testwerkzeugs die Rück-gabewerte mit den im Testfall hinterlegten Soll-Werten.

Eine weitere Aufgabe des Testwerkzeugs besteht darin, die Testdurchführung zu protokollie-ren. Obwohl dies im optimalen Fall automatisch erfolgt, bietet das Werkzeug dem Tester al-ternativ die Möglichkeit, die Ergebnisse der ausgeführten Testfälle manuell festzuhalten. Im Zuge der Protokollierung ist zum einen gefordert, die verwendete Konfiguration des Testob-jekts sowie aussagekräftige Informationen zur Testumgebung festzuhalten. Dadurch können die Rahmenbedingungen des Tests nachvollzogen und die Testergebnisse den relevanten Versionen des Testobjekts zugeordnet werden. Zum anderen sind die ausgeführten Testfälle sowie die aufgetretenen Abweichungen des Ist-Verhaltens vom definierten Soll-Verhalten zu protokollieren. Auf dieser Grundlage können aussagekräftige Abweichungsberichte erstellt werden, welche die Behebung der Fehlerursache erleichtern.

Statische Prüfung und Verifikation

Die statische Prüfung sowie die Verifikation von Software-Systemen stellen wesentliche An-wendungsbereiche für Testwerkzeuge dar. Die relevanten Funktionen für Werkzeuge dieser Klasse wurden in Abschnitt 3.2.5 erarbeitet und basieren auf den Methoden der statischen Software-Prüfung, welche in Abschnitt 2.4 erläutert wurden.

Das in dieser Arbeit vorgestellte Referenzmodell zeigt die Anwendungsfälle für Werkzeuge zur statischen Prüfung und Verifikation in dem in Abbildung 13 dargestellten Übersichtsdia-gramm in abstrakter Form auf. Darüber hinaus werden die Anwendungsfälle auf der zweiten Aggregationsebene des Modells in Abbildung 16 in einem höheren Detaillierungsgrad dar-gestellt.

Bei einemReview handelt es sich per definitionem um eine manuell ausgeführte Methode der statischen Software-Prüfung. Jedoch kann die Effizienz dieses manuellen Vorgehens

Statische Prüfung und Verifikation

Reviews unterstützen Planung und

Organisation

Protokolle auswerten

Kontrollfluss-Anomalien

Datenfluss-Anomalien

<<include>> <<include>>

Sicherheitslücken aufdecken Checklisten

erstellen

<<include>>

Einhaltung von Richtlinien prüfen

Dokumentation prüfen

Model Checker

Testobjekt vermessen

Metriken ermitteln Metriken bewerten

<<include>> <<include>>

formal

Testobjekt verifizieren

semi-formal Anomalien aufdecken

Abbildung 16: Referenzmodell für Testwerkzeuge: Baustein Statische Prüfung und Verifikation.

Quelle: Eigene Darstellung.

durch den Einsatz von Werkzeugen erhöht werden, da diese die Planung und Organisa-tion von Review-Sitzungen übernehmen, Checklisten erstellen und die aus den Sitzungen resultierenden Protokolle verwalten und auswerten können.

Testwerkzeuge zur statischen Prüfung erstellen in der Regel auf Grundlage des Quellcodes des Testobjekts ein Systemmodell, das den Ausgangspunkt für die Anwendung verschiede-ner Analysemethoden darstellt.

Hierbei wird zum einen die Einhaltung der vorgegebenen Programmierrichtlinien im Zu-ge der Konformitätsanalyse Zu-geprüft. Zum anderen sind TestwerkzeuZu-ge durch eine Exploit-Analyse in der Lage, typische Programmierfehler aufzuspüren, die zu Sicherheitslücken führen und das Anwendungssystem angreifbar machen. Darüber hinaus decken Werkzeu-ge Anomalien im Kontroll- und Datenfluss des Testobjekts auf, welche auf eine qualita-tiv schlechte oder fehlerbehaftete Programmierung hindeuten können. Weiterhin kann das Software-System auf Grundlage des Systemmodells, bei welchem es sich um eine abstrakte Darstellung des relevanten Quellcodes handelt, vermessen werden. In diesem Zuge werden Metriken der Softwaretechnik ermittelt und bewertet, wodurch Rückschlüsse auf die Qualität des Software-Produkts gezogen und Verbesserungspotenziale erkannt werden können.

Für die Verifikation von Software-Systemen ist der Einsatz von Testwerkzeugen unabding-bar. Eine formale Verifikation kann den Nachweis erbringen, dass sich das System gemäß seiner Spezifikation verhält. Falls die Anwendung derartiger Verfahren aufgrund des Um-fangs des Testobjekts oder mangels einer ausreichend formalen Spezifikation nicht mit ak-zeptablem Aufwand möglich ist, stehen alternativ semiformale Verfahren zur Verfügung. Die-se sind zwar weniger präziDie-se, jedoch einfacher anzuwenden.

Schließlich ist auch die werkzeuggestütztePrüfung der Dokumentation des Testobjekts als Anwendungsfall in Abbildung 16 enthalten. Für Testwerkzeuge, welche derartige Prüfme-thoden implementieren, ist der Begriff des „Model Checkers“ gebräuchlich.

Nicht funktionaler Test

Im Rahmen des letzten Bausteins des vorliegenden Referenzmodells wird der Funktions-umfang von Testwerkzeugen zur Durchführung nicht funktionaler Tests thematisiert. Die in Abbildung 13 enthaltenen Anwendungsfälle des Bausteins gehen auf die in Abschnitt 3.2.6 enthaltenen Erläuterungen zurück.

Testwerkzeuge sind in der Lage, die Software-Qualitätssicherung hinsichtlich der Durchfüh-rung von nicht funktionalen Prüfungen zu unterstützen, indem siestochastische Zuverlässig-keitsanalysendurchführen und dieZugriffs-sowie dieDatensicherheitdes Anwendungssys-tems testen. Weiterhin dienen Werkzeuge dazu, diePerformanzdes zu testenden Systems

zu ermitteln, indem sie Funktionsaufrufe absetzen und die in der Folge benötigten Antwort-zeiten messen und protokollieren. Auf vergleichbare Weise kann derRessourcenbedarf des Testobjekts ermittelt werden. Hierzu misst das Testwerkzeug unter anderem die Speicher-und Prozessorauslastung des für den Test eingesetzten Hardware-Systems.

Ein weiterer Anwendungsfall für Testwerkzeuge dieser Klasse besteht in der Durchführung von Volumen-, Last- und Stresstests. Diese zielen darauf ab, das Systemverhalten bei stei-gender Auslastung zu überprüfen und können realisiert werden, indem parallele Benutz-erzugriffe in hohem Ausmaß simuliert werden oder die Verarbeitung großer Datenmengen angestoßen wird. Der Stresstest unterscheidet sich hierbei vom Lasttest, da das System bei dieser Testart bewusst über die spezifizierten Maximalwerte hinaus beansprucht wird.

[Spillner u. Linz, 2012, S. 75]