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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.