Stimulationspackage und Analysepackage¶
Durch Stimulationspackages
und Analysepackages
besteht die Möglichkeit, auf Projektebene die
Stimulation von der Traceanalyse zu trennen. Dies verbessert die Modularität und
Wiederverwendbarkeit gegenüber dem regulären Ansatz, bei dem sowohl Stimulation als auch
Traceanalyse in einem Package gekapselt sind.
Die in den Analysepackages verwendeten Signale werden dabei in der Regel automatisch den Signalgruppen des zugehörigen Stimulationspackages zugeordnet, sodass das Stimulationspackage nicht angepasst werden muss, wenn dem Projekt ein Analysepackage, welches ein bisher nicht benötigtes Signal verwendet, hinzugefügt wird.
Stimulationspackage¶
Als Stimulationspackage
kann im Projekt ein normales Package verwendet werden. Das Package muss
dafür als Stimulationspackagereferenz eingefügt werden, beispielsweise über das Kontextmenü im
Workspace-Explorer oder die Toolbar im Projekteditor:
Hinzufügen eines Stimulationspackages über den Workspace-Explorer (links) oder den Projekteditor (rechts)¶
Signalaufzeichnungen müssen dabei immer direkt im Stimulationspackage selbst geschehen, beispielsweise durch die Verwendung von „Start-/Stop Trace“-Testschritten. Werden im Testablauf des Stimulationspackages weitere untergeordnete Packages aufgerufen, welche zusätzliche Aufnahmen bereitstellen, so werden jene nicht berücksichtigt.
Wenn ein Stimulationspackage eine oder mehrere Traceanalysen enthält, so werden diese im Anschluss an die Stimulation ausgeführt. Darin enthaltene Signalaufnahmeschritte können dann von verknüpften Analysepackages als Aufnahmequelle genutzt werden.
Analysepackage¶
Analysepackages
werden beispielsweise über das Menü
oder nach Rechtsklick im Workspace-Explorer über
das Kontextmenü angelegt. Sie sind eigenständige Artefakte
mit der Dateiendung .ta.
Ein neu angelegtes Analysepackage¶
Der Aufruf eines Analysepackages kann auf dem gleichen Weg wie für ein reguläres Package in ein Projekt eingefügt werden, z.B. per Drag-and-Drop aus dem Workspace-Explorer oder über die Toolbar im Projekteditor.
Beim Einfügen eines Analysepackageaufrufs wird dieses automatisch mit dem vorangehenden Stimulationspackage verknüpft. Diese Referenz kann im Bearbeiten-Dialog des Analysepackageaufrufs geändert werden.
Dabei können mehrere Analysepackages ein und dasselbe Stimulationspackage referenzieren.
Jedes Analysepackage wird automatisch für alle Parametersätze eines Stimulationspackages ausgeführt und arbeitet mit den jeweils bereitgestellten Aufnahmen. Abhängig von der Anzahl der Aufnahmen je Stimulationspackage werden separate Analysejobs erzeugt. Im folgenden Beispiel würden beide Analysepackages jeweils für beide Parametersätze des Stimulationspackages ausgeführt werden:
Bei der Analyseausführung gilt dabei stets der Mappingraum des jeweiligen Analysepackages (bzw. des jeweiligen Parametersatzes). Falls ein Mapping auf ein generisches oder ungültiges Ziel verweist, wird zusätzlich der Mappingraum des Stimulationspackages (bzw. des jeweiligen Parametersatzes) herangezogen. Ein generisches Mapping eines Analysepackages kann also bspw. durch ein lokales Mapping im Stimulationspackage aufgelöst werden.
Falls ein Analysepackage für mehrere Stimulationen ausgeführt werden soll, ist dies möglich, indem
man in der Auswahl des Stimulationspackages den Eintrag <alle vorherigen> auswählt. Durch diese
Option werden nur Stimulationspackages referenziert, welche sich vor dem Analysepackage im Projekt
befinden. Im Report wird ein Projektordner angelegt, in welchem sich je referenziertem
Stimulationspackage ein Aufruf des Analysepackages befindet.
Zuordnung von Signalen zu Signalgruppen¶
Bei der Ausführung eines Projektes mit Stimulations- und Analysepackages versucht ecu.test automatisch, die in mindestens einem Analysepackage an Signale angebundenen Mappings den Signalgruppen der Stimulation zuzuordnen, damit diese mit aufgezeichnet werden. Die Suche nach der passenden Signalgruppe geschieht dabei in absteigender Priorität nach den folgenden Regeln:
Eine Signalgruppe bietet das Mapping bereits.
Für konkrete Mappings müssen dabei Name und Ziel übereinstimmen.
Bei generischen Mappings des Analysepackages muss nur der Name mit einem Mapping des Stimulationspackages übereinstimmen.
Eine Signalgruppe heißt wie der Systembezeichner des adressierten Mappingziels (z.B. ‚A-FlexRay‘).
Eine Signalgruppe bietet ein Mapping mit dem gleichen Systembezeichner.
Für Mappings vom Typ „Tracedatei“:
Falls es nur eine Signalgruppe gibt, wird diese verwendet.
Falls das Mappingziel mit einem Signal aus einem Signalaufnahmeschritt übereinstimmt, wird dessen Signalgruppe verwendet.
Wenn keine der genannten Regeln angewendet werden kann, müssen die betreffenden Signale über den Bearbeiten-Dialog der Stimulationspackagereferenz im Projekt manuell einer Signalgruppe zugeordnet werden:
Manuell zugewiesene Signale werden in Orange, automatisch durch eine Signalgruppe eines in der Testkonfiguration gesetzten Default-Packages zugewiesene Signale in Petrol und nicht zugewiesene Signale in Rot dargestellt.
Ein generisches Mapping eines Analysepackages kann weder automatisch noch manuell aufgelöst werden, wenn zwei Signalgruppen des Stimulationspackages gleichnamige Mappings beeinhalten! In diesem Fall sollten die Mappingnamen im Stimulationspackage angepasst werden, um den Namenskonflikt aufzulösen.
Besondere Signale und Aufnahmegruppen¶
Testfallvariablen
Die Aufnahmegruppe von Testfallvariablen wird im Dialog des Stimulationspackages angezeigt, sobald mindestens eine Testfallvariable als aufgezeichnet markiert wird. Die Zuordnung erfolgt strikt nach Namensgleichheit der Mappings. Soll also die aufgenommene Testfallvariable ‚loopCounter‘ in der Analyse untersucht werden, muss ein Mapping namens ‚loopCounter‘ angelegt und im Analysepackage angebunden werden. Auch hier gilt, dass die Zuordnung eindeutig sein muss, also dass keine andere Signalgruppe das Mapping ‚loopCounter‘ beinhalten darf.
Zusätzlich muss das Mapping vom Typ ‚Tracedatei‘ sein und das Mapping-Ziel muss gleich dem Namen des Mappings, also dem Namen der Testfallvariablen sein.
Signalaufnahmeschritte
Für jeden Signalaufnahmeschritt, welcher in einer Traceanalyse des Stimulationspackages enthalten ist, wird zusätzlich eine entsprechend benannte Aufnahmegruppe angezeigt. Auch hier erfolgt die Zuordnung mittels gleichnamiger Mappings. In einem Analysepackage muss also ein Mapping mit dem generischen Signalnamen des Signals, welches berechnet und gespeichert wurde, als Zielpfad existieren.
Zusätzlich muss das Mapping vom Typ ‚Tracedatei‘ sein und das Mapping-Ziel muss gleich dem Namen des Mappings, also dem Namen des generischen Signals in der Traceanalyse des Stimulationspackages sein.
Pseudosignale
Das Vorgehen für die Analyse mit sogenannten Pseudosignalen, also beispielsweise das Signal ‚FrameId‘ aus einer ASC- oder BLF-Datei lehnt sich an das Vorgehen mit Testfallvariablen an. Ist im Stimulationspackage das Signal noch keiner Signalgruppe zugeordnet, können diese Art von Signalen (Tracedatei-Signale) üblicherweise keiner Gruppe automatisch zugeordnet werden. Daher muss die korrekte Zuordnung manuell im Bearbeiten-Dialog der Stimulationspackagereferenz im Projekt vorgenommen werden.
Soll das Pseudosignal aus mehreren unterschiedlichen Signalgruppen gelesen werden, z.B. eine Gruppe für CAN und eine für FlexRay, führt das zwangsweise zum Zuordnungskonflikt. Dieser kann gelöst werden, indem mehrere Mappings, welche alle auf das gleiche Ziel verweisen, anlegt werden (z.B. ‚FrameId_CAN‘ und ‚FrameId_FLX‘, welche beide auf ‚FrameId‘ verweisen).
Rückgabewerte von Stimulationspackages in Analysepackages verwenden¶
Manchmal ist es notwendig, Informationen, die im Stimulationspackage zur Laufzeit bestimmt werden,
an ein zugehöriges Analysepackage zu übermitteln. Dieser Anwendungsfall lässt sich mittels
Package-Variablen realisieren. Im Stimulationspackage muss die Variable, auf deren Wert
im Analysepackage zugegriffen werden soll, als Rückgabewert markiert werden. In einem Parametersatz
des Analysepackages stehen die Rückgabewerte des verknüpften Stimulationspackages
unter dem Bezeichner stim zur Verfügung. Mit stim.returnVariable kann also bspw. auf den
Rückgabewert der Variablen mit dem Namen returnVariable zugegriffen werden.
Um den Aufwand der Zuordnung zu reduzieren, gibt es die Option „Rückgabewerte der Stimulation als Standardparametrierung verwenden“. Ist diese Option aktiviert, wird für jeden Parameter des Analysepackages automatisch der gleichnamige Rückgabewert der Stimulation verwendet, falls dieser existiert und dem Parameter noch kein Wert per Parametersatz oder projektübergreifender Parametrierung zugewiesen wurde.
Info
Der Rückgabewert ist der zuletzt im Stimulationspackage gesetzte Wert. Das Setzen der Variable kann entweder im Testfall oder einer der darauffolgenden Traceanalysen erfolgen. Innerhalb einer Traceanalyse muss der Wert explizit über einen Rückgabeparameter eines Traceschritts gesetzt werden, damit dieser berücksichtigt wird.
Setzen mehrere Traceanalysen den Variablenwert, gilt der Wert der zuletzt ausgeführten. Da Traceanalysen grundsätzlich unabhängig voneinander laufen, ist dieses Vorgehen jedoch nicht empfohlen.
Werte globaler Konstanten und Attribute von Stimulationspackages in Analysepackages verwenden¶
Oft ist es gewünscht, dass die Werte von globalen Konstanten und Attributen, welche zum Zeitpunkt der Stimulation gesetzt sind, auch im Analysepackage gelten.
In den meisten Fällen reicht eine Definition der globalen Konstanten in der Testkonfiguration oder die Parametrierung durch ein gemeinsames, übergeordnetes Projektelement. In seltenen Fällen wird eine globale Konstante jedoch erst in der Stimulation ermittelt und gesetzt.
Aus diesem Grund werden während der Ausführung der Stimulation gültige Werte von globalen Konstanten und Attributen genau dann in die Ausführung des Analysepackages übernommen, wenn diese zu diesem Zeitpunkt noch nicht oder nur in der Testkonfiguration definiert sind.
Analysen anfordern¶
Regulär werden alle dem Stimulationspackage zugeordneten Analysepackages ausgeführt. Möchte man jedoch eine bedingte Ausführung erreichen und gleichzeitig sicherstellen, dass bestimmte Aspekte in der Stimulation durch eine passende Traceanalyse geprüft werden, kann man im Testfall der Stimulation „Analysen anfordern“.
Eine Analyse fordert man an, indem man den Testschritt Analyse anfordern
verwendet und dort ein Label für die angeforderte Analyse definiert.
Die Kopplung zwischen Anforderung und dem passenden Analysepackage erfolgt anhand dieses Labels.
Projekt mit eingefügtem Stimulationspackage¶
Zieht man das Stimulationspackage in ein Projekt, werden automatisch sogenannte
Analysepackagemapping-Schritte
für jedes angeforderte Label
erzeugt. Diese Schritte dienen als Platzhalter für ein konkretes Analysepackage
und ermöglichen einen fortgeschrittenen Workflow, mehr dazu im nachfolgenden Abschnitt
Analysepackagemapping-Schritte.
Für den Anfang reicht es, diese Platzhalter durch konkrete Analysepackages zu ersetzen, indem
man ein Analysepackage aus dem Workspace auf einen der Analysepackagemapping-Schritte zieht.
Dabei wird der Platzhalter durch eine konkrete Packagereferenz ausgetauscht und die Eigenschaft
„Implementiert angeforderte Analyse“ gesetzt.
Diese lässt sich auch für bestehende und neu hinzugefügte Analysepackages im Projekt bearbeiten.
Ein Analysepackage, das eine angeforderte Analyse implementiert, wird nur dann ausgeführt, wenn während der Projektausführung tatsächlich der entsprechende Testschritt „Analyse anfordern“ ausgeführt wurde. Dies kann zum Beispiel durch einen If-Then-Else-Block beeinflusst werden. Ein Analysepackage kann aber auch immer ausgeführt werden. Für die Einstellung „Implementiert angeforderte Analyse“ ist dann der Eintrag „keine (immer ausführen)“ zu wählen.
Es ist möglich, dass mehrere Analysepackages die gleiche angeforderte Analyse implementieren. Es ist möglich, dass mehrere Testschritte die gleiche Analyse anfordern; dies hat keine weitere Auswirkung.
Info
Ein Analysepackage, welches sich auf mehrere Stimulationspackages bezieht, kann keine angeforderte Analyse implementieren.
Aktiviert man die Option Ergebnis der Analyse übernehmen, erhält der Testschritt im Testfallreport die Bewertung, die dem Gesamtergebnis der assoziierten Analysepackages entspricht.
Info
Achtung: Wird auf den Schritt Analysen anfordern mit gesetzer Option
Ergebnis der Analyse übernehmen folgend in einem Berechnungsschritt mittels
api.TestEnvironment.ExecutionInfo.LastTestStepResult auf das Ergebnis des letzten
Testschritts zugegriffen, so wird immer INCONCLUSIVE zurückgeben, da das Ergebnis der
Analyse zum Ausführungszeitpunkt des Testfalls noch nicht feststeht.
Analysepackagemapping-Schritte¶
Schematischer Workflow bei der Verwendung von Analysepackagemapping-Schritten¶
Analysepackagemapping-Schritte
dienen als Platzhalter für
konkrete Analysepackages.
Sie werden automatisch angelegt, falls dem Projekt ein Stimulationspackage hinzugefügt wird,
das Analysen anfordert.
Fehlende Schritte lassen sich über das Kontextmenü des Stimulationspackages generieren.
Wie ihr Name bereits andeutet, werden Analysepackagemapping-Schritte anhand des globalen Mappings zu konkreten Analysepackages aufgelöst. Dies ermöglicht ein Variantenhandling der Analysen anhand unterschiedlicher Testkonfigurationsdateien (z.B. je Prüfstand). Die Zuordnung erfolgt anhand der implementierten Analyse. Diese muss dem Namen eines Eintrages im Mapping entsprechen.
Anlegen eines Analysepackage-Mappings¶
Ein solcher Mappingeintrag muss vom Typ ANALYSIS sein. Man erzeugt ihn, indem man ein Analysepackage aus dem Workspace in das globale Mapping bzw. in einen Mapping-Editor zieht (siehe Screenshot). Der Pfad wird dabei relativ zum Packageverzeichnis gespeichert bzw. absolut, falls das Analysepackage außerhalb des Verzeichnisses liegt.
Die Prüfung im Projekteditor warnt, falls der Analysepackagemapping-Schritt zum Editierzeitpunkt nicht korrekt aufgelöst werden kann. Ausschlaggebend ist jedoch, dass zum Ausführungszeitpunkt des Schrittes das Mapping geladen ist. Dies lässt sich zum Beispiel auch durch einen Konfigurationswechselschritt realisieren. Fehlende Einträge können über den Projektprüfungsdialog automatisch im globalen Mapping angelegt werden. Diese müssen anschließend noch bearbeitet werden, um auf ein existierendes Analysepackage zu verweisen.
Info
Analysepackagemapping-Schritt durch Analysepackage ersetzen¶
Analysepackagemapping-Schritte ermöglichen einen fortgeschrittenen Workflow im Projekt, da sie über das Mapping der aktuell geladenen Konfiguration beeinflusst werden können. Für einfachere Projekte reicht es jedoch, direkt mit Analysepackages zu arbeiten. Diese können aus dem Workspace heraus auf Analysepackagemapping-Schritte des Projektes gezogen werden, um diese zu ersetzen.
Analysen zu einer Stimulation in test.guide finden¶
Um die Zuordnung von Stimulation und Analysen in test.guide zu erleichtern, wird bei der Ausführung eines Projektes mit Stimulations- und Analysepackages für jeden Lauf eines Stimulationspackages eine interne globale Konstante namens TT_STIMULATION_RUN_ID mit einer UUID angelegt. Diese Konstante wird in die zugeordneten Analysepackages übernommen, sodass in test.guide nach ihr gefiltert werden kann, um alle zu einer Stimulation ausgeführten Analysen zu finden.
Einschränkungen¶
Die selektive Ausführung eines Projektes, welches Stimulations- und Analysepackages enthält, wird nicht unterstützt.
Parametersätze und Parametersatzgeneratoren können für Stimulationspackages und Analysepackages
analog zu regulären Packages verwendet werden.
Im Fall von Analysepackages können allerdings keine Aufnahmen hinzugefügt werden.
Außerdem müssen Parametersatzgeneratoren für Analysepackages alle Mappings, die per
CycleData.AddMappingItem() generierten Parametersätzen hinzugefügt werden,
in der Methode GetUsedMappingItems() des Generators definiert werden,
um sie dem Stimulationspackage bekannt zu machen
(siehe Parametersatzgenerator API).