Start und Beendigung¶
Start
Der Start eines parallelen Teststranges erfolgt durch den parallelen (auch als asynchron bezeichneten) Aufruf eines Packages. Dies ermöglicht der Testschritt „Parallele Packagereferenz“.
„Parallele Packagereferenz“ wird analog zur klassischen Packagereferenz via Kontext-Menü-Befehl des Workspace-Explorers in den Testfall eingefügt.
Der klassische Package-Aufruf wird auch als synchroner Aufruf bezeichnet.
Wie beim synchronen Aufruf können dem aufgerufenen Package Parameter übergeben werden und die Zielvariablen im Aufrufer definiert werden, in die die Rückgabewerte des aufgerufenen Packages geschrieben werden.
Laufzeit und Beendigung
Asynchron aufgerufene Packages enden:
nach Ausführung ihres letzten Testschritts, der durch den Kontrollfluss bestimmt ist
nach Ausführung des Testschrittes Return
bei Testabbruch
Asynchron aufgerufe Packages können nicht gewaltsam (durch den Aufrufer) abgebrochen werden (außer durch einen Testabbruch), sie beenden sich immer selber. Ihnen kann aber eine Aufforderung zur Beendigung geschickt werden (siehe dazu Nachrichtenaustausch zwischen parallelen Teststrängen).
Beachte: Hat ein asynchron aufgerufenes Package seinerseits parallele Subpackages gestartet, so wartet es außer im Fall c) nach Ausführung seines letzten Testschritts auf das Ende aller Subpackages, bevor es zurückkehrt. D. h. parallel ausgeführte Subpackages leben niemals länger als das übergeordnete Eltern-Package. Dieses Verhalten wird als impliziter Join eines Packages mit seinen Subpackages bezeichnet.
Synchronisation und Zugriff auf Rückgabewerte eines asynchron aufgerufenen Packages
Die Rückgabewerte eines Packages stehen erst am Ende seiner Ausführung zur Verfügung und werden auch erst dann in die Zielvariablen des Aufrufers eingetragen. Der Aufrufer eines parallelen Packages muss also auf dessen Ende warten, bevor er auf dessen Rückgabewerte zugreifen kann. Dies geschieht automatisch, sobald ein Testschritt des Aufrufers lesend auf eine der Zielvariablen zugreift oder bei der automatischen Zwischenspeicherung aller Werte für die Traceanalyse im Rahmen des Stop Trace Testschritts. Der Lesezugriff blockiert dann den Aufrufer bis zum Ende des Subpackages (auch als expliziter Join eines Packages mit seinem Subpackage bezeichnet).
Der Schreibzugriff auf eine Zielvariable schlägt fehl, solange die asynchrone Ausführung des Subpackages noch nicht abgeschlossen ist. Gleiches gilt für die erneute Zuordnung einer Zielvariablen in einem zweiten asynchronen Aufruf, wenn der erste Aufruf noch nicht beendet ist.
Reporting¶
Die Darstellung asynchroner Aufrufe von Packages im Testreport geschieht auf gleiche Weise wie die des synchronen. Die farbliche Kennzeichnung der Aufrufe ist jedoch unterschiedlich. Desweiteren können parallel ausgeführte Subpackages aufgrund ihrer zeitlichen Überlappung mit ihrem Eltern-Package nicht inline (d. h. verschränkt mit den Testschritten des Eltern-Package) dargestellt werden.