Skip to main content

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 _tm_icon_iec_unit_test.png 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.

. Timeouts in Testtabellen
  • 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.

Prozedur. Globalen Timeout definieren

Voraussetzung: Das Testprojekt hat eine Testtabelle.

  1. Klicken Sie auf die Testtabelle.

  2. Wählen Sie die Registerkarte Globale Information.

  3. Geben Sie in das Eingabefeld von Timeout eine Zeitdauer im CODESYS-Zeitformat an.

    Beispiel: T#5s

    Der globale Timeout ist 5 s.

Prozedur. Lokalen Timeout definieren

Voraussetzung: Das Testprojekt hat eine Testtabelle.

  1. Doppelklicken Sie die Testtabelle.

  2. Wählen Sie die Registerkarte Tabelleneditor.

  3. Selektieren Sie die Tabellenzeile mit der Testfallgruppe oder dem Testfall.

  4. Wählen Sie den Befehl Testtabelle → Eigenschaften editieren.

  5. Geben Sie in das Eingabefeld von Timeout eine Zeitdauer im CODESYS-Zeitformat an.

    Beispiel: T#1s

    Der lokale Timeout ist 1 s.

  6. Beenden Sie den Dialog mit OK.

  7. 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

  • _cds_icon_three_dots.png: Bedingungen, unter denen der Testschritt ausgeführt wird

    Definiert in Dialog Benutzerdefinierte Bedingung für Dauer