Software von der Testseite her "nach dem Fehler wieder aufgesetzt werden". Das Testsystem muß jederzeit für neue Benutzereingaben bereit, also unterbrechbar sein. Jede Entwicklung in der Programmausführung muß, sobald erkannt, vom Anwender beeinflußbar s

08.09.1978

Software von der Testseite her "nach dem Fehler wieder aufgesetzt werden".

Das Testsystem muß jederzeit für neue Benutzereingaben bereit, also unterbrechbar sein. Jede Entwicklung in der Programmausführung muß, sobald erkannt, vom Anwender beeinflußbar sein.

Das Testsystem muß sicherstellen, daß minimal sorgfältig getestet wird. Jeder Programmzweig muß mindestens einmal durchlaufen werden.

Welche Einzelfunktionen muß nun ein Testsystem aufweisen?

Regiefunktion

Tests finden statt auf Modul-, Komponenten- und Systemebene. Bei allen Tests muß für den zu testenden Code eine Umgebung bereitgestellt werden: Variable erhalten Initialisierungswerte, ein Return soll zum Anwender zurückführen, ein externes Ereignis soll eine bestimmte Ausführung bewirken. Die Regiefunktion erlaubt insbesondere:

Laden von Moduln, Komponenten und Systemen.

Initialisieren von Variablen, Strukturen und Mengen (Dateien).

Erzeugen externer Ereignisse (Interrupts, Benutzereingriffe).

Zeitraffer/Zeitlupe:

In einer bestimmten Phase des Testens interessieren den Programmierer nur bestimmte Teile eines Programmes; dennoch müssen andere Teile ablaufen. Die Aufnahmefähigkeit des Menschen ist beschränkt. Um den Programmfluß dynamisch beobachten zu können, muß die (...) DV-Beratung Beck sitzt in der Lindenstraße 18 in 7261 Gechingen und nicht, wie in der Computerwoche-Marktübersicht "Standardprogramme für die Materialwirtschaft" (CW Nr. 32, vom 4.8.78) verdruckt war, in Hechingen.

Geschwindigkeit der Ausführung steuerbar sein. Der Benutzer muß jederzeit in der Lage sein, ihn interessierende Programmteile langsam oder schnell ablaufen zu lassen. Eine Schleife, die 10000mal durchlaufen wird, ist nur beim ersten Durchgang oder bei Überschreiten irgendwelchen Grenzwerte von Interesse; eine einfache IF-Verzweigung kann demgegenüber in einer bestimmten Situation und Datenkonstellation von größter Bedeutung sein.

Zoom-Funktion:

Mittels der Zoom-Funktion ist der Benutzer in der Lage festzulegen, auf welcher logischen Ebene ihm Informationen über Programmfluß und Zustände dar(...) werden. Der Anwender muß in der Lage sein, eine Struktur hexadezimal aufbereitet zu betrachten und gleichzeitig ein Gleitpunktfeld im Displayformat, welches innerhalb der Struktur liegt. Einmal interessiert den Benutzer nur der Programmfluß auf der Ebene der Paragraphen, ein anderes Mal will er Statement für Statement sehen. Die Zoom-Funktion ist nicht ein-, sondern mehrdimensional. Es stehen gleichzeitig für unterschiedliche Programmteile (oder Situationen) unterschiedliche Optiken zur Verfügung. Die Zoom-Funktion bestimmt die logische, Zeitlupe und Zeitraffer die zeitliche Auflösung.

Projektion:

Ähnlich wie beim Film aus statischen Einzeibildern in der Projektion ein dynamischer Ablauf entsteht, wird bei einem Programmablauf das statische, in einer Sprache formulierte "Bild" in einen dynamischen Prozeß umgesetzt. Die Beziehung zwischen statischem Bild und dynamischem Ablauf wird durch die Projektion und Reprojektion transparent gemacht. Das Testsystem stellt die Beziehung dadurch her, daß nicht nur - wie bei einem Trace - Label ausgedruckt werden, sondern Statements direkt verändert werden können. Ein weiterer wesentlicher Punkt ist, daß nicht nur Zugriff auf das statische Programm gewährleitstet sein muß, sondern auch der Durchgriff auf die Dokumentation, welche schließlich beschreibt, was ein Programm eigentlich tun soll. Sehr oft nennt man Programme als ausgetestet, wenn sie meistens nicht abstürzen (!); und nicht, wenn sie tun, was sie eigentlich sollen. Testen ist der Vergleich von Soll-Ausführung, -Wirkung und Ist-Ausführung und -Wirkung. Da sich Programmänderungen an verschiedensten Stellen auswirken können, muß auch von daher der Zugriff auf Informationen über potentielle Nebenwirkungen vorhanden sein.

Replay-Funktion:

Sehr oft stellt man beim Testen fest daß etwas schiefgelaufen ist - und zwar in den letzten zwanzig Statements. Um aber zu wiederholen und genauer nachzuschauen, muß wieder von ganz vorne angefangen werden. Ein umfassendes Testsystem muß also eine Funktion enthalten, die es erlaubt, den Prozeß ein paar Schritte zurückzudrehen und noch mal (vielleicht langsamer) ablaufen zu lassen:

Wiederholung der letzten Statements, ausgehend vom "damaligen" Zustand mit veränderbaren Zeit-, Zoom- und Projektionsparametern.

Schnitt-Funktion:

Ein Break, wie es ihn in herkömmlichen Testsystemen gibt, ist nur Spezialfall eines allgemeinen Event-Monitoring, das Überwachen von Ereignissen. Sorgt die Regiefunktion für den Aufbau einer Programmszenerie, so erlaubt der Schritt das Überwachen von Ereignissen. Beispiele für solche Ereignisse: Variable liegen innerhalb bestimmter Intervalle, eine Bedingung wird wahr, es ereignet sich ein Interrupt, eine bestimmte Programmkomponente wird durchlaufen.

Allgemein erlaubt die Schnittfunktion:

Das Überwachen beliebiger Ereignisse auf der gerade aktuellen Ebene sowie das Durchführen spezifischer Aktionen. (Rückkehr zum Benutzer, Anzeige des Ereignisses, .. .)

Hiermit sind die interaktiven Einzelfunktionen des Testsystems beschrieben.

*G.Ziegler ist Beraterin Hamburg