Alexander Steffen | Infineon Technologies AG | Germany
Oftmals erscheint es naheliegend, Tests in der gleichen Sprache zu implementieren wie den zu testenden Code. Gerade im Embedded-Bereich kann es jedoch sinnvoll sein, die Vorteile einer Sprache zur Produktimplementierung mit denen einer anderen zum Testen zu kombinieren. C-Code ist auf Mikrocontrollern kaum wegzudenken, mächtige Testframeworks und Testcases lassen sich jedoch in Python sehr viel einfacher implementieren.
Dieser Vortrag zeigt im ersten Teil anhand von lauffähigen Code-Beispielen, wie sich C- und Python-Code miteinander verbinden lassen, um mit Python Unittests für einzelne C-Funktionen zu schreiben, fast so als seien es eigentlich Python-Funktionen. Damit lassen sich viele Bibliotheken, die für Python bereits existieren (beispielsweise Hypothesis zur Generierung von Testfällen), auch auf C-Code anwenden, was die Implementierung guter Tests erheblich vereinfacht.
Darauf aufbauend wird im zweiten Teil mittels Python und einem entsprechenden Design des Codes anstelle einzelner C-Funktionen die gesamte Anwendung unabhängig vom Mikrocontroller lauffähig gemacht. Dies erlaubt es, Tests deutlich schneller als auf dem Mikrocontroller auszuführen, womit der Entwickler früher Feedback über die Korrektheit der Anwendungslogik und der Testimplementierung erhält. Außerdem vereinfacht sich das Debugging gegenüber manch eingeschränkter Mikrocontroller-Umgebung.