Detail eines miniHIL Testaufbaus

HIL Testfall Modellierung mit CaGe

Testfälle schnell entwickelt

Mit der Sprache CaGe werden Testfälle für Hardware-in-the-Loop Testsysteme modelliert, generiert und ausgeführt. Dies ermöglicht die schnelle Entwicklung von Testfällen mit hoher Testabdeckung.

mehr erfahren

miniHIL Test-Harness und CaGe

Ein Hardware-in-the-Loop Test benötigt zuerst einen Test-Harness, welcher aus dem miniHIL Board und der miniHIL Simulationsumgebung besteht. Dieser definiert die erforderliche Testumgebung wie z.B. Hardware, Treiberanbindung des Testsystems oder Testinterface und stellt sicher, dass der Testaufbau zuverlässig reproduzierbar ist.

miniHIL mit angeschlossenen MCU

CaGe (Case Generator) ist die Testsprache der miniHIL Lösung, mit welcher der eigentliche Testablauf definiert wird. Die Testbeschreibung erfolgt textuell in einem Editor. Darüber hinaus werden die Tests als Sequenzdiagramme visualisiert, welche Verständnis und Kommunikation der Testfälle erleichtern und als Dokumentation dienen.

Die folgenden Abschnitte stellen die wichtigsten Elemente von CaGe vor.

CaGe Step

Ein CaGe Step beschreibt die Aktion und Reaktion für das System under Test (SUT). Das folgende Beispiel zeigt einen einfachen Test für eine Motor-LED: Der Test verfügt über zwei digitale Pins – einen digitalen Ausgang ignition und einen digitalen Eingang motorRunning. Zuerst schaltet der Test den Motor an. Dies geschieht mit der Aktion ignition.setOutputHigh. Als Folge sollte das SUT die Motor-LED aktivieren. Die erwartete Reaktion ist motorRunning.inputHigh.

Hinweis: In dem Diagramm wird der Monitor dem SUT zugeordnet. Monitore sind Teil der miniHIL Simulationsumgebung und werden nicht in der Testsprache definiert. pwmMeasureMonitor ist ein nebenläufiger Aktor im Testsystem, welcher fortlaufend das PWM-Signal des SUT misst. In diesem Aktor ist sowohl die hardware-technische Anbindung als auch die Messlogik gekapselt.

Monitore und Simulationen

Ein CaGe Test kann zusätzliche Monitore und Simulationen einsetzen. Das folgende Beispiel skizziert die Messung eines PWM Signals mithilfe eines Monitors namens pwmMeasureMonitor. Der Test fordert zuerst den aktuelle Duty-Cycle des SUT an mit pwmMeasureMonitor.getDuty. Daraufhin wird der übermittelte Wert gegen einen Sollwert geprüft (duty in range[...]).

Auf gleiche Weise können Simulationsbausteine in einem Test eingesetzt werden. Mit ihnen können sowohl spezifische Zustände der Testumgebung simuliert, wie z.B. spezielle Sensorsignale oder ein Kabelbruch, als auch komplette Umgebungssimulationen erstellt werden. Beispiele hierfür sind Simulationen von Motoren, Batterien und Restbussimulationen.

CaGe Testbeschreibung und Sequenzdiagramm

CaGe Sequenz

Eine CaGe Sequenz ruft andere CaGe Steps und Sequenzen auf. Auf diese Weise ist es möglich Testlogik wiederzuverwenden oder höherwertige Testabläufe zu erstellen. Im folgenden Screenshot ist die Sequenz PwmMeasurement abgebildet, welche die Steps EnableIgnition und MeasurePwmDuty kombiniert.

Test Ausführung

Wenn das miniHIL Board mit dem PC verbunden ist, können die Tests bequem aus der Kommandozeile oder einer grafischen Oberfläche (GUI) gestartet werden. Im Folgenden ist ein Screenshot der GUI zu sehen. Auf der linken Seite befindet sich das Bedienfeld für die Testauswahl und -ausführung. Das textuelle Logging wird auf der rechten Seite angezeigt.

Test Logging

Ein CaGe Test wird zur Laufzeit aufgezeichnet. So wird der Testablauf inklusive Aktion und Reaktion des SUT zum PC übermittelt und als Sequenzdiagramm visualisiert. In der folgenden Grafik sind drei Diagramme zu sehen. Das Erste ist der erwartete Testablauf, der während der Testentwicklung verfügbar ist und bereits in den vorherigen Abschnitten gezeigt wurde. Die beiden verbleibenden Diagramme zeigen jeweils einen tatsächlichen Testablauf, wie er zur Laufzeit aufgezeichnet wurde. Das mittlere Diagramm ist ein erfolgreicher, das rechte Diagramm ein fehlgeschlagener Testdurchlauf.

Die Diagramme enthalten Links, welche auf die Testdefinition verweisen. So führt z.B. ein Klick auf „expect failed“ des fehlgeschlagenen Testdurchlaufs zu der Anweisung im Editor, welche für den Fehler verantwortlich war.

CaGe Trace Navigation
CaGe Code und Sequenzdiagramm

Die ganze Sequenz oder die drei Steps für sich alleine können nun im Test aufgerufen werden. Es ist ebenfalls möglich, sie in eine Bibliothek auszulagern, sodass sie für andere Testprojekte zur Verfügung stehen. So kann eine wiederverwendbare Testbibliothek geschaffen werden.

Test Parameter

CaGe Sequenzen können parametrisiert werden, sodass sie wiederverwendbar werden. Dies ermöglicht das Testen mit unterschiedlichen Parametersätzen. Im folgenden Beispiel ist eine parametrisierte Sequenz dargestellt. Diese ruft 3 Steps nacheinander auf: EnableIginition, SetPWMDuty und MeasurePWMDuty. Der Step SetPWMDuty besitzt einen Parameter, durch den der gewünschte Sollwert für das PWM-Signal des SUT eingestellt werden kann. Der Step MeasurePWMDuty akzeptiert einen Min- und Maxwert zur Messung des erwarteten Signals.

CaGe State Transition Test

CaGe ist in der Lage aus den Pfaden des Graphen konkrete Testfälle zu generieren. Das Diagramm unten zeigt das Resultat einer Testfallgenerierung mit der sogenannten n-switch Methode, welche in diesem Fall n=1 beträgt und zu 21 Testfällen führt.

Kombinatorische Testfallgenerierung

Eine Besonderheit von CaGe ist die Erstellung von kombinatorischen Tests, aus denen Testfälle generiert werden (State Transition Testing). State Transition Testing ist eine Technik aus dem Bereich des Model Based Testing (MBT).

In den vorherigen Beispielen wurde der Testablauf durch Sequenzen realisiert. Als Alternative kann der Testablauf durch einen State Transition Graphen modelliert werden. Der Graph erlaubt es einen Ablauf zu definieren, welcher beliebig viele Wiederholungen oder unterschiedliche Kombinationen der Sequenzen bestehen kann. Der folgende Screenshot zeigt einen Graphen, welcher etliche Rücktransitionen und Zyklen enthält. Jeder Pfad durch den Graphen ist ein möglicher Testfall.

Pfade der Working Light Test Suite

Mittels der Testfallgenerierung kann die Testabdeckung signifikant gesteigert werden. Außerdem lassen sich auf diese Weise Fehler aufdecken, die ansonsten schwer zu finden sind, wie z.B. Race Conditions oder Deadlocks.

Zu diesem Thema ist auch der Blogbeitrag kombinatorische State Transition Tests für Embedded Systems verfügbar.

Protos Software Entwickler im Gespräch

Die Testfall Modellierung mit CaGe bietet:

  • Textuelle Sprache für die Testdefinition (geeignet für GIT/SVN)
  • Grafische Visualisierung der Tests
  • Einsatz von komplexen Monitoren und Simulationen
  • Testausführung mittels grafischer Oberfläche oder von der Kommandozeile
  • Aufzeichnung des Testablaufs zur Laufzeit
  • Kombinatorische Testfallgenerierung
  • Automatisierte Testausführung (Continuous Integration)

Welche Anforderung an HIL-Tests haben Sie?

Mit dem Senden stimmen Sie unserer Datenschutzvereinbarung zu.