1 ...8 9 10 12 13 14 ...26 kein klares Testende
Ein Problem beim Funktionstest ist allerdings, dass es keinen klar erkennbaren oder definierten Testumfang gibt, den es zu bearbeiten gilt. Genügt es, jede Anforderung einmal abzusichern? Oder ist das womöglich gar nicht erforderlich? Muss man Kombinationen von Anforderungen bilden und gemeinsam, d. h. in Verbindung miteinander testen? Auf all diese Fragen gibt es keine klaren Antworten.
keine Automatisierung
Weiterhin sind Funktionstests nur schwer automatisierbar. Idealerweise kann das Testsystem (das den Test ausführende System – in Abgrenzung zum SUT) auch automatisch die korrekte, erwartete Antwort ermitteln, um die Testbewertung durchführen zu können (Pass/Fail). Man versuche dies mit einem in Prosa geschriebenen Lastenheft!

Abb. 1-11: Steckbrief funktionaler Test
1.3.6.2 Strukturtest
Während der funktionale Test gegen die Spezifikation einzelne Anforderungen referenziert (Testziel sind die Anforderungen), nutzt der Strukturtest die Strukturelemente als Testziele. Als Strukturelemente kommen z. B. Anweisungen, Zweige, Bedingungen oder Pfade des Programmcodes infrage.
Testziel sind die Strukturelemente
im Programmcode.
Kann es beim Funktionstest Testziel sein, alle Anforderungen abzutesten, wäre beim Strukturtest ein Testziel denkbar, Programmzweige oder Bedingungen mindestens einmal zu durchlaufen. Eine vollständige Testabdeckung wäre z. B. erreicht, wenn das Programm durch die Tests jede Bedingung mindestens einmal durchlaufen hätte. Die Tests müssen nun so gewählt bzw. das zu testende Programm so stimuliert werden, dass dieses Ziel erreicht wird. In der Regel kann dies nicht in nur einem Testlauf geschehen und es sind mehrere Testläufe erforderlich.
Die Entwicklung der Variablenwerte im
Programmablauf steht im Vordergrund.
Bei datenflussorientierten Testverfahren liegen den Testzielen nicht die Strukturelemente des Programms, sondern Zugriffe auf Variablen bzw. deren »Werdegang« im Ablauf eines Programms zugrunde. Doch hierzu später mehr.
Bei der Bewertung des Strukturtests bleibt festzustellen, dass es sich um ein sehr verbreitetes Testverfahren handelt. Die Werkzeugunterstützung ist vielfältig und die Testautomatisierbarkeit sehr hoch. Hat das Testwerkzeug die Quellen erst einmal eingelesen und analysiert, ist es ein Leichtes, die für bestimmte Programmläufe des SUT erforderlichen Stimuli zu berechnen, das SUT entsprechend mit diesen Stimuli aufzurufen, das Ergebnis auszulesen und mit der richtigen Sollantwort zu vergleichen. Alles vollautomatisch!
Anwender erleben die Funktion
von Software, nicht das Durch-
laufen ihrer Strukturelemente.
Man sollte nur nicht vergessen, dass man sich hier auf einer rein formalen Ebene bewegt. Anwender hingegen erleben Funktionen, nicht das Durchlaufen eines Strukturelements. Man kann also mithilfe des Strukturtests nie Aussagen treffen, ob wirklich alle im Lastenheft geforderten Funktionen auch fehlerfrei umgesetzt sind. Man kann noch nicht einmal beurteilen, ob sie überhaupt implementiert sind. Strukturtests können also nicht die ganze Wahrheit, sondern nur Bausteine (wenn auch wichtige Bausteine) in der Absicherungskette sein, die mit anderen Elementen sinnvoll kombiniert werden müssen.
Eine vollständige Abdeckung ist beim
Strukturtest nicht immer möglich.
Aufgrund der individuellen, strukturellen Eigenschaften von Programmcode ist es je nach der gewählten Metrik nicht möglich, eine vollständige Überdeckung zu erreichen. Jeder Test entspricht hierbei einem konkreten, ggf. für die vollständige Abdeckung noch fehlenden, Programmverlauf und muss durch geschickte Wahl der Programmeingangsdaten vom Testsystem herbeigeführt werden. Dies ist allerdings nicht immer möglich, da sich unter Umständen bestimmte Wertekombinationen widersprechen, d. h. von der Spezifikation ausgeschlossen wurden.

Abb. 1-12: Steckbrief Strukturtest
1.3.6.3 Statistischer Test
operationales Profil
Beim statistischen Test erfolgt die Testdatengenerierung nicht auf Basis struktureller Eigenschaften des Codes, sondern zufällig gesteuert. Die Testdaten werden oft einem operationalen Profil entsprechend generiert, also einem typischen Anwendungsfall für das spätere Produkt. Bei mehreren Anwendungsfällen werden nach der Häufigkeit der beim späteren Betrieb zu erwartenden Programmabläufe Testdaten generiert. Da operationale Benutzungsprofile durch eine in der Regel einfache Schnittstelle hier leicht zu ermitteln sind, finden statistische Testverfahren oft Anwendung bei der Absicherung von Telekommunikationssystemen, also z. B. der Nutzung von Endprodukten oder Übertragungssystemen.
Die Testdatengenerierung
orientiert sich an häufigen
Nutzungsarten der Software.
Diese Testmethodik stellt sicher, dass sehr schnell Fehler hoher Kundenrelevanz gefunden werden. Situationen, in denen Nutzer bereits nach kurzer Zeit schwerwiegende Fehler in einer neuen Software entdecken, sollten dann sehr unwahrscheinlich sein.
Außergewöhnliche Verwendungen des Produkts werden andererseits entsprechend schlechter abgesichert. Dies ist bei knapper Testzeit sicher die bessere Vorgehensweise, als die häufigen Anwendungsfälle unzureichend abzusichern. Andererseits können auch seltene Nutzungsszenarien von besonderer Bedeutung sein oder zu großen Schäden führen. Aus diesen Gründen kommt dem statistischen Test bei der Entwicklung eingebetteter Systeme nur Nischenbedeutung zu, es wird eine zielgerichtetere Testdatengenerierung bevorzugt. Oft wird das Testverfahren mit Verfahren der systematischen Testfallableitung kombiniert, um die Vorteile beider Verfahren zu vereinen. Durch die einfache Testdatenermittlung und die hohe Automatisierungsmöglichkeit der Testdurchführung ist der zusätzlich entstehende Aufwand vergleichsweise gering. Gezielt bestimmte Testszenarien oder Parameterkombinationen abzusichern ist hingegen nicht darstellbar.
keine Automatisierung möglich
Zudem ist die Ermittlung eines zuverlässigen operationales Profils bei eingebetteten Systemen oftmals schwierig und das Vorgehen ist auch kaum zu automatisieren. Wie sollte das Testsystem ermitteln können, was das richtige Ergebnis einer zufälligen Stimulation des SUT gewesen wäre bzw. ist?
Testorakel ermitteln
richtige Testergebnisse.
Programme, die zu einem bestimmten Stimulus des SUT die korrekte, spezifikationskonforme Antwort ermitteln, existieren aber durchaus. Man nennt sie vielsagend Testorakel.

Abb. 1-13: Steckbrief statistischer Test
1.3.6.4 Mutationentest
ein Testverfahren für Testverfahren
Beim Mutationentest handelt es sich um kein Verfahren zur Gewinnung von Testfällen im eigentlichen Sinne, sondern um eine Beurteilung der Güte von Testmethoden bzw. Testfallableitungsalgorithmen.
Das Testsystem ändert/mutiert geringfügig ein SUT und überprüft, ob diese gezielt eingebrachten Fehler, die ja Abweichungen vom spezifizierten Verhalten darstellen, bei Anwendung der Testfallableitungsmethodik gefunden werden.
Der Automatisierungsgrad ist hoch, in der Praxis hat dieses Verfahren bei der Entwicklung eingebetteter Systeme allerdings keine besondere Relevanz, wohl aber bei der Bewertung der hierfür eingesetzten Testableitungsverfahren.
Читать дальше