Das Angebot an "echten" Testwerkzeugen ist limitiert, deshalb:

Exakte Tool-Definition entscheidet über Erfolg

10.01.1986

Der Terminus "Testen" wird in der Praxis vielfach gleichgesetzt mit "Fehlerlokalisierung". Eine strikte Trennung der Begriffe und der damit verbundenen Aktivitäten ist jedoch notwendig. Heinz Bons stellt in seinem Beitrag eine Aufgabendefinition verfügbarer Tools vor.

Ziele wie "systematisches Testen" , "vollständiges Testen" und "Erhöhung der Softwarequalität" erfordern eine andere Ausrichtung von Maßnahmen und ihrer Hilfsmittel als die Ziele der Fehlerlokalisierung. Testen bedeutet Aufdecken von Fehlern, also Abweichungen zwischen einem vorgegebenen "Soll" und dem "Ist" festzustellen. Die wesentlichen Aktivitäten sind die Erarbeitung geeigneter Testdaten (qualitativ vollständig), die Testausführung sowie der Soll/Ist-Vergleich.

Der Soll/Ist-Vergleich beschränkt sich auf das Erkennen von Fehlern oder besser von Fehlererscheinungsbildern, zum Beispiel Summe ist falsch, kein Ergebnis, oder Programmabbruch. Fehlererscheinungsbilder bieten normalerweise nicht unmittelbar Ansatzpunkte für eine Fehlerbehebung. Es sind zusätzliche, klärende Analysen notwendig. Fehlerlokalisierung bedeutet Aufdecken von Fehlerursachen.

Zu hinterfragen ist, wo innerhalb der Verarbeitung beziehungsweise des Programmablaufs erstmals Fehler oder Abweichungen vom "Soll" auftreten, zum Beispiel ein falscher Weg durch das Programm, falsche Eingaben von außen, eine falsche mathematische Verdichtung oder ein falscher Schlüssel für Lesen oder Schreiben.

Darauf aufbauend müssen Schlüsse hinsichtlich konkreter Fehlerursachen in der Handhabung der Software, Ursachen im Programmcode, in der Vorgabe oder in der Spezifikation gezogen werden. Aussagen über Fehlerursachen sind Voraussetzung für die Fehlererhebung.

Die Bedeutung der Gegenüberstellung von Testen und Fehlerlokalisierung zeigt sich auch darin, daß ein sehr großer Teil der Werkzeuge am Markt primär in den Bereich der Fehlerlokalisierung fällt. Das Angebot an "echten" Testwerkzeugen ist relativ beschränkt.

Aufgabenschwerpunkte oder globale Aktivitäten des Testens, die durch Testwerkzeuge unterstützt werden müssen, sind:

- Die Bereitstellung von geeigneten Testdaten, anhand deren entsprechend den vorgegebenen Zielen und Soll-Vorgaben ein weitgehender Test sichergestellt werden kann.

- Die Ergebnisprüfung, der Soll/Ist-Vergleich oder der Test im engsten Sinne, der die sichtbaren oder sichtbar zu machenden Ergebnisse mit den erwarteten Ergebnissen vergleicht.

- Die technische Testbarmachung von Modulen, Programmbausteinen, Programmen, Transaktionen und Dialogen beim erstmaligen Test in der Software-Entwicklung.

- Die Dokumentation der Testaktivitäten, um einerseits die Pflege und Wartung von archivierbaren Tests und ihre Wiederholung zu sichern, andererseits aber auch die "getane" Arbeit für eine Vollständigkeits- oder generell qualitative Bewertung hinsichtlich der notwendigen Qualitätssicherung bewertbar zu machen.

Die Aufgabenstellung der Bereitstellung von Testdaten ist inhaltlich je nach Testphase unterschiedlich.

Im Modultest (besser Bausteintest) muß der Programmierer eine überschaubare Softwareeinheit - ein Modul, einen Programmbaustein, eventuell auch ein Programm - gegen die Programmiervorgabe testen. Testdaten werden zur Abdeckung der Programmvorgabe bereitgestellt. Es gilt, bis auf die Ebene von Verzweigungen, gegebenenfalls auch von Pfaden, Vollständigkeit im Test zu erzielen.

Im Integrationstest hat der Programmierer die technische und funktionale Schnittstelle zu integrierten Softwareeinheiten sowie zu externen Systemen zu prüfen und funktionale Regressionstests auszuführen. Testdateien werden zur Ausführung der konkreten Schnittstellen sowie zur Wiederholung vorher ausgeführter funktionaler Tests bereitgestellt. Es gilt, sämtliche Schnittstellen und mögliche Grenzsituationen durchzuspielen.

Im Verfahrenstest ist es die Aufgabe des Projekts und/oder des Anwenders beziehungsweise der auftraggebenden Abteilung (Fachabteilung), die fachlichen Anforderungen an das System hinsichtlich ihrer konkreten Realisierung zu überprüfen.

Testdaten werden zur Abdeckung der fachlichen Anforderungen bereitgestellt. Es gilt, alle fachlichen Funktionen - normalerweise gemessen durch Verzweigungen oder Programmroutinen - im Test zu erreichen.

Aktivitäten zur Bereitstellung von Testdaten sind:

- Die Testfallermittlung

Es werden Testfälle unabhängig von ihrer Realisierung durch Testdaten entsprechend den vorgegebenen Zielen für den Test ermittelt oder spezifiziert.

- Die Testdatenerstellung

Ihr Ziel ist die Bestimmung von Testdaten auf der Grundlage von Testfällen sowie die Testdatengenerierung.

- Die Soll-Ergebnis-Ermittlung

Sie ist zwar funktional eine eigenständige Aktivität und wird in der Praxis normalerweise zusammen mit der Ergebnisprüfung ausgeführt, sollte aber untrennbar mit der Testfallermittlung und der systematischen Testdatenerstellung verbunden sein.

Die Aufgabenstellung der Ergebnisprüfung bezieht sich auf die Bereitstellung oder Sichtbarmachung von Daten über den Ablauf der Verarbeitung und dabei entstehenden Zwischenergebnissen oder Zwischenstationen. Es gilt, über die "normalen" Ergebnisse der Programmverarbeitung hinaus Daten bereitzustellen, um eine möglichst detaillierte und damit sichere Ergebnisprüfung vornehmen zu können. Hierzu zählen unter anderem die Funktionen Anzeigen Datenbankschnittstellen, Anzeigen beliebiger Feldinhalte, Ablaufprotokollierung sowie Erstellen von Ablaufstatistiken.

Die hier angesprochenen Einzelaktivitäten überlappen sich sehr stark mit den Aufgaben der Fehlerlokalisierung. Wichtig ist aber das Ziel ihrer Anwendungen: Aufdecken von Fehlern, nicht Aufdecken einer Fehlerursache für einen bereits bekannten Fehler.

Die Ergebnisse der Verarbeitung werden im Soll/Ist-Vergleich gegen ein konkret erwartetes Ergebnis oder gegen die Ergebnisse eines "älteren" Testlaufes im Wiederholungsfall verglichen. Im zweiten Fall ergibt sich eine Werkzeugunterstützung durch Vergleichswerkzeuge sowie durch Werkzeuge zum Mitschneiden von Dialogschnittstellen.

Beide Funktionsgruppen erweisen sich im Verfahrenstest als hilfreich. Im ersten Fall ("gegen ein konkretes Ergebnis") sind die Anforderungen je nach Testphase unterschiedlich. Im Bausteintest zum Beispiel wird angestrebt, dynamisch während der Verarbeitung Zwischenergebnisse (insbesondere an Schnittstellen) zu überprüfen. Um diese Prüfungen sicherzustellen, aber auch für Testwiederholungen zu "konservieren", ist eine Automatisierung unerläßlich. Als Voraussetzung muß das Soll-Ergebnis vor dem Test festgelegt und formal (je nach Werkzeug) beschrieben werden.

Für den Integrations- und Verfahrenstest erweist sich ein Soll/Ist-Vergleich als eine meist personelle Aufgabe, die durch Werkzeuge der Bereitstellung notwendiger Daten sowie im Wiederholungsfall durch Vergleichswerkzeuge unterstützt werden kann.

Die Aufgabenstellung der technischen Testbarmachung beinhaltet die Vorbereitung des Testobjektes selbst für den Test. Hierzu zählt die Bereitstellung einer Testumgebung zur Simulation technischer Schnittstellen, zum Beispiel Programmteile/ Module, DC-Systeme, DB-Systeme, Hardware-Schnittstellen .

Ziel ist das Testen eines Objekts, losgelöst von realen Umweltschnittstellen, weil diese noch nicht realisiert oder verfügbar sind oder weil diese bewußt im Test ausgeklammert werden sollen. Als Begründung hierfür gilt, daß fachlich-inhaltliche Tests von Online-Systemen im Batch-Betrieb ausgeführt werden sowie daß möglichst kleine, überschaubare und damit beherrschbare Einheiten im Bausteintest geprüft werden.

Die Bereitstellung einer Testumgebung beinhaltet den Aufbau von "Treibern" und "Platzhaltern", die die Spezifikation aller Funktionen an den zu simulierenden Schnittstellen enthalten. Das sind unter anderem Protokollierung, Ausgabe spezieller Feldinhalte, Vergleich von Feldinhalten und Soll-Ergebnissen sowie Zuweisung von Testdaten (zum Beispiel Rückgabeparameter im Bausteintest). Die Archivierung einer Testumgebung ermöglicht schließlich eine Wiederholung der Tests (Regressionstest) .

Von entscheidender Bedeutung ist auch die Instrumentierung eines Testobjekts, um während des Ablaufs Protokollmeldungen oder auch Durchlaufzähler für Ablauf- und Teststatistiken zu erlangen. Je nach Arbeitsweise der Werkzeuge wird eine solche Instrumentierung oder aber der Aufbau getrennter Kommando-/Parameter-Dateien notwendig.

Pflege der Dokumente im Wartungsfall

Die Aufgabenstellung der Testdokumentation beinhaltet Ziele wie die Wiederverwendung von Arbeitsergebnissen. Dies beinhaltet insbesondere für den Baustein- und Verfahrenstest die relevante Dokumentation der Testfälle und Testdaten, die Dokumentation von Ergebnis-Dateien für Vergleichsläufe (Regressionstest) in der Wartung sowie die Dokumentation von Testumgebungen, insbesondere für den Bausteintest.

Diese Form der Dokumentation erfordert natürlich zwangsläufig eine Pflege der Dokumente im Wartungsfall. Die Bewertung beziehungsweise Revision des Tests hinsichtlich Vollständigkeit erfolgt aus fachlicher Sicht sowie aus formaler Sicht. Die Bewertung schließt eine Sicherstellung der Ordnungsmäßigkeit ein. Zur Testdokumentation zählen Werkzeuge (Werkzeugfunktionen) zur Ermittlung von Ablauf- und Teststatistiken, die unter anderem sichtbar machen, welche und wie viele Verzweigungen in Prozent (Testabdeckung) im Testlauf - beziehungsweise kumuliert über mehrere Testläufe - tatsächlich ausgeführt worden sind.

Angesprochen werden ferner Tools zur Unterstützung sowie Werkzeuge, die neben der fachlichen Funktion Archivierungsfunktionen beinhalten.

Hinzu kommen Tools zur allgemeinen Dokumentation von Dokumenten und Dateien, die entsprechend auch zur Testdokumentation Verwendung finden können. Ihr Einsatz erfordert jeweils eine unternehmensindividuelle Testorganisation und Integration der Testerfordernisse in die vorhandene "Infra-Struktur". Diese Form der Dokumentation ist erforderlich für Testfälle, für Testdateien sowie Ergebnisdateien im Regressionstest.