Modellbasierten Test mit Testtabelle erstellen
Ziel eines Unittests ist üblicherweise den Funktionsnachweis eines Funktionsbausteins oder eines Programms zu erbringen. Sie können den dafür nötigen Testcode formal als Testtabelle implementieren.
Testskript mit IEC-Unittest und Testtabellenprojekt
Um mit wenigen Programmierkenntnissen einen Unittest oder Integrationstest zu erstellen, fügen Sie in das Testprojekt eine Testtabelle ein. Der Testtabelleneditor unterstützt Sie bei der Erstellung der Prüfschritte. In der Testtabelle wird pro Zeile ein Prüfschritt abgebildet. Sie konfigurieren eine Zeile, indem Sie eine Eingangsbelegung und die erwartete Ausgangsbelegung für den Prüfling definieren. Dabei können Sie programmatisch auf die Schnittstellen des Prüflings, aber auch auf die der Testapplikation oder des Systems zugreifen. Ziel ist, den Prüfling vollständig zu testen. Folglich resultiert aus der Kombinatorik der Eingangsbelegungen die Mindestanzahl an Prüfschritten.
Das Testskript enthält Testfälle, die das Zielsystem vorbereiten. Dann wird das Testelement IEC-Unittest aufgerufen, das einen Mechanismus anstößt, das den eigentlichen Testcode generiert.
Beispiel: Examples.CounterTestTable
Tipp
Sie finden das CODESYS-Beispielprojekt CounterTestTable
im Verzeichnis C:\ProgramData\CODESYS Test Manager
.
Beim Testlauf wird die Testtabelle implizit in Testbausteine übersetzt und daraus zusammen mit dem Prüfling eine Testapplikation gebaut. Diese wird auf der Steuerung ausgeführt. Dabei wird bewertet, ob die Prüfschritte eingehalten werden. Ein IEC-Unittest gilt dann als bestanden, wenn alle Prüfschritte fehlerfrei durchlaufen werden. Sie können die Fehlerbehandlung für jeden Prüfschritt speziell konfigurieren. Die Ergebnisse werden als Report im Testrepository gespeichert.
Prüfling
Der Prüfling ist ein Funktionsbaustein oder ein Programm, der geprüft wird. Zusätzlich zu dessen internen und externen Schnittstellen können Systemvariablen oder globale Variablen gelesen werden.
Wenn ein Funktionsbaustein (Prüfling) sehr komplex ist, kann es hilfreich sein, diesen in Teilfunktionalitäten mit eigenen Funktionsbausteinen zu isolieren und diese dann sukzessive zu testen.
Timeouts
Timeouts definieren Zeitspannen, die eine Testausführung maximal beanspruchen darf. Bei einer Überschreitung wird mit Fehler abgebrochen. Die verbleibenden Testbausteine werden ausgeführt. Ein Test ist hierarchisch strukturiert in einer Testtabelle, die Testfallgruppen enthält, die wiederum Testfälle enthält. Deshalb gibt es jeder dieser Ebenen Timeouts.
Globaler Timeout des Tests in der Registerkarte Globale Information
Der globale Timeout gilt zunächst über alle Testfallgruppen und alle Testfälle der Testtabelle hinweg.
Lokaler Timeout einer Testfallgruppe in der Registerkarte Tabelleneditor
Eine Testfallgruppe kann einen eigenen Timeout definiert haben, der über alle Testfälle der Testfallgruppe gilt und den globalen Timeout verschattet. Folglich wird beim Testlauf, wenn diese Testfallgruppe ausgeführt wird, dessen lokaler Timeout verwendet. Der globale Timeout ist solange ungültig.
Lokaler Timeout eines Testfalls in der Registerkarte Tabelleneditor
Ein Testfall kann einen eigenen Timeout definiert haben, der den lokalen Timeout der Testfallgruppe verschattet. Folglich wird beim Testlauf, wenn dieser Testfall ausgeführt wird, dessen lokaler Timeout verwendet. Der Timeout der Testfallgruppe und der globale Timeout sind solange ungültig.
Tipp
Wenn Sie in der Registerkarte Tabelleneditor mit dem Mauszeiger auf eine Testfallgruppe oder einen Testfall zeigen, erscheint ein Tooltip, der (unter anderem) dessen lokalen Timeout anzeigt.
Voraussetzung: Das Testprojekt hat eine Testtabelle.
Klicken Sie auf die Testtabelle.
Wählen Sie die Registerkarte Globale Information.
Geben Sie in das Eingabefeld von Timeout eine Zeitdauer im CODESYS-Zeitformat an.
Beispiel:
T#5s
Der globale Timeout ist 5 s.
Voraussetzung: Das Testprojekt hat eine Testtabelle.
Doppelklicken Sie die Testtabelle.
Wählen Sie die Registerkarte Tabelleneditor.
Selektieren Sie die Tabellenzeile mit der Testfallgruppe oder dem Testfall.
Wählen Sie den Befehl
.Geben Sie in das Eingabefeld von Timeout eine Zeitdauer im CODESYS-Zeitformat an.
Beispiel:
T#1s
Der lokale Timeout ist 1 s.
Beenden Sie den Dialog mit OK.
Zeigen Sie mit dem Mauszeiger auf die editierte Tabellenzeile.
Ein Tooltip erscheint, der den Timeout anzeigt.
Dauer
Mit der Dauer bestimmen Sie, wie lange oder unter welchen Bedingungen ein einzelner Testschritt ausgeführt wird. Bei Nichteinhaltung wird mit Fehler abgebrochen und eine Fehlerbehandlung ausgeführt.
Die Dauer ist in der Testtabelle in Spalte Dauer pro Testschritt konfiguriert.
Optionen der Spalte Dauer
Einfach: Einmalige Ausführung des Testschritts
Zyklen: Anzahl der Taskzyklen, solange der Testschritt ausgeführt wird
Zeit: Zeit, solange der Testschritt ausgeführt wird
: Bedingungen, unter denen der Testschritt ausgeführt wird
Definiert in Dialog Benutzerdefinierte Bedingung für Dauer