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