Regressionstests für eingebettete Software – Automatisierung durch Jenkins

Ich frage mich, ob jemand ein Jenkins-Plugin verwendet hat oder zumindest ein Jenkins-Plugin gibt, das die Verwaltung eines vollständigen Testzyklus für einen bestimmten Build ermöglichen kann.

Vielleicht wäre eine erste Frage, gibt es ein Jenkins-Plugin, das eine High-Level-Schnittstelle zum Testen von eingebetteter Software über einen Knoten bieten kann, der mit Hardware-Geräten verbunden ist?

In diesem Fall würde der Test selbst von einem bestimmten Tool auf dem Knoten durchgeführt. Jenkins würde nur als Manager fungieren, die Tests auf dem Knoten starten, Ergebnisse sammeln und Statistiken über die Build-Qualität aktualisieren. Alles in iterativer Weise, sodass das beteiligte Testteam Probleme beheben und die Testelemente bei Bedarf aktualisieren kann (Testfälle, wenn Sie möchten, aber auch Umgebungsspezifikationen, falls erforderlich). Die Testausführungszyklen würden während der Nacht durchgeführt, wobei die Ausrüstung während des Tages verfügbar bliebe, um für einmalige Ausführungen und Fehlerbeseitigung verwendet zu werden.

Ein solches Plugin müsste in der Lage sein, das Testprojekt bei Bedarf vor einem Regressionslauf zu überprüfen und auch manuelle Eingaben zuzulassen (z. B. um das Stoppen des Tests zu erzwingen).

Die ganze Idee beinhaltet auch einige andere Aspekte, aber im Moment interessiert mich nur das Plugin selbst.

Antworten (1)

Wenn Sie Ihre Regressionstests so einrichten können, dass sie von der Befehlszeile aus ausgelöst und die Ergebnisse erfasst und möglicherweise nachbearbeitet werden können, kann ein Jenkins-Knoten sie auslösen und bei einem Rückgabewert des Prozesses von 0 für einen Pass und ungleich null für einen Fehler, erhalten Sie einen Erfolg oder Fehler (genau wie bei make). Die gesamte Befehlszeilenausgabe wird erfasst und steht zum Debuggen usw. zur Verfügung.

In der Vergangenheit habe ich so etwas eingerichtet, wobei Python verwendet wurde, um die Testwerkzeuge aufzurufen, die relevanten Protokolle zu analysieren und den Rückgabewert festzulegen.

Dies ist im Moment bereits erfolgt. Ich habe ein Tool implementiert, um genau das zu tun, und es wird für einmalige Ausführungen verwendet. Dieses Tool wird tagsüber verwendet, wenn alle im Büro sind. Es nutzt den von Jenkins bereitgestellten Warteschlangenmechanismus sehr gut, und wenn es mehr als einen Knoten gibt, der einen bestimmten Job bedient, ist es ein Glücksfall. Das Jenkins-Plugin (oder was auch immer es gibt), das ich suche, müsste etwas schlauer sein. Müsste mit dem Testen beginnen, auf das Ende des Tests im zulässigen Zeitfenster warten, auf das nächste verfügbare Zeitfenster warten und so weiter.
Höchstwahrscheinlich muss ich es basierend auf diesem Pipelining-Mechanismus selbst implementieren, würde ich vermuten. Alle Teststatistiken müssten auf dem Knoten verarbeitet und als Junit-Artefakte an Jenkins übergeben werden. Ich spekuliere im Moment nur. Irgendwelche Gedanken dazu? Oder Vorschläge? Vielen Dank!
Von der Befehlszeile aus ist die einzige Möglichkeit, die ich bei mehreren Organisationen gesehen habe.
@Mawg Heutzutage haben zu viele Entwickler, darunter leider auch Tool-Entwickler, entweder die Befehlszeile vergessen oder die Dokumentation der Befehlszeilenschnittstelle zu gut vergraben, was das automatische Testen zu einem Problem macht. Wenn Sie es mit Jenkins auf der Befehlszeile tun können, kann Jenkins es für Sie tun und die Ergebnisse aufzeichnen.
Ich stimme sicherlich zu, aber während Fähigkeiten wie Bash/Dos/Powershell-Skripting zurückgegangen sind, hat die Popularität von Python zugenommen, so dass die meisten Ihrer Jenkins-Befehlszeilen-Zeugs im Allgemeinen nur einige Python-Skripte aufrufen