Testautomatisierung ist Pflicht.
Damit Testfälle für einen Regressionstest wiederverwendet werden können, müssen sie wiederholbar sein. Der Nutzen einer Testautomatisierung beim Regressionstest ist also ganz erheblich.
nachgelagerte Teststufen: Test nach
Weiterentwicklung und Änderung
Ist die Software einmal fertiggestellt, kann sie viele Jahre im Einsatz sein. In dieser Zeit finden Fehlerkorrekturen, Änderungen und Erweiterungen statt. Im Folgenden wird die Vorgehensweise beim Test in dieser letzten Phase des Lebenszyklus vorgestellt.
Testen nach Software-
wartung und -pflege
Die in der Nutzungsphase einer Software eingepflegten Erweiterungen und Korrekturen werden im Rahmen einer Softwarewartung und -pflege einem spezifischen Wartungstest unterzogen. Von Softwarewartung wird gesprochen, wenn Fehlerzustände eliminiert werden, die schon immer im Code enthalten waren. Die Softwarepflege hingegen bezeichnet das Anpassen einer Software an geänderte Einsatzbedingungen, z. B. an ein neues Betriebssystem.
Welche Testfälle sind bei Software-
wartung auszuführen?
Bei der Softwarewartung, also dem Test nach Fehlerbehebung, sind in erster Linie alle Testfälle auszuführen, die in der Vorversion im Testergebnis Fail resultiert und die betreffende Fehlerwirkung gezeigt haben. Wurden Fehlerzustände behoben, die nicht durch Testfälle aufgefallen waren, sind entsprechende Testfälle zu ergänzen. Oft lässt es sich aber nicht vermeiden, bei einer Fehlerkorrektur auch das nicht auffällige Verhalten der modifizierten Software zu verändern. Dies kann absichtlich oder unbeabsichtigt erfolgen – zumindest für die bekannten Veränderungen sind entsprechend Testfälle zu ergänzen. Zusätzlich müssen aus den vorhandenen Testfällen diejenigen wiederholt werden, die aufzeigen können, dass die nicht modifizierten Anteile der betroffenen Komponente noch immer spezifikationskonformes Verhalten aufweisen.
Hotfix für dringende Fälle außerhalb
der Wartungsmaßnahmen
Nicht selten treten beim Einsatz einer Software in der Produktivumgebung Fehlerwirkungen auf, die einer sofortigen Beseitigung bedürfen und nicht bis zur nächsten Wartungsmaßnahme warten können. Die erforderliche Notlösung wird als Hotfix bezeichnet und ist in der Kürze der Zeit oft keine ausgereifte Fehlerbeseitigung. Auch die Absicherung wird im Interesse einer schnellstmöglichen Zurverfügungstellung des Hotfix nur reduziert absolviert. Die gründliche Absicherung der Maßnahme muss dann im Nachgang so schnell wie möglich nachgeholt werden.
Wartung darf kein Vorwand sein
für Einsparungen beim Test.
Aus der Tatsache, dass im Rahmen ohnehin erfolgender Wartungsmaßnahmen eine erneute Absicherung vorgesehen ist, darf allerdings nicht abgeleitet werden, dass bei der Erstentwicklung an der Absicherung gespart werden darf. Wer so handelt, ist sich der Kosten und Risiken von Softwarefehlern nicht bewusst.
Softwarepflege
Von Softwarepflege wird gesprochen, wenn die Software an geänderte Einsatzbedingungen, z. B. bedingt durch ein neues Betriebssystem, angepasst werden muss. Neben funktionalen Tests und obligatorischen Akzeptanztests sind dann auch die inneren Qualitätsmerkmale und nichtfunktionalen Eigenschaften wie Performance und Ressourcenbedarf in der neuen Umgebung abzusichern.
Testen nach Weiterent-
wicklung der Software
Außer den oben erwähnten Wartungsmaßnahmen sieht ein Software-Lebenszyklus oft auch eine funktionale Weiterentwicklung vor, um das Produkt wettbewerbsfähig zu halten oder den Kundenkreis zu erweitern. Neue Softwareversionen werden entwickelt. Im Zuge der Aufwandsreduktion werden Weiterentwicklungen oft mit ohnehin geplanten Wartungsmaßnahmen synchronisiert. Bei Auswahl und Design der hierbei vorzusehenden Testfälle ist natürlich besonderes Augenmerk auf die neu ergänzte Funktionalität zu richten. Im Zuge eines Regressionstests ist zu prüfen, ob die vorhandene, unveränderte Funktionalität versehentlich beeinträchtigt wurde. Je strikter die Softwarearchitektur in einem Entwicklungsprojekt von Beginn an eingehalten wurde, desto unproblematischer kann die Software in ihrem Lebenszyklus erweitert werden. In Extremfällen kann eine Neuimplementierung günstiger sein als eine Weiterentwicklung.
3.5 Testprozess und Testaktivitäten
die Tücken des unstruk-
turierten Testens
Ein gut strukturierter Testprozess mit klar aufeinanderfolgenden Testaktivitäten und definierten Schnittstellen ist eine unabdingbare Voraussetzung für effizientes Testen. Nichts ist ineffizienter, als ohne konkreten Plan »einfach mal anzufangen« mit dem operativen Testbetrieb. Die Erfahrung zeigt, dass der unstrukturierte Tester zu Beginn den Eindruck hat, schnellen Fortschritt zu machen, dann aber – auch bei hohen Aufwänden – ein gewisses Reifegrad-Level nie überschreitet. Der Test ist geprägt durch Testlücken sowie hohe ungewollte Redundanz und damit potenziell ineffizient. Das Ergebnis bleibt dann auch weit hinter einem methodischen Vorgehen zurück. Trotz schneller Anfangserfolge erfüllt der unstrukturierte Tester im Endergebnis bei vergleichbaren Aufwänden die Erwartungen nur in den seltensten Fällen. Darüber hinaus ist es häufig so, dass der Reifegradverlauf eines Softwareentwicklungsprojekts einen erratischen Charakter aufweist und in keiner Weise plan- oder prognostizierbar ist. Jederzeit ist mit teilweise dramatischen Rückschlägen in der Qualität zu rechnen – dies ist vor allem in der Endphase des Entwicklungsprojekts nicht hinnehmbar. Es ist daher essenziell, einem Testprozess zu folgen und dabei gewissen Grundregeln der Testableitung, -durchführung und -evaluierung zu folgen. Dieser Testprozess weist in der Regel einen projektspezifischen Charakter auf.
Im Folgenden wird ein generischer Testprozess mit seinen Testaktivitäten aufgezeigt. Auch wenn nicht im Detail immer exakt genauso gearbeitet werden kann, geht aus der Darstellung hervor, worüber man sich im Vorfeld Gedanken machen sollte – noch bevor der erste Test durchgeführt wird. Wie in Abb. 3-16 zu sehen, besteht ein systematischer, gut strukturierter Testprozess aus fünf Hauptaktivitäten: Testplanung, Testspezifikation, Testimplementierung, Testausführung und Testevaluierung. Von besonderer Bedeutung in der Praxis – da oft zu wenig beachtet – sind die beiden ersten Schritte.

Abb. 3-16: Übersicht Testprozess und Testaktivitäten
3.5.1 Testplanung
Die Testplanung beginnt bereits während der Systemspezifikationsphase, also während das spätere SUT selbst spezifiziert wird.
Testziele festlegen
In der Testplanung werden die wesentlichen Testziele festgelegt: Welche Qualitätseigenschaften sollen geprüft werden? Diese Testziele können z. B. aus den Qualitätsmerkmalen für Software abgeleitet werden.
Risikoeinschätzung vornehmen
Ferner ist in der Testplanung bereits eine Risikoeinschätzung für das SUT vorzunehmen. Welches Risikolevel weist das System auf? Wie sicherheitskritisch ist es?
Welche Metriken sollen
zum Einsatz kommen?
Wichtig ist auch die Vereinbarung, welche quantitativen Metriken beim Test zum Einsatz kommen sollen: Wie soll die Testüberdeckung gemessen werden, was ist das Testende-Kriterium? Hier könnte man sich z. B. eine verbleibende Fehlerfindungsrate unter einem bestimmten vorgegebenen Wert, die Überdeckung bestimmter Strukturmerkmale im Code oder die Abdeckung eines spezifizierten Anteils der Anforderungen im zugrunde liegenden Lastenheft vorstellen.
Teststrategie festlegen und
Ressourcen sicherstellen
Gegenstand der Testplanung ist aber auch die Festlegung der grundsätzlichen Teststrategie: Welche Testmethoden (von denen wir im weiteren Verlauf dieses Buchs noch viele kennen lernen werden) sollen zum Einsatz kommen? Ganz wesentlich ist auch eine Aufwandsabschätzung für den Testprozess sowie eine Termin- und Ressourcenplanung.
Читать дальше