Tests

Konfigurationen für Nummernkreise, Zuordnungskriterien und Ereignisbehandlungen können direkt ausgehend vom jeweiligen Editor getestet werden.

Die ausgeführten Tests berücksichtigen den aktuellen Stand der Konfiguration im Editor, unabhängig davon, ob diese Konfiguration bereits gespeichert wurde oder das jeweilige Element (soweit anwendbar) überhaupt aktiv gesetzt ist. Das Verhalten von neuen oder geänderten Konfigurationen kann gewissermaßen unter Laborbedingungen plausibilisiert bzw. Experimenten unterzogen werden. Der Testmodus bietet dabei auch die Möglichkeit, bestehende Konfigurationen mit einer Serie von "Szenarien" in Form von fiktiven Datenobjekten und Variablen-Zuweisungen zu konfrontieren, ohne dass dazu entsprechende Datenobjekte tatsächlich im System angelegt werden müssen. Solche Szenarien können als sogenannte Test-Sets im Kontext des getesteten Objekts gespeichert werden, so dass vorbereitete Tests bei Bedarf mit minimalem Aufwand wiederholt werden können.

►HINWEIS◄ Test-Sets sind zwar in der Benutzeroberfläche eng an das Datenobjekt gebunden, für das sie erstellt werden, aber nicht in diesem enthalten. Beim Kopieren eines Datenobjekts werden zugehörige Test-Sets daher nicht mit dem Objekt dupliziert. Auch Berechtigungen und Besitzverhältnisse (s. folgender Abschnitt) sowie allgemeine Ereignisse (s. Allgemein (Ereignisse)) werden für Test-Sets unabhängig vom Testobjekt betrachtet.

Zugriffskontrolle

Das Ausführen von Tests mit einem bestimmten Datenobjekt ("Testobjekt") ist allen Benutzern mit Zugang zur Detailsicht für das Testobjekt möglich. Voraussetzung dafür ist eine Berechtigung für "Details anzeigen" oder eine Kombination von "Lesen" mit mindestens einer der Berechtigungen "Erstellen", "Ändern" oder "Löschen" im Rollenprofil. Falls Tests mit fremden Datenobjekten ausgeführt werden sollen, muss der Zugriff durch eine geeignete Firmenfreigabe ("Lesen") gewährt sein.

Der Zugriff auf Test-Sets wird durch eigenständige Berechtigungen auf der Ebene der Rolle und 0ggf. durch Freigaben reguliert. Ob das Erstellen, Ändern oder Löschen von Test-Sets grundsätzlich möglich ist, entscheidet die Definition der verwendeten Rolle. Dabei kann Besitzer eines Test-Sets vom Besitzer des Testobjekts abweichen. Es ist also möglich eigene Tests für ein fremdes Testobjekt zu erstellen. Ohne Firmenfreigaben hat selbst der Besitzer des Testobjekts keinen Zugriff auf diese Tests. Umgekehrt können Freigaben erforderlich sein, damit "fremde" Test-Sets z. B. gelesen, geändert oder gelöscht werden können. Alle Tests, die gelesen werden können, können dabei auch ausgeführt werden. Von einem fremden Test-Set kann eine eigene Kopie erstellt werden, falls eine Firmenfreigabe das "Lesen" erlaubt und die Rolle zum "Erstellen" berechtigt.

Testmodus starten

Über den Ribbon-Button "Test beginnen" kann mit dem aktuellen Bearbeitungsstand der Konfiguration eine Testsitzung begonnen werden.

images/download/attachments/53412680/BeginTest-version-1-modificationdate-1588081476727-api-v2.jpg

Der "Test beginnen" Knopf öffnet ein neues Menüband:

images/download/attachments/53412680/image2020-4-28_15-44-42-version-1-modificationdate-1588081484528-api-v2.png

Dabei wird automatisch ein neues Test-Set angelegt, so dass sofort Tests ausgeführt werden können. Mit dem neuen, leeren Test-Set können auch reine ad hoc Tests ausgeführt werden. Das Speichern des Test-Sets ist nicht erforderlich.

Einzelne Tests lassen sich als Test-Set speichern (3) und wieder laden (7).

Außerdem lässt sich der zuletzt ausgeführte Test laden (5), unabhängig davon, ob dieser Test vorher ausdrücklich gespeichert wurde.

Wurden Events über den Event Recorder aufgezeichnet, so können diese über (6) hier geladen werden.

"Test ausführen" (4) führt den Test aus.

►HINWEIS◄ Ein neues Testobjekt, etwa ein gerade neu hinzugefügtes Zuordnungskriterium, kann bereits vor dem "Erstellen" (durch das erstmalige Speichern) getestet werden. Allerdings können Test-Sets für ein Textobjekt erst dann gespeichert werden, wenn das Testobjekt erstellt wurde, so dass die eindeutige Objekt-ID als Referenz zur Verfügung steht.

Bei der Konfiguration von Zuordnungskriterien und Ereignisbehandlungen kann der Test sogar auf ein bestimmtes Element bezogen werden, indem der Testmodus nicht über das Ribbon sondern aus dem Kontextmenü des betreffenden Elements gestartet wird. Tests können für drei Elementtypen ausgeführt werden:

  • Ein Test für eine Regel (s. Bild unten) liefert als Ergebnis den booleschen Wert der Regel zurück.

  • Ein Test für eine Aktion führt die Aktion aus und liefert als Ergebnis das ggf. als Eingangswert übergebene Objekt zurück.

  • Ein Test für einen Wert liefert als Ergebnis die Rückgabe der enthaltenen Wertauflöser.

images/download/attachments/53412680/image2018-11-13_8-45-45-version-1-modificationdate-1588081476733-api-v2.png

Test-Sets definieren

Ein Test-Set besteht aus einem wählbaren Namen (1), einem Eingabewert und den Variablen.

►HINWEIS◄ Test-Sets sind eigenständige Objekte, für die auch die allgemeinen Ereignisse (s. Allgemein (Ereignisse)) verwendet werden können. Beispielsweise könnte über eine Ereignisbehandlung für die Ereignisse "Neu" und "Kopieren" der Benutzername der aktuellen Session in Verbindung mit einem Zeitstempel als Name des neuen Tests vorbelegt werden. Falls beim Speichern eines Test-Sets kein Name angegeben wurde, erscheint sonst die wenig informative ID des Test-Sets im Auswahlmenü. Außerdem wird vermieden, dass beim Kopieren eines Tests derselbe Name mehrmals erscheint.

  • Für Tests mit einer Ereignisbehandlung (s. Bild) kann ein Aktionsevent (2) angegeben werden, das für den Test als Auslöser gelten soll.

  • Für Tests von Nummernkreisen (nicht im Bild) kann noch die Anzahl der generierten Nummern in der Vorschau angegeben werden.

Der Reiter "Eingabewert" definiert die Eingangsdaten für den Test.

  • Beim Testen einer Ereignisbehandlung, ist der Eingabewert die XML-Repräsentation eines Datenobjektes, das in der Ereignisbehandlung verfügbar sein soll.

  • Beim Testen von Zuordnungskriterien ist der Eingabewert die XML-Repräsentation des Datenobjektes, auf das die Zuordnungskriterien angewendet werden sollen.

Im Reiter "Variablen" können per XML-Code Variablen mit Werten für den Test belegt werden.

Nachfolgend ein Code-Beispiel für eine Variable "variable_name" mit dem Text-Inhalt "variable_value"):

Variablen, gekürzt
<?xml version="1.0" encoding="UTF-8"?>
<core:Storage xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:lic="SCM.LIC" xmlns:core="CORESYSTEM">
<data>
<entry>
<key xsi:type="xsd:string">variable_name</key>
<value xsi:type="xsd:string">variable_value</value>
</entry>
</data>
</core:Storage>

Für jedes Test-Set kann eine spezifische Kombination von "Eingabewert" und "Variablen" festgelegt werden, die jeweils ein bestimmtes Test-Szenario definiert.

HINWEIS◄ Benötigt man beispielsweise die XML-Struktur einer Sendung als Eingabeobjekt für eine Ereignisbehandlung, kann man folgendermaßen vorgehen:
In einer Sendungsübersicht eine Sendung selektieren ► im Export-Ribbon "XML ansehen" wählen ► XML Code markieren und kopieren ► Im Reiter "Eingabewert" einfügen.

Der XML-Code für den Eingabewert oder die Variable kann zu Abwandlung von Szenarien auch manuell editiert werden. Die Tests sind natürlich nur aussagekräftig, wenn die so erstellen Varianten echte Testfälle (bzw. Datenobjekte) formal korrekt abbilden.

►HINWEIS◄ Auch wenn ein Test-Set in einer Testsitzung erstellt wird, die sich auf ein bestimmtes Element eines Zuordnungskriteriums oder einer Ereignisbehandlung bezieht, wird kein Bezug zum getesteten Element sondern nur zum Testobjekt als Ganzes gespeichert. Umgekehrt können alle Test-Sets, die sich auf ein Testobjekt beziehen, auch für Tests mit allen Elementen des Testobjekts verwendet werden.

Testausführung

Im Kontext jedes Tests wird automatisch die boolesche Variable isTest gesetzt, die auch in Regeln innerhalb des Tests geprüft werden kann, um ein spezifisches Verhalten im Testbetrieb darzustellen.

Bei einem _data-Profilaufruf werden folgende zwei Variablen gesetzt: VAR_IS_TEST und VAR_IS_NOT_TEST (true/false imFalle eines Testlaufs, andernfalls false/true).

Testergebnisse

Beim Ausführen eines Tests werden die Reiter in der unteren Hälfte der Ansicht ausgefüllt.

Im Reiter "Ergebnis" ist, je nach Typ des Testlaufs, das Ergebnis zu sehen. Für Zuordnungskriterien erscheint nur der Wert true oder false, für Nummernkreise die Vorschau der ersten in "Anzahl Vorschau" angegebenen
Nummern und für Ereignisbehandlungen das resultierende Objekt im XML-Format.

Im Reiter "Log" wird ein strukturiertes Protokoll ausgegeben, in dem detailliert die einzelnen Schritte der Abarbeitung dokumentiert werden. Die einzelnen Abschnitte lassen sich für eine bessere Übersicht "zuklappen" (1).

images/download/attachments/53412680/log-version-1-modificationdate-1588081476764-api-v2.jpg

Der Reiter "Variablen" zeigt die Werte der definierten Variablen am Ende des Testlaufs an.