Das µracoli-Projekt besteht seit 2008 und beinhaltet mittlerweile Abstraktionen und Treiber für über 80 verschiedene Boards, viele Beispiel-Anwendungen und Werkzeuge sowie die Dokumentation.

Um bei der wachsenden Anzahl von Plattformen und Anwendungen einerseits die Funktionalität der Softwarekomponenten zu gewährleisten und andererseits nicht in Routinearbeit zu versinken, ist eine effiziente und leistungsfähige Projektinfrastruktur wichtig. Im Laufe der Jahre haben sich einige praktische Erfahrungen angesammelt, u.a. zu den Themen:

  • Einsatz von Codegeneratoren,

  • Trennung von Code und Daten im Build-System,

  • automatisiertes Erstellen und Testen von Release-Paketen,

  • Regression-Tests auf embedded Systemen.

Dabei werden die Werkzeuge Mercurial, Python, Scons und Jenkins verwendet.

Die Projekt-Entwicklung findet in drei Etappen statt.

Entwicklung

Bei der Entwicklung werden neue Merkmale implementiert, Code und Dokumentation wird geschrieben und im Repository eingecheckt. Wenn der Einbau eines neuen Features die Funktion der Mainline gefährden könnte, dann findet die Entwicklung auf einem Branch statt. Der Entwickler testet die neuen Merkmale bereits während der Implementierung.

Integration

Soll ein neues Feature auf der Mainline verfügbar gemacht werden, müssen die Änderungen des Branches auf die Mainline überführt werden. Mit einem Smoketest wird sichergestellt, dass alles noch baut und die wichtigsten Applikationen funktionieren.

Release

Bei der Veröffentlichung eines neuen Releases wird ein Release-Branch angelegt. So können etwaige Fehler nach dem Release noch ausgebessert werden, auch wenn sich die Mainline in der Zwischenzeit schon weiterentwickelt hat. Aus dem Releasebranch werden die unterschiedlichen Software-Pakete generiert, die detailiert getestet werden müssen.

Wie man sieht, spielt bei allen Arbeitsschritten das Testen eine wesentliche Rolle. Je schneller man Feedback zu den Auswirkungen einer Änderung erhält, desto einfacher ist auch das Debugging, denn die kürzlich vollzogenen Änderungen sind noch frisch im Gedächtnis des Programmierers. Dabei müssen Tests einfach durchzuführen sein und die Testschritte sollen automatisiert ablaufen.

Im Vortrag werden verschiedene Automatisierungs-Lösungen am Beispiel des µracoli-Testsystems vorgestellt.