Beispiel 3: Testfall für Addition mit lokaler Variable, unterschiedlichem Testmodus und Stimuli

In diesem Beispiel wird unterschiedliche Testsuite-Variante für den Funktionsbaustein testAddition mit dem folgenden ST-Code präsentiert.

FUNCTION_BLOCK testAddition
VAR_INPUT
IN1 : INT;
IN2 : INT;
END_VAR
VAR_OUTPUT
OUT1 : INT;
END_VAR
VAR
VAR1 : INT;
END_VAR
OUT1 := IN1 + IN2 + Var1;
END_FUNCTION_BLOCK

Die Vorgehensweise beim Test des obigen Funktionsbausteins testAddition ist analog zum Beispiel 1: Testfall für Counter und Beispiel 2: Testfall für Counter mit globaler/externer Variablen und wird in diesem Beispiel nicht erneut angeführt. Stattdessen konzentriert sich dieser Artikel auf einige der möglichen Unterschiede in der Testsuite – und zwar auf den unterschiedlichen Testmodus und auf einen vorgegebenen Stimuli für die lokale Variable VAR1.

Das Arbeitsblatt für den Testfall enthält immer die Spalten für die Variablen, die Eingangsdaten liefern, als auch die Spalte für den Ausgang (= erwartetes Ergebnis). Diese Spalten sind:

  • IN1

  • IN2

  • VAR1 -- Diese Spalte wird tatsächlich nur für Variante 1 benötigt.

  • OUT

Für diese Variablen werden Testdaten in allen folgenden Varianten angegeben. Ab der 2. Testsuite-Variante wird im Arbeitsblatt Defaults dann eine anderer Testmodus für die lokale Variable verwendet. Und in der 3. Variante wird sogar noch ein Stimuli für die lokale Variable spezifiziert (das ist sozusagen ein Initialisierungswert).
Informieren Sie sich unter "Struktur der Excel-Testsuite, Arbeitsblätter bearbeiten" über die Bedeutung der Einträge im Arbeitsblatt Defaults.

Hier sind die Testsuite-Varianten für den Funktionsbaustein testAddition:

Variante 1 der Testsuite: Vorgegebenen Testmodus "useTestValue" verwenden

In dieser Variante wurden die folgenden Testsequenzen und Testdaten eingegeben:
images/download/attachments/453673727/TF_TestsuiteExampleAddition1-version-2-modificationdate-1605193849548-api-v2.png

Die vorgegebenen Angaben unter Defaults wurden nicht geändert. Da die Variable Var1 nur gelesen wird, ist bereits der Testmodus useTestValue automatisch eingetragen..

Wenn Sie diesen Testfall ausführen, zeigt die Konsole PASS als Ergebnis der Testausführung an. Grund: Aufgrund von useTestValue werden die Testwerte aus der Testfall-Spalte VAR1 verwendet. Das ist der Testwert 3 für die 1. Testsequenz und der Testwert 5 für die 2. Testsequenz.
Diese Berechnungen stimmen also:

  • images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/check.svg Addition: 1 + 2 + 3 = 6

  • images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/check.svg Addition: 1 + 3 + 5 = 9

Variante 2 der Testsuite: Testmodus auf "useLastValue" ändern

In dieser Variante bleiben die Testsequenzen und Testdaten gleich. Die vorgegebenen Angaben unter Defaults wurden nun geändert. Und zwar wurde der Testmodus auf useLastValue geändert.
images/download/attachments/453673744/TF_TestsuiteExampleAddition2-version-1-modificationdate-1605194009382-api-v2.png

Wenn Sie diesen Testfall ausführen, zeigt die Konsole FAIL als Ergebnis der Testausführung an. Grund: Aufgrund von useLastValue werden nicht mehr die Testwerte aus der Testfall-Spalte VAR1 verwendet.
Somit werden beim aktuellen Test nicht mehr diese Berechnungen ausgeführt:

  • images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/error.svg Addition: 1 + 2 + 3 = 6

  • images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/error.svg Addition: 1 + 3 + 5 = 9

Damit der Testfall erfolgreich ausgeführt wird, müssten die erwarteten Werte für OUT1 angepassst werden. Das erfolgt in der nächsten Variante – dabei wird auch gleich ein Stimuli für VAR1 spezifiziert.

Variante 3 der Testsuite: Testmodus "useLastValue" beibehalten, Stimuli ändern, erwartete Werte anpassen

In dieser Variante wurde die Spalte VAR1 im Testfall gelöscht (da deren Testwerte aufgrund von useLastValue nicht mehr relevant sind). Außerdem wurde der Stimuli für VAR1 unter Defaults auf 5 geändert, der Testmodus bleibt auf useLastValue. Zusätzlich wurde das erwartete Ergebnis für die Testsequenzen angepasst (damit der Testfall wieder erfolgreich ausgeführt wird).
images/download/attachments/453673752/TF_TestsuiteExampleAddition3-version-2-modificationdate-1605195492509-api-v2.png

Wenn Sie diesen Testfall ausführen, zeigt die Konsole PASS als Ergebnis der Testausführung an. Grund: Der Stimuli (= Initialisierungswert) 5 wird nun als Wert für VAR1 bei der Addition verwendet – und zwar bei beiden Testsequenzen.
Somit ergeben sich diese Berechnungen, die korrekt sind:

  • images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/check.svg Addition: 1 + 2 + 5 = 8

  • images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/check.svg Addition: 1 + 3 + 5 = 9