Strukturierte Firmware-QA für einen Industriecontroller, bei dem manuelle Tests nicht mehr ausreichten
Das Projekt in Kürze: Promwad entwickelte für einen europäischen Anbieter industrieller Embedded-Controller, die in schnell rotierenden Maschinen eingesetzt werden, ein vollständig automatisiertes QA-Framework. Es ersetzt manuelle und unstrukturierte Prüfungen durch eine zweistufige Testsuite auf Basis von Python und Robot Framework. Die Tests laufen auf einem Pool physischer Geräte innerhalb einer Azure-DevOps-CI/CD-Pipeline. Dadurch konnten die Testabdeckung erweitert, Regressionstests beschleunigt und kritische Leistungs- und Netzwerkfehler erkannt werden, bevor die Firmware im Feld eingesetzt wurde.
Kunde & Herausforderung
Unser Kunde entwickelt industrielle Embedded-Controller für schnell rotierende Maschinen, die in kritischen Produktionsumgebungen eingesetzt werden. Mit zunehmender Produktreife und wachsender Komplexität der Firmware konnten die manuellen und teilautomatisierten Tests innerhalb des Entwicklungsteams nicht mehr Schritt halten. Bei kritischen Industrieanlagen führt dies zu einem unmittelbaren Geschäftsrisiko: Ein Firmwarefehler kann einen Störfall in der Produktion verursachen.
Die Einstellung eines Vollzeit-QA-Ingenieurs ausschließlich für diesen Bereich wäre nicht wirtschaftlich gewesen. Gleichzeitig verfügen allgemeine Softwaretester nur selten über praktische Erfahrung mit realer Hardware und industriellen Protokollen auf ressourcenbeschränkten Linux-Zielsystemen. Der Kunde benötigte daher einen erfahrenen Embedded-QA-Ingenieur, der sich in den bestehenden Prozess integrieren und ein reproduzierbares Framework hinterlassen konnte, das das Team dauerhaft weiterverwenden kann.
Das Entwicklungsteam von Promwad war dem Kunden bereits bekannt. Mit einem verfügbaren Embedded-QA-Ingenieur, der mit den ausgewählten Tools vertraut war, konnten wir das gesuchte Kompetenzprofil abdecken.
Lösung
Im Laufe des Projekts entwickelte unser Ingenieur ein zweistufiges automatisiertes Testframework für den Linux-basierten Firmware-Stack des Controllers und integrierte es in die Azure-DevOps-CI/CD-Pipeline des Kunden.
Das QA-System testet das Gerät auf zwei Ebenen:
- UI-Tests steuern die Weboberfläche wie ein realer Bediener und validieren dabei End-to-End-Szenarien.
- Modultests prüfen jeden Microservice isoliert, um seinen jeweiligen Funktionsbereich zu verifizieren.
Ein Lasttest-Modul simuliert Produktionsbedingungen, erfasst Kennzahlen zur Performance und Netzwerkstabilität und analysiert die Geräteprotokolle automatisch auf Trace-Einträge und Anomalien.
Zwei Ausführungskonfigurationen decken unterschiedliche Anforderungen ab: ein Smoke-Testset zur schnellen Build-Validierung und ein vollständiger Regressionslauf für umfassende Prüfungen vor dem Release. Das jeweilige Testset wird beim Start des Testlaufs ausgewählt.
Wichtige technische Entscheidungen
Automatisierte Gerätewiederherstellung über ein netzwerkgesteuertes Relais. Die physischen Testsysteme waren unter hoher Last oder bei bestimmten Fehlerszenarien gelegentlich nicht mehr erreichbar. Manuelle Neustarts durch Kollegen vor Ort verzögerten jeden CI-Lauf. Daher schlossen wir ein netzwerkgesteuertes Relais an die Testgeräte an und entwickelten eine Bibliothek zur Integration in das Testframework. Verliert das Framework während eines Tests die Verbindung zu einem Gerät, schaltet es dessen Stromversorgung automatisch aus und wieder ein und setzt anschließend den Testlauf fort.
Pool physischer Testgeräte mit automatischer Auswahl. Wir richteten einen Pool physischer Testgeräte ein, aus dem beim Start eines Testlaufs automatisch ein freies Gerät ausgewählt wird. Dadurch können nun mehrere Builds parallel und ohne Konflikte oder manuelle Zeitplanung ausgeführt werden. So wurde ein Engpass beseitigt, der zuvor den Release-Zyklus verlangsamte.
Wiederverwendbare Bibliotheksebene für Modbus und OPC UA. Beim Testen eines industriellen Controllers müssen Hunderte von Modbus-Registern und OPC-UA-Datenpunkten angesprochen werden, die jeweils eine eigene Bedeutung und spezifische Regeln für die sichere Nutzung haben. Wir entwickelten wiederverwendbare Python-Bibliotheken, in denen die Logik der Registerbelegung einmal zentral abgebildet ist, anstatt sie in jedem Test zu wiederholen. Später übernahm auch das Entwicklungsteam des Kunden diese Bibliotheken und reduzierte damit redundanten Code in den eigenen Entwicklungsarbeiten.
Gruppierung der Tests nach Microservices. Die Firmware des Controllers besteht aus mehreren Microservices, die jeweils für einen bestimmten Funktionsbereich zuständig sind. Wir strukturierten die Testsuite entsprechend dieser Architektur. Schlägt ein Test fehl, wird das verantwortliche Modul sofort identifiziert, sodass das Entwicklungsteam genau weiß, wo es nach der Ursache suchen muss.
Ergebnisse & geschäftlicher Mehrwert
Durch die Optimierung der langsamsten Testpfade verkürzte sich der vollständige Regressionslauf um rund 30 Minuten, obwohl die Anzahl der Tests weiter zunahm. Die anschließenden Lasttests deckten Fehler auf, die zuvor unentdeckt geblieben waren: Netzwerkverbindungsabbrüche unter hoher Last und Schreibfehler in Modbus-Registern unter bestimmten Stressbedingungen. Das Entwicklungsteam des Kunden stufte beide Fehlerarten als kritisch ein und behob sie, bevor die Firmware an Kundenstandorten eingesetzt wurde. Ein erheblicher Teil der Fehler wurde sogar noch früher entdeckt, und zwar bereits bei der Erstellung der Tests, bevor die entsprechenden Szenarien in die Regressionssuite aufgenommen wurden.
Das Framework, die Bibliotheken und das Reporting sind so konzipiert, dass jedes Teammitglied sie ohne tiefgehende Kenntnisse der internen Funktionsweise um neue Szenarien erweitern kann. Die QA-Infrastruktur des Kunden lässt sich sowohl für zukünftige Firmware-Releases als auch für weitere Produkte auf derselben Plattform wiederverwenden.
Weitere Leistungen von uns für QA & Testautomatisierung
-
Softwaretest-Dienstleistungen — QA & Testautomatisierung: Manuelle und automatisierte Tests für mobile, webbasierte, Desktop- und Embedded-Plattformen einschließlich CI/CD-Integration und Hardware-in-the-Loop-Workflows.
-
Embedded Software für die Industrieautomatisierung: Firmwareentwicklung für ein industrielles Gateway-Modul mit Modbus RTU und HART — ein Beispiel für einen Embedded-Stack, den unser QA-Team durchgängig testet.
FAQ
Decken Sie auch die Qualitätssicherung für Embedded Software und industrielle Firmware ab oder nur für Web-, Mobil- und Desktop-Anwendungen?
Beides. Neben Tests für mobile, webbasierte und Desktop-Anwendungen bieten wir auch Qualitätssicherung für Embedded Software und Hardwareplattformen an. Unsere Ingenieure arbeiten direkt mit realer Firmware und industriellen Protokollen, unter anderem in Projekten aus den Bereichen Automotive, Telekommunikation, Industrieautomatisierung, IoT und Medizintechnik.
Welche Testarten führen Sie durch und welche Tools setzen Sie dabei ein?
Unsere QA-Ingenieure führen Funktions-, Performance-, Regressions-, Integrations-, API-, Sicherheits-, Usability-, Kompatibilitäts- und Abnahmetests durch. Für Embedded- und industrielle Zielsysteme umfasst unser Technologie-Stack Python mit Robot Framework, Docker-Container für reproduzierbare Testläufe sowie die Integration in das bereits verwendete CI-System (Azure DevOps, Jenkins, GitLab oder TeamCity). Die Auswahl der Tools richtet sich nach der bestehenden Pipeline des Kunden und nicht nach einer festen Vorlage.
Wie integrieren Sie die Testautomatisierung in eine bestehende CI/CD-Pipeline und reale Hardware?
Wir integrieren die Tests in das bereits vorhandene CI-System, sodass sie ohne redundante Infrastruktur Bestandteil jedes Builds werden. Bei Projekten, in denen Tests auf realen Geräten ausgeführt werden müssen, richten wir Pools physischer Testgeräte mit automatischer Geräteauswahl ein. Zusätzlich implementieren wir automatisierte Wiederherstellungsmechanismen, beispielsweise netzwerkgesteuerte Relais zum ferngesteuerten Aus- und Wiedereinschalten. So blockieren instabile Testsysteme nicht die Pipeline.
Können wir mit einem QA-Ingenieur beginnen oder benötigen wir ein vollständiges Team?
Beide Optionen sind möglich. Promwad bietet drei Kooperationsmodelle an: Time & Material für Projekte mit sich weiterentwickelnden Anforderungen, ein Dedicated Team für langfristige Embedded-QA-Kapazitäten und Fixed Price für klar definierte Aufgaben mit konkreten Ergebnissen. Für eine gezielte Qualitätssicherung von Embedded Firmware ist ein einzelner Embedded-QA-Ingenieur im Rahmen des Dedicated-Team-Modells häufig die passende Besetzung. Der Ingenieur integriert sich in die Prozesse des Kunden, arbeitet direkt mit dessen verantwortlichen Fachkräften zusammen und begleitet das Produkt lange genug, um ein wartbares Framework aufzubauen.
Wie stellen Sie sicher, dass das Framework nach dem Ausscheiden Ihres Ingenieurs aus dem Projekt weiterhin nutzbar bleibt?
Die Struktur und Dokumentation des Frameworks sind Teil des Lieferumfangs. Eine verständliche Erstellung von Tests bildet die Grundlage, wobei Robot Framework eine wichtige Rolle spielt. Darüber hinaus entwickeln wir wiederverwendbare Bibliotheken für jedes Protokoll und jede Geräteschnittstelle. Jeder Test enthält zudem eine Dokumentation des erwarteten Ergebnisses. Die Berichte sind so aufgebaut, dass bei einem fehlgeschlagenen Test die konkrete Ursache und das betroffene Modul angegeben werden. Neue Ingenieure können das Framework übernehmen und erweitern, ohne sich erst mühsam in den bestehenden Code einarbeiten zu müssen.



























