6

Ich arbeite an einem kleinen Spaß Projekte, die einen Roboter baut. Wir als Programmierer arbeiten parallel zu den Menschen, die den Roboter bauen. Es ist sehr oft der Fall, dass wir versuchen, geänderte Software auszuführen und die Erbauer die Hardware geändert haben. Wenn die Softwaretests nicht ausgeführt werden, ist es immer schwierig, herauszufinden, ob die Software oder die Hardware ausfällt oder, noch schlimmer, wenn die Integration fehlschlägt. Es gibt einige harte Teile mit einem automatischen Test für diese Probleme.Wie Integration/Unit Test Software Hardware-Schnittstellen

Wir haben einige Wege gefunden, die Dinge aufzulösen, also haben wir RC-Kontrolle, um den Roboter einige Bewegungen ohne Software durchgehen zu lassen, um sicherzustellen, dass er immer noch funktioniert. Dann starten wir einige Softwaretests, die den Roboter dazu bringen, einige definierte Zahlen zu machen, um zu zeigen, dass sich die Software auf die gleiche Weise verhält wie zuvor. Aber das kommt immer auf eine sehr zeitraubende Aufgabe an, weil Sie es nicht automatisieren können und jemand den Test beginnen muss, den Test beobachten und versuchen muss, herauszufinden, ob der Roboter getan hat, was er tun sollte.

Ein anderes Problem ist, dass das ständige Testen mit unserer realen Hardware Teile unserer Hardware, Gelenke, Motoren, Zahnräder und so weiter verschleißt.

Aber das Testen hat nicht so viel Ärger verursacht und kostet so viel Zeit, dass ich gerne wissen würde, welche Art von Techniken in anderen Projekten verwendet werden, die sich mit Hardware-Software-Interaktionen befassen und ob es Werkzeuge gibt verwendet werden.

Antwort

9

Die Schnittstelle zwischen dem Roboter und der Software muss zuerst definiert werden; nicht unbedingt erschöpfend, könnte dies inkrementell getan werden. Beginnen Sie klein, zum Beispiel mit grundlegenden Bewegungen (vorwärts, rückwärts), dann, sobald es vollständig getestet wurde, sowohl isoliert als auch integriert, fügen Sie etwas Verhalten hinzu (z. B. links abbiegen, rechts abbiegen), wiederholen Sie den Test. Auf diese Weise kann das gesamte Team das, was es während des gesamten Projekts gelernt hat, verwenden, um die Schnittstelle zu erweitern und möglicherweise Schnittstellen-Nacharbeiten zu minimieren.

Der Artikel Progress before Hardware Artikel beschreibt einen solchen Prozess in größeren Details, mit Schwerpunkt auf der Test-Driven-Development (TDD) Aspekt.

Siehe auch Antworten auf die How to do TDD with hardware Frage.

2

Ich denke, es ist eine sehr interessante Situation.

Ich glaube, es gibt kein Problem mit Ihrem Testprozess. Wenn Sie Ihren Roboter verspotten und gegen diesen Schein testen, ist alles gut.
Wenn der Hardware-Roboter sich anders verhält als Ihr verspotter Roboter, gibt es ein anderes großes Problem: Die Kommunikation.

Die Schnittstelle zwischen der Software und der Hardware ist die "Protokoll" -Spezifikation. Meiner Meinung nach darf es nicht ohne Diskussion geändert werden. Die Hardware-Jungs können es nicht ändern und Sie Software-Jungs nicht auch! Sie können es nur zusammen ändern. In Ihrer Situation ändert jeder es selbst.

In Ihrer Situation scheinen Ihre Teams gegeneinander zu arbeiten. Versuchen Sie also, sich auf Ihre Schnittstelle und insbesondere auf Ihre Kommunikation zu konzentrieren, nicht auf Ihren Integrationstest, der ohnehin nicht funktioniert.

Ein Vorschlag von mir würde sein, eine Roboter-Software als die einzige Spezifikation zu verwenden. So können Sie sich auf Ihren Schein verlassen und es gibt einen zentralen Punkt, der die Verbindung zwischen Hard- und Software definiert.
Wenn die Software-Jungs es ändern wollen, ok. Sie müssen es mit Ihnen besprechen und Sie werden den Software-Mock ändern. Wenn die Hardware geändert wurde und der Mock nicht, haben Sie eine Entschuldigung, weil Sie sich gegen Ihre Spezifikation entwickeln.

Viel Glück!