Funktionale TestsFunktionale Tests testen die spezifizierte Funktion von Software und werden nach den dabei verwendeten Methoden und der dazu zur Verfügung stehenden Information unterschieden. Grundlage und ZielsetzungAusgehend von einer eindeutigen Spezifikation, was ein Softwaresystem leisten soll, kann auf jeder Granularitätsebene vom Modul bis hin zum gesamten System durch zunehmend komplexere Tests überprüft werden, ob die spezifizierte Funktionalität auch erfüllt wird. Dabei ist offensichtlich, dass die Überprüfung der Einhaltung einer gewünschten Beziehung zwischen Ein- und Ausgaben für einen überschaubaren Algorithmus wesentlich einfacher ist als das komplexe Gesamtverhalten eines aus vielen Komponenten bestehenden Systems mit Benutzerinteraktion. Gemeinsam ist allen Verfahren, dass mit vertretbarem Aufwand nur eine begrenzte Zahl von Testfällen getestet werden kann, die möglichst ‚repräsentativ‘ für die Menge aller möglichen Eingaben sein sollten. Dies kann durch Strukturierung der Wertebereiche für Eingabeparameter in zu gleichen Reaktionen führende Klassen ebenso erreicht werden wie durch die Beschreibung typischer erlaubter oder fehlerhafter Interaktionsfolgen für ein Dialogsystem, die aus den Anwendungsfällen früher Entwicklungsphasen abgeleitet werden können. In sicherheitskritischen Fällen sind ergänzende Methoden ohne Stichprobencharakter wie die Verifikation (z.B. durch Model-Checking) von Systemeigenschaften hinzuzuziehen. Die wichtigsten VerfahrenFunktionale Tests werden sowohl nach der verfügbaren bzw. benutzten Information über das zu testende System als auch nach den unterschiedlichen Strategien, wie hinreichend viele repräsentative Testfälle gefunden werden, unterschieden. Gemeinsames Ziel ist immer, das komplette Verhalten eines Systems zu überprüfen, ohne alle möglichen Abläufe für alle erlaubten oder unerlaubten Eingaben zu testen, da dies schon bei einfachen Systemen mit vertretbarem Aufwand nicht möglich ist.
In vielen Fällen unterstützen Werkzeuge heute beide Verfahrensweisen, die in der Praxis auch in Kombination eingesetzt werden, um möglichst viel Information zur Verbesserung der Testüberdeckung und zur Reduktion des Testaufwands zu nutzen. LiteraturMuchnick, Steven S. : Advanced Compiler Design and Implementation. Morgan Kaufman : San Fransisco, 1997
Autor![]() Prof. Dr. Guido Wirtz, Universität Bamberg, Fakultät Wirtschaftsinformatik und Angewandte Informatik, An der Weberei 5, 96047 Bamberg |