C- und C++-Programme können mit der Dialogtesthilfe AID getestet werden.
In diesem Benutzerhandbuch soll AID lediglich kurz vorgestellt werden. Die ausführliche Beschreibung dieser Testhilfe finden Sie im Handbuch „AID, Testen von C/C++-Programmen“ [9].
AID zeichnet sich durch folgende Leistungsmerkmale aus:
Es bietet die Möglichkeit, „symbolisch“ zu testen, d.h. in den Kommandos an Stelle sedezimaler Adressen auch symbolische Namen aus dem Quellprogramm anzugeben, vorausgesetzt, beim Übersetzen werden LSD-Informationen erzeugt und an das geladene Programm weitergegeben.
Dabei ist es nicht unbedingt erforderlich, diese Informationen stets für das Gesamtprogramm zusammen mit diesem Programm zu laden. AID erlaubt ein Nachladen der LSD-Informationen für jede Übersetzungseinheit, falls die zugehörigen Module mit den LSD-Informationen in einer PLAM-Bibliothek stehen. Dadurch lassen sich Betriebsmittel wirtschaftlicher einsetzen:
Der Programmspeicher wird entlastet, da LSD-Informationen nur dann geladen werden müssen, wenn sie zum Testen benötigt werden.
Ein Programm, das im Test fehlerfrei bleibt, muss für den Produktiveinsatz nicht unbedingt neu (ohne LSD-Informationen) übersetzt oder gebunden werden.
Falls sich für ein Programm während seines Produktiveinsatzes ein Test als nötig erweist, stehen dafür LSD-Informationen zur Verfügung, ohne dass das Programm erneut übersetzt und gebunden werden muss.
Es stellt Funktionen zur Verfügung, die es insbesondere gestatten,
den Programmablauf auf symbolischer Ebene zu verfolgen und zu protokollieren (TRACE-Funktion),
den Programmablauf an festgelegten Stellen oder beim Eintreten definierter Ereignisse zu unterbrechen, um AID- oder BS2000-Kommandos (so genannte Subkommandos) ausführen zu lassen,
sich die Inhalte von Variablen in einer Form ausgeben zu lassen, welche die Datendefinitionen des Quellprogrammes berücksichtigt,
die Inhalte von Variablen zu verändern,
Aufrufhierarchien auch ohne LSD-Informationen rückzuverfolgen
(%SDUMP %NEST).
Es unterstützt neben der Diagnose geladener Programme auch die Analyse von Speicherabzügen in Plattendateien.
Es kann außer im Dialog- auch im Stapelbetrieb eingesetzt werden. Für einen Programmtest empfiehlt sich allerdings der Dialog, da die Folge der Kommandos nicht im voraus festgelegt werden muss, sondern der jeweiligen Testsituation angepasst werden kann.
In C können folgende Arten von Symbolen angesprochen werden:
einfache (skalare) Typen
Arrays und Arrayelemente
Strukturen/Unionen und Struktur-/Union-Komponenten
Aufzählungs-Konstanten (enum)
Bitfelder
Zeiger
Funktionen
Label
Nicht referenzierbar sind jedoch Präprozessor-Konstanten und -Makros (#DEFINEs), typedef-Namen, Aufzählungs-, Struktur- und Union-Typen (Etiketten), inline-generierte Funktionen.
In C++ können zusätzlich folgende Arten von Symbolen angesprochen werden:
Funktionen und Datenelemente innerhalb von Klassen
Überladene Funktionen und Operatoren
Referenzen
Templates
Namespaces
Auf einzelne Anweisungszeilen wird über Source-Referenzen, auf den Beginn von Blöcken über Block-Referenzen Bezug genommen:
S'[<UNIQUE-Nr.> -] <Zeilen-Nr.> [: <rel.Anweisungs-Nr.>]' bzw.
BLK = '[<UNIQUE-Nr.> -] <Zeilen-Nr.> [: <rel.Block-Nr.>]'
Die UNIQUE- und Zeilennummer wird auch in der Quellprogramm-/Fehlerliste abgebildet. Dabei entspricht die UNIQUE-Nr. der FILE-NO des Listings.