Variablenfenster und Datentypen

Variablenfenster

ecu.test stellt verschiedene Datentypen für ein effizientes Arbeiten zur Verfügung. Dieser Typ bezieht sich immer auf den aktuell gehaltenen Wert und kann zur Laufzeit durch Schreiben der Variable beliebig geändert werden. ecu.test stellt keine Restriktionen hierzu auf, d. h., dass der Datentyp einfach geändert wird.

Variablen kann man manuell im Variablenfenster erstellen oder ihren Initialwert und Datentyp ändern. Außerdem gibt es noch durch ecu.test automatisch erzeugte Variablen. Diese werden beispielsweise angelegt, wenn in einem Dialog bei Speichern unter eine noch unbekannte Variable eingetragen wird. Diese automatischen Variablen sind meistens vom Typ Undefined.

../../../_images/Variablen.png

Durch Setzen des Häkchens bei Parameter/Rückgabewert, wird die Variable als Parameter/Rückgabewert spezifiziert und steht somit für den Wertaustausch mit anderen Packages (beim Einfügen als Referenz) zur Verfügung. Wird das Häkchen bei Aufnahme gesetzt, so wird jede Wertänderung der Variable, inklusive der aktuellen Simulationszeit, in eine csv-Datei im Testreportverzeichnis geschrieben.

Ein Klick mit der rechten Maustaste öffnet das Variablenkontextmenü:

../../../_images/Variablen_Kontextmenue.png
  • Neue Variable

    Öffnet nach Auswahl des Variablentyps den Dialog zum Erstellen einer neuen Variablen.

  • Bearbeiten

    Öffnet den gleichen Dialog, gefüllt mit den Angaben der aktuell ausgewählten Variablen. Um eine Variable zu bearbeiten kann man den Dialog auch mit einem Doppelklick auf die gewünschte Variable öffnen.

Die nächsten Optionen dienen zum Kopieren, Ausschneiden, Einfügen und Entfernen von Variablen. Somit kann man Variablen auch zwischen verschiedenen Packages austauschen.

  • Nicht verwendete Variablen entfernen

    Löscht alle Variablen, die derzeit in keinem Testschritt verwendet werden.

  • Aktualisieren

    Aktualisiert die Fensteransicht.

Durch Klicken auf die Nummer der Variablen (erste Spalte) und Ziehen nach oben oder unten kann die Reihenfolge der Variablen geändert werden. Das kann sinnvoll sein, da im Parametrierungsdialog des Packages (beim Einfügen als Referenz) die Variablen in der im Package angelegten Reihenfolge erscheinen.

Variablentypen

Numeric

Stellt Zahlen zur Verfügung. Beispiele für gültige Eingaben sind 12, 0xc oder -12.234.

Info

Die Nachkommastellen werden mit einem „.“ angegeben.

String

Stellt eine Variable für Texteingaben zur Verfügung. Es können beliebige Zeichen eingegeben werden

Stringeingaben in Kontrollfeldern müssen mit ‚ bzw. „ eingeschlossen sein.

Beim Anlegen des Standard-Wertes ist es möglich diesen auch mehrsprachig zu hinterlegen (siehe Tutorial Mehrsprachigkeit). Die aktuell verwendete Sprache kann in den Workspace-Einstellungen unabhängig von der Programmsprache gewählt werden (siehe Testeditor).

Info

Der String wird nicht mit ‚ bzw. „ eingeschlossen. Er kann direkt eingegeben werden.

Warnung

Werden Stringeingaben direkt in Kontrollfeldern getätigt, so wird automatisch eine Ersetzung von Steuerzeichen der Form „\*“ durchgeführt. Zur Ausgabe von „\“ muss daher „\\“ eingegeben werden, da sonst eine Auswertung zusammen mit dem folgenden Zeichen erfolgt.

Function

Stellt ein Fenster zur Verfügung, in dem ein beliebiger Pythoncode eingegeben werden kann. Der Funktionsname ist fest „func“. Parameter und Rückgabewerte können wie in Python üblich vereinbart werden.

../../../_images/pyFunktion.png

Der Aufruf dieser Variablen (im Beispiel „Berechne_Summe“) vom Typ Function kann beispielsweise in einem Berechnungsschritt erfolgen:

../../../_images/Utility_Berechnung.png

PyObject

Stellt eine Original-Pythonvariable zur Verfügung. Sie kann als Initialwert mit Python-Objekten belegt werden.

Map

Stellt eine n mal m Matrix mit der Möglichkeit, die x- und y-Achse („Stützstellen“) zu beschriften, zur Verfügung. Die Größe kann direkt an der linken Seite eingestellt werden. Mit einem Doppelklick auf die betreffende Stützstelle kann der Wert eingegeben werden.

Matrix

Stellt eine Matrix zur Verfügung. Die Größe kann direkt an der linken Seite eingestellt werden. Matrizen werden im Spaltenlayout gespeichert. Das bedeutet, dass bei Indizierung als erstes die Spalte und danach die Zeile angegeben wird.

Vector

Stellt eine eindimensionale Matrix zur Verfügung. Die Größe kann direkt an der linken Seite eingestellt werden.

Curve

Stellt eine eindimensionale Matrix mit der Möglichkeit, die x-Achse („Stützstellen“) zu beschriften, zur Verfügung. Die Größe kann direkt an der linken Seite eingestellt werden. Mit einem Doppelklick auf die betreffende Stützstelle kann der Wert eingegeben werden.

FileList

Öffnet eine Exploreransicht, um Dateien auswählen zu können. Diese werden dann als Liste in der Variable abgespeichert. Somit ist es möglich, bequem mehrere Dateien eines Verzeichnisses in einer Variablen zu speichern. Der Dialog wird auch angezeigt, wenn der Nutzer ein Package einfügt, welches einen Parameter von diesem Typ enthält. Das verhindert, dass ein anderer Nutzer Fehleingaben vornehmen kann.

Folder

Öffnet eine Exploreransicht, um ein Verzeichnis auswählen zu können. Dieses wird dann in der Variable abgespeichert. Somit ist es möglich, bequem ein Verzeichnis in einer Variablen zu speichern. Der Dialog wird auch angezeigt, wenn der Nutzer ein Package einfügt, welches einen Parameter von diesem Typ enthält. Das verhindert, dass ein anderer Nutzer Fehleingaben vornehmen kann.

Boolean

Stellt eine Variable zur Verfügung, die einen Wahrheitswert beinhalten kann. Bei der Verwendung als Parameter werden die Wahrheitswerte als Vorschläge im Wertefeld angeboten.

Enum

Variablen vom Typ Enum stellen eine Zahl (Wert) zu Textzuordnung dar. Bei der Erstellung gibt man die zu den Zahlenwerten gehörenden Texte ein. In der ersten Spalte ist es notwendig, einen Initialwert („IW“) festzulegen. Während der Nutzer im Parametrierungsfenster nur den Text sieht, verwendet ecu.test während der Testausführung einen repräsentativen Enum-Wert. Somit kann das Package nutzerfreundlich aufbereitet werden, ohne extra „Umrechnungsschritte“ einfügen zu müssen.

Alternativ ist es möglich den Enum dynamisch zu definieren über eine globale Konstante (api.globalConstants), über UserPyModules (user) oder eine Python Expression im Format dict[int, str]. Initialwert ist in diesem Fall das erste Element.

Variablen vom Typ Enum können in Ausdrücken direkt mit Zahlenwerten oder Texten verglichen und geändert werden. Außerdem kann mit .int und .str jeweils der entsprechende Zahlenwert bzw. Text explizit angefordert werden. Weiterhin ist es möglich, sich durch den Aufruf von .enum die gesamte Enum-Definition ausgeben zu lassen. Die Eingabe wird mittels automatischer Vervollständigung unterstützt.

Info

Die Texte von Enums sollten keine Leer- oder Sonderzeichen enthalten, damit ein einfacher Attributzugriff über die Punktnotation (z.B. MyEnum.enum.xyz) möglich ist. Für bestimmte Anwendungsfälle, wie z.B. die Textrepräsentation von Bussignalen, ist dies unter Umständen nicht möglich. Der Zugriff auf den Enum-Wert kann dann weiterhin über die Notation mit eckigen Klammern (z.B. MyEnum.enum[‚X Y‘]) erfolgen.

../../../_images/Enum.png

Texttable

Variablen vom Typ Texttable stellen Wertauswahl dar. Bei der Erstellung gibt man die möglichen Werte ein. Der Nutzer kann im Parametrierungsfenster dann zwischen den möglichen Werten auswählen. In der ersten Spalte ist es notwendig, einen Initialwert („IW“) festzulegen.

Statt eine feste Liste von Werten zu hinterlegen, besteht auch die Möglichkeit, eine Liste dynamisch über eine globale Konstante (api.globalConstants), über UserPyModules (user) oder eine Python Expression im Format list[str] zu erstellen. In diesem Fall wird ein Ausdruck in das Feld eingetragen, der bei der späteren Verwendung der Variable ausgewertet wird. Initialwert ist in diesem Fall das erste Listenelement.

Info

Die Werte werden immer als Unicodestring in ecu.test behandelt. Es ist also nicht notwendig, Anführungszeichen („“) bei der Texteingabe einzugeben, aber auch Zahlen werden als String während der Testausführung „übergeben“.

BitStream

Stellt eine komfortable Möglichkeit zur Eingabe von Dual- oder Hexzahlen zur Verfügung. Die jeweils nicht eingegebene wird automatisch erzeugt. Hexzahlen werden ohne führendes „0x“ eingegeben.

Siehe auch API-Dokumentation zum BitStream

ByteStream

Ermöglicht die Eingabe einer Bytefolge. Jedes Byte wird hexadezimal, ohne führendes 0x angegeben. Die einzelnen Bytes sind durch : getrennt.

Siehe auch API-Dokumentation zum ByteStream

Inbox

Siehe Testschritt Inbox und „Aus Inbox lesen“.

Outbox

Siehe Testschritt Outbox und Testschritt „In Outbox schreiben“.

Relay

Siehe Testschritt Relays - Nachrichtenaustausch zwischen parallelen Subpackages.

Structure

Ist eine Variablenart, die aus Einzelkomponenten zusammengesetzt ist. Eine Komponente kann hierbei ein Skalar, ein Array oder ein weiterer Strukturknoten sein, der wiederum aus den gleichen Komponenten bestehen kann.

Variablen diesen Typs sind kompatibel zu NumPy-Arrays und können somit sehr komfortabel verwendet werden.

Der Variablentyp wird insbesondere in Verbindung mit Service-Testschritten verwendet. Dabei können die Variablen als Eingabeparameter und zum Speichern von Rückgabewerten genutzt werden.

Jede Variable ist an genau ein Service-Mapping gebunden und stellt einen beliebigen Teilbaum aus dessen Parameter- und Rückgabewerten dar. Das Mapping muss beim Anlegen der Variable bereits vorhanden sein. Es wird empfohlen, zum Anlegen von Variablen dieses Typs Methoden- oder Service-Elemente oder deren Unterknoten aus dem Service-Reiter in das Variablenfenster zu ziehen. Hierbei wird das Mapping automatisch erstellt, wenn noch kein passendes im Testfall existiert. Der Teilbaum wird durch den Strukturpfad beschrieben. Dessen Eingabe wird mittels automatischer Vervollständigung unterstützt.

Info

Bei Strukturelementen, deren Namen mit den eingebauten NumPy-Funktionen oder Feldern kollidieren (z.B. count, item, sum usw.), muss beispielsweise anstelle von item.count item['count'] zum Zugriff verwendet werden. Auf die Notwendigkeit der Ersetzung wird an entsprechender Stelle automatisch hingewiesen.

Info

In der Fibex- bzw. ARXML-Datei mit variabler Größe deklarierte Arrays werden in ecu.test als numpy-Arrays mit der angegebenen Minimalgröße abgebildet. Bei einem Zugriff darüber hinaus werden die Arrays automatisch vergrößert.

../../../_images/Variable_Structure.png

Diese Structure-Variable ist über das Mapping an die echoSTRUCT-Service-Methode angebunden:

../../../_images/Variable_Structure_Service.png

Undefined

Stellt Variablen ohne Initialwert zur Verfügung. Variablen bekommen diesen Typ, wenn sie durch ecu.test automatisch angelegt werden.

Info

Eine Übersicht der erweiterten Operationen der ecu.test-Variablentypen sind enthalten unter API-Referenzen.