Quickstart

Das folgende Kapitel soll einen leichten Einstieg in die Verwendung des TwinCAT 3 TestFrameworks ermöglichen. Prinzipiell kann das TestFramework auf zwei verschiedene Arten verwendet werden.

In diesem Quickstart wird auf den ersten Anwendungsfall eingegangen, da dieser vermutlich das häufigere Anwendungsscenario darstellt.

1. Erstellen Sie ein neues TwinCAT-3-Projekt.
2. Erzeugen Sie ein neues SPS-Projekt.
3. Fügen Sie die SPS-Bibliothek Tc3_PlcTestFramework dem SPS-Projekt hinzu.
4. Fügen Sie die SPS-Bibliothek hinzu, die getestet werden soll, sofern die Testfälle nicht direkt im Steuerungscode der Applikation enthalten sind.

Implementierung der Test-Fälle:

Führen Sie die folgenden Schritte für alle Testfälle durch, die Sie implementieren möchten:

5. Erzeugen Sie einen neuen Funktionsbaustein, welcher sich vom Baustein FB_TestCaseBase aus der SPS-Bibliothek Tc3_PlcTestFramework ableitet.
6. Fügen Sie über dem Namen des Funktionsbausteins den Namen des Testfalls als Attribut ein, so wie er im Test-Log bzw. den Test-Clients angezeigt werden soll. Möchten Sie keinen Namen explizit vergeben, wird automatisch der Name der POU als Name des Testfalls verwendet.
7. Fügen Sie optional per Attribut ein Timeout und den Testfall-Owner ein.
Der Deklarationsteil des Funktionsbausteins könnte danach wie folgt aussehen:
{ attribute 'Name':='TB_Sum-Test' }
{ attribute 'Timeout':='t#20s' }
{ attribute 'Owner':='TestOwner' }
FUNCTION_BLOCK FB_TestSum EXTENDS FB_TestCaseBase
VAR_INPUT
END_VAR
8. Deklarieren Sie in der Variablen-Deklaration des Funktionsbausteins den Baustein, den Sie testen wollen
9. Deklarieren Sie zusätzlich Variablen, welche das erwartete Ergebnis des Testfalls und das Ergebnis enthalten werden. Diese explizite Definition ist erforderlich, da die Methode, welche das Ergebnis mit dem Erwartungswert vergleicht, auf dem Any-Datentyp basiert.
10. Implementieren Sie den Testfall. Der Vergleich auf Korrektheit des Ergebnisses erfolgt mit der Methode AssertEqual, welche bereits im Basisfunktionsbaustein implementiert ist.

Die Tests werden so lange ausgeführt, bis der Testfall mit der Funktion Succeded() verlassen wird oder ein Fehler auftritt. Auf diese Weise ist es möglich, Testfälle so zu gestalten, dass diese iterativ durchlaufen werden.

Der Steuerungscode für den Test eines Summationsbausteins könnte also vereinfacht so aussehen:

{ attribute 'Name':='TB_Sum-Test' }
{ attribute 'Timeout':='t#20s' }
{ attribute 'Owner':='TestOwner' }
FUNCTION_BLOCK FB_TestSum EXTENDS FB_TestCaseBase
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    myFB : FB_Sum;
    expectedValue : UINT;
    result: UINT;
END_VAR
// test 2 + 2 = 4
myFB(var1:= 2, var2:= 2, result=> result);

expectedValue:=4;
AssertEqual(expected:= expectedValue, actual:= result, message:= 'Addition with the FB_Sum function block is incorrect!');
Succeeded();

Sind alle Testfälle implementiert, fahren Sie wie folgt fort:

11. Stellen Sie sicher, dass auf dem SPS-Projekt die Option Autostart Boot Project aktiv ist.
12. Aktivieren Sie das Projekt auf dem gewünschten Zielsystem.
13. Öffnen bzw. starten Sie einen Test-Client und führen Sie die Tests aus.

Test-Client mit User-Interface:

14. Starten Sie den Test-Client.
Quickstart 1:
15. Wählen Sie mit der Auswahlbox der Option target das Zielsystem aus, auf dem das Test-Projekt ausgeführt wird.
16. Betätigen Sie danach die Connect-Taste direkt hinter der Zielsystemauswahl
Es werden im Test-Client alle Testfälle in einer tabellarischen Ansicht dargestellt.
Quickstart 2:
17. Durch Betätigen des Buttons Queue All starten Sie die Ausführung aller Testfälle.
Eine detaillierte Beschreibung der Funktionen der Benutzeroberfläche des Test-Clients finden Sie im Kapitel Referenz, Benutzeroberfläche.

Kommandozeilen-Client:

1. Führen Sie das folgende Kommando per Skript oder per Kommandozeile auf:

TcTestClientCli.exe --target 199.4.42.250.1.1 --saveResultsAsJunit "C:\temp\testJunit.junit.xml" --tcStartupRetries 10 --mode checkMemory

Der TestClientCli wird standardmäßig in das Verzeichnis C:\Program Files (x86)\Beckhoff\TwinCAT\Functions\TE1040-TestFramework\TcTestClientCli\ installiert.