Skip to main content

Schema für Mehrfachtestbausteine

Testbaustein definieren

Wenn ihr Test aus mehreren gleichförmigen Testfällen besteht, können Sie statt vieler Einzeltestbausteinen einen Mehrfachtestbaustein implementieren. Mehrfachtestbausteine folgen ähnlich, wie Testbausteine für einzelne Testfälle, einem Schema und sind mit dem Attribut {attribute 'test' := 'multitest'} gekennzeichnet. Weitere Merkmale des Schemas sind in der Schnittstellenkonvention zu finden. Sie können das Schema leicht einhalten, indem Sie den Assistenten zum Erstellen eines Testbausteins nutzen.

Für weitere Informationen siehe Beispiel Examples.IecUnitTest

Unterstützung bei der Implementierung

Wenn Sie mit dem Assistenten einen Unittest hinzufügen, wird Ihnen eine Beispielimplementierung vorgeben. Der Assistent erstellt ein funktionierendes Beispiel, sofern Sie die Option Implementierungsvorlage hinzufügen aktivieren.

Grundlegende Testfall-Funktion

Vor der eigentlichen Testausführung (xGetTestInfo := FALSE) werden Informationen über die einzelnen Testfälle des Bausteins eingesammelt. In dieser Phase hat der Eingang xGetTestInfo den Wert TRUE. Mit dem Wert -1 am Eingang diTestCaseIndex wird die Anzahl n der Testfälle am Ausgang diTestCaseCount abgefragt. Dann erfolgt eine Sequenz von Abfragen, die die Werte des Eingangs diTestCaseIndex von 0 bis zur Zahl n-1 variiert, um die Informationen sTestCaseName, sTestCaseCategories und diTestCaseTimeout für jeden Testfall anzufordern. Jede Abfrage erfolgt durch den Test Manager in einem in sich geschlossen Zyklus aus xExecute := TRUE, dem Warten auf xDone oder xError und dem Rücksetzen des Eingangs xExecute auf FALSE.

Die Testausführung erfolgt dann über eine Sequenz von geschlossenen Zyklen (xExecute zu xDone oder xError), die den Eingang diTestCaseIndex von 0 bis zur Zahl n-1 variieren und dabei aber den Eingang xGetTestInfo immer auf dem Wert FALSE belassen. Über den Ausgang sInfo kann eine Beschreibung für den Testreport ausgeben werden. Im Fehlerfall (xError := TRUE) kann über eError der Fehlercode und über sError eine Beschreibung der Fehlersituation in den Testreport übernommen werden. Dabei wird, wenn möglich, der symbolischen Namen des Fehlercodes in das Protokoll übernommen.

Ein mit dem Assistenten erstellter Testbaustein kapselt dieses Verhalten in das Schema des Basis-Bausteins TM.BaseMultiTest (definiert in der Bibliothek IEC Unit Test). Für die Ausführung der Testlogik steht die Methode prvCyclicAction als Rahmen zur Verfügung, in der der Prüfling stimuliert werden soll. Für das Prüfen des Ergebnisses und das Melden von Fehlern stehen des Weiteren einfach zu verwendende Assert-Funktionen zur Verfügung.

Für weitere Informationen siehe: Einzeltestbaustein implementieren

Timeouts in Testbausteinen

Mit Timeouts definieren Sie maximale Zeitspannen für die Ausführung des Tests. Bei einer Überschreitung wird mit einem Fehler abgebrochen. Die verbleibenden Testfälle werden übersprungen. Die Timeouts definieren Sie im Assistenten im Dialog Unittest hinzufügen.

Testfallname

Mit der optionalen Angabe eines Testfallnamens können Sie dem im Testbaustein implementierten Testfall einen alternativen Namen (Standard: POU-Name des Testbausteins) geben. Diesen Namen können Sie im Testelement IEC-Unittest zur Auswahl/Ausnahme des Testfalls wie den POU-Namen verwenden. Im Testreport wird der Testfallname gegebenenfalls angezeigt.

Für weitere Informationen siehe: Pragmas in Testbausteinen

Testfallkategorie

Testfälle können in Kategorien organisiert werden, mit denen sie gesammelt im Testelelement IEC-Unittest ausgewählt/ausgenommen werden können. Ein Testfall kann mehreren Kategorien angehören.

Für weitere Informationen siehe: Pragmas in Testbausteinen

Schnittstellenkonvention

Die Schnittstellenkonvention wird von einem Testbaustein, der mit dem Assistenten erzeugt wurde und das Schema des TM.BaseMultiTest einhält, automatisch befolgt und vom Testelement IEC Unittest automatisch ausgewertet. Die Schnittstellenkonvention ist daher dann interessant, wenn ein Testbaustein manuell getriggert werden muss, beispielsweise zur Fehlersuche. Zusätzlich gelten die Pragmas in Testbausteinen.

Name

Typ

Gültigkeitsbereich

Optional

Beschreibung

xExecute

BOOL

VAR_INPUT

Startet und kontrolliert die Ausführung des Bausteins

xAbort

BOOL

VAR_INPUT

Abbruch des Tests gemäß CAA Behaviour Model

xGetTestInfo

BOOL

VAR_INPUT

TRUE: Die Information wird mit dem in diTestCaseIndex angegebenen Testfall abgerufen, und in den entsprechenden Ausgängen ausgegeben.

FALSE: Ausgeführt wird der in diTestCaseIndex definierte Testfall.

Auch für Aktionen mit gesetztem xGetTestInfo gilt, dass sie mehrere Zyklen dauern dürfen. Auch für diese Aktionen wird also gemäß CAA Behaviour Model xExecute gesetzt, und auf xDone gewartet.

diTestCaseCount

Ganzzahliger Datentyp

VAR_OUTPUT

X

Anzahl der Testfälle, die dieser Testbaustein anbietet

Wenn die Direktive testcasecount nicht gesetzt ist, wird mittels diTestCaseIndex=-1 und xGetTestInfo abgerufen.

diTestCaseIndex

Ganzzahliger Datentyp

VAR_INPUT

Testfall, der bearbeitet wird

[w]sTestCaseName

STRING / WSTRING

VAR_OUTPUT

X

Testfallname, der über xGetTestInfo ausgelesen werden kann

Wenn der Name über eine Direkive angegeben wurde und kein leerer String ist, wird er in den Testreport übernommen.

[w]sTestCaseCategories

STRING / WSTRING

VAR_OUTPUT

X

Zusätzliche Testkategorien, die dem angegebenen einzelnen Testfall zugewiesen sind

diTestCaseTimeout

Ganzzahliger Datentyp

VAR_OUTPUT

X

Timeout des Testfalles in Millisekunden

Wenn der Wert größer als 0 ist, gilt er als Timeout für diesen Testfall (und überschreibt gegebenenfalls per Direktive angegebene Testfälle). Negative Werte sind für zukünftige Verwendung reserviert und führen zum Abbruch.

xBusy

BOOL

VAR_OUTPUT

TRUE: Der Testfall läuft.

xDone

BOOL

VAR_OUTPUT

TRUE: Der Testfall wurde abgeschlossen.

xError

BOOL

BOOL

VAR_OUTPUT

VAR_OUTPUT

TRUE: Der Testfall wurde mit Fehler beendet.

xAborted

BOOL

VAR_OUTPUT

TRUE: Der Testfall wurde durch einen xAbort beendet.

[w]sInfo

STRING / WSTRING

VAR_OUTPUT

X

Zusätzliche textuelle Information für den Testreport

eError

Enumeration

VAR_OUTPUT

X

Enumerationswert der Fehlerbeschreibung

Voraussetzung: Ein Fehler ist aufgetreten.

[w]sError

STRING / WSTRING

VAR_OUTPUT

X

Genauere textuelle Fehlerbeschreibung

Ist auch bei nicht-multitest-fähigen Funktionsbausteinen implementiert

Voraussetzung: Ein Fehler ist aufgetreten.

[w]sWarning

STRING / WSTRING

VAR_OUTPUT

X

Warnmeldung für den Testreport

Ist auch bei nicht-multitest-fähigen Funktionsbausteinen implementiert

eFailureMode

TM.FailureMode

VAR_OUTPUT

X

Fehlermodus (Fehlerbehandlung) des Testfalls

Ist auch bei nicht-multitest-fähigen Funktionsbausteinen implementiert