Stimulationspackage und Analysepackage

Durch Stimulationspackages StimulationPackage und Analysepackages AnalysisPackage 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 StimulationPackage 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:

../../../_images/AddStimulation.png

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 AnalysisPackage werden beispielsweise über das Menü Datei ‣ Neu ‣ Analysepackage oder nach Rechtsklick im Workspace-Explorer über das Kontextmenü Neu ‣ Analysepackage angelegt. Sie sind eigenständige Artefakte mit der Dateiendung .ta.

../../../_images/NewTA.png

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.

../../../_images/StimulationSettings.png

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:

../../../_images/StimulationExample.png

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:

../../../_images/StimulationSignals.png

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 TsRequestAnalysis verwendet und dort ein Label für die angeforderte Analyse definiert. Die Kopplung zwischen Anforderung und dem passenden Analysepackage erfolgt anhand dieses Labels.

../../../_images/Project_AnalysisMappingStep0.png

Projekt mit eingefügtem Stimulationspackage

Zieht man das Stimulationspackage in ein Projekt, werden automatisch sogenannte Analysepackagemapping-Schritte AnalysisPackageMappingStep 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

../../../_images/Project_AnalysisMappingStepWorkflow.png

Schematischer Workflow bei der Verwendung von Analysepackagemapping-Schritten

Analysepackagemapping-Schritte AnalysisPackageMappingStep 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.

../../../_images/Project_AnalysisMappingStep2.png

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

../../../_images/Project_AnalysisMappingStep1.png

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