Forum: PC-Programmierung Automatisches Testen eines Kombiinstruments


von Christian (Gast)


Lesenswert?

Hallo zusammen,

ich bin gerade dabei, meine Masterarbeit abzuschließen, hänge jedoch 
gerade ein bisschen fest. Ein wenig Hintergrundinformation dazu: Bei der 
Arbeit geht es darum, einen Prüfstand für Motorrad Kombiinstrumente zu 
entwickeln. Er besteht aus Schnittstellen zum Tacho (CAN, Taster, 
Kamera). Die CAN Kommunikation ist über den CANalyzer umgesetzt, die 
Taster "drückt" ein Mikrocontroller der mittels UART-USB Adapter mit dem 
PC verbunden ist und die Bilderkennung läuft über OpenCV. Alle drei 
Schnittstellen sind nun in einem Programm (mit C# geschrieben) 
zusammengefasst. Ich kann also ein Objekt erstellen, das den Tacho 
repräsentiert und ihn mittels der vorhandenen Methoden beliebig 
manipulieren bzw ablesen. Soweit so gut. Die Testfälle sollen natürlich 
nicht hardcoded sein, sondern externe Text- oder XML-Dateien. Und genau 
hier liegt mein Problem: Ich habe noch keine zufriedenstellende Lösung 
gefunden, wie ich Testfälle definiere und sie dann meinem Framework zur 
Ausführung übergebe.

Bei den Tests, die ausgeführt werden sollen, handelt es sich vor allem 
um Regressionstest nach dem Muster:
 Sende CAN Botschaft xy
 Überprüfe ob LED xy leuchtet
 Überprüfe ob Wert xy dem Wert 100 entspricht
oder
 Drücke 5x Taste xy
 Überprüfe ob Anzeige xy anzeigt

Erster Ansatz: Ein Textfile, das ich zeilenweise auslese, mittels 
(selbst geschriebenen) Parser parse und mittels eines großen switch-case 
Konstrukts eine Funktion ausführe. Diese Lösung habe ich schon teilweise 
implementiert und sie scheint zu funktionieren. In dem Buch "Embedded 
Software Testing" (von Bart Broekman) wird im Anhang C genau diese 
Vorgehensweise empfohlen.

Zweiter Ansatz: SpecFlow. Was die Erstellung von Tests betrifft kann es 
eigentlich genau das was ich möchte, auch wenn es eigentlich nicht dafür 
gedacht ist ein embedded system zu testen. Außerdem scheint es nur in 
Kombination mit der IDE zu funktionieren?

Dritter Ansatz: Einen Testfall in Form von C# Sourcecode direkt in eine 
Textdatei schreiben und diesen während der Laufzeit kompilieren und 
ausführen.

Ich bin bereits etwas in Verzug und möchte mich nur ungerne in eine 
Sackgasse verlaufen. Was haltet ihr von meinen Ideen? Existiert bereits 
Software, die mein Problem lösen kann? Wie machen das die Profis? Ich 
bin mir bewusst, dass "automatisches Testen" üblicherweise mit viel 
Aufwand verbunden ist und nehme diesen auch in Kauf. Für Tips und 
Hinweise wäre ich sehr dankbar!

Schöne Grüße,
Christian

von mh (Gast)


Lesenswert?

Der erste Ansatz ist doch gut und durchaus gängig. Es gibt einen 
bestimmten Satz von Funktionen, die die Fähigkeiten des Prüfstandes 
möglichst abstrakt abbilden. Aus diesen Funktionen werden dann die 
Testfälle aufgebaut in Form einer Beschreibungssprache (Text, XML, ...). 
Auf diese Weise ist der Schritt von der Testfallspezifikation zur 
Implementierung sehr klein und der Zusammenhang offensichtlich.
Zur Abarbeitung der einzelnen Testfälle habe ich desöfteren gesehen, 
dass dafür UnitTest-Frameworks "zweckentfremdet" wurden.

Beim dritten Ansatz besteht immer die Gefahr, zu viel "Intelligenz" in 
den eigentlichen Testfall zu packen. Sachen, die eigentlich ins 
Framework gehören landen dann im Testfall und machen den unnötig 
kompliziert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.