Zum Hauptinhalt springen
DevOps in der Embedded-Welt: Herausforderungen für Embedded- und IoT-Geräte
  1. Blogs/

DevOps in der Embedded-Welt: Herausforderungen für Embedded- und IoT-Geräte

Autor
Romano Roth
Ich bin überzeugt: Der nächste Wettbewerbsvorteil ist nicht AI selbst, sondern die Organisation drumherum. Als Chief AI Officer bei Zühlke arbeite ich mit C-Level-Führungskräften daran, Unternehmen zu bauen, die wahrnehmen, entscheiden und sich kontinuierlich anpassen. Seit über 20 Jahren mache ich diese Überzeugung zur Praxis.
Frag die KI über diesen Artikel

Embedded- und IoT-Geräte werden in der heutigen Welt immer beliebter. Diese Geräte werden in verschiedenen Branchen eingesetzt, etwa im Gesundheitswesen, in der Fertigung, bei Konsumgütern und in der Heimautomation. Die Sicherstellung der Qualität dieser Geräte ist entscheidend, um deren Zuverlässigkeit, Sicherheit und Funktionalität zu gewährleisten. Aber wie macht man das?

Von Nikolaus Naredi-Rainer & Markus Zahner & Romano Roth

In den vergangenen Jahren ist die Software, die auf Embedded- oder IoT-Geräten läuft, immer mehr zu dem Zünglein an der Waage geworden, das darüber entscheidet, ob diese Geräte am Markt erfolgreich sind oder in den Augen der Kundinnen und Kunden scheitern. Wenn man Unternehmen betrachtet, die ihren Markt mit innovativen Hardwareprodukten disruptiert haben, wird deutlich, dass sie das Produkt häufig mit einem «Software-first»-Ansatz angehen, aufgesetzt auf einem Minimal Viable Product auf der Hardwareseite. Auf der anderen Seite stehen Unternehmen, die ihren Marktanteil oft über Jahre etabliert haben und mit inkrementeller Innovation arbeiten. In diesem Software-Entwicklungsszenario werden Unmengen an Ressourcen verbraucht und manuelle Schritte ausgeführt, bedingt durch das organische Wachstum der Unternehmen und ihrer Prozesse. Auch wenn manche Unternehmen den Begriff «agil» in ihrer Entwicklung verwenden, laufen die Prozessphasen üblicherweise hintereinander und voneinander getrennt ab. Nach Abschluss einer Phase (ob erfolgreich oder nicht) werden die Arbeitsergebnisse über die sogenannte «Wall of Confusion» geworfen, ganz nach dem Motto «nach mir die Sintflut». Dieses Vorgehen führt zu folgenden Hauptproblemen, die in den unterschiedlichsten Organisationen in gleicher Weise anzutreffen sind:

  • Viele manuelle Schritte, die den Gesamtprozess langsam und fehleranfällig machen.
  • Qualitätssicherung und Tests als separate Phasen am Ende des Gesamtprozesses.
  • Sicherheitsanforderungen und andere nicht-funktionale Anforderungen wie Last und Performance oder Wartbarkeit werden erst kurz vor der Endauslieferung diskutiert und überprüft.
  • Mangelnde Zusammenarbeit aufgrund getrennter Arbeitsbereiche und Phasen.

DevOps in der Embedded-Welt: Experimentieren ermöglichen und die Time-to-Market beschleunigen
#

Seit man begonnen hat, ein Muster in diesen Verhaltensweisen und Problemen zu erkennen, hat sich eine Lösung herauskristallisiert: DevOps.

DevOps ist ein Mindset, eine Kultur und eine Reihe technischer Praktiken. Es schafft Kommunikation, Integration, Automatisierung und enge Zusammenarbeit zwischen allen Personen über den gesamten Wertstrom hinweg, die für die Planung, Entwicklung, Testung, Bereitstellung, Freigabe und Wartung eines Produkts erforderlich sind.

DevOps-Werkzeuge in einer Embedded-Welt: Automatisierung ist der Schlüssel
#

Das Ziel von DevOps ist es, den Markteintritt zu beschleunigen, Experimente zu ermöglichen, Software in kürzeren Abständen freizugeben, die Vorlaufzeit für die Fehlerbehebung zu reduzieren und die durchschnittliche Wiederherstellungszeit zu verbessern.

Während DevOps in reinen Software-Domänen eine etablierte Praxis ist, hat die Embedded-Welt das DevOps-Mindset vielerorts noch nicht vollständig aufgegriffen. Einer der vielen Gründe für diese mangelnde Adaption ist, dass Embedded-Anwendungen und die eingesetzten Werkzeuge oft auf die spezifische Anwendung und deren Umgebung zugeschnitten sind. Die eingesetzten Werkzeuge sind vielfältig und das Spektrum an Lösungen, um eine Form der Automatisierung zu erreichen, ist breit. Aus diesem Grund können viele Standard-DevOps-Werkzeuge und -Praktiken in einer Embedded-Umgebung nur teilweise und nicht ohne Anpassung verwendet werden. Dies gilt insbesondere für die folgenden 3 Schritte:

  • Testen
  • Monitoring
  • Deployment

Dieser Blogbeitrag konzentriert sich auf das Testen, insbesondere auf automatisiertes Testen, da Automatisierung in einem DevOps-Setup zentral ist.

Um zu verstehen, warum automatisiertes Testen in der Welt der Embedded-Geräteentwicklung schwieriger ist, müssen wir uns die Testpyramide ansehen. Die Testpyramide ist ein Framework, das Entwicklerinnen und Entwicklern hilft, ihre Testbemühungen zu priorisieren. Eine typische Pyramide besteht aus drei oder mehr Schichten, die in der Regel mindestens Unit-Tests, Integrationstests und End-to-End-Tests enthalten. Allgemein gilt: Tests, die in der Pyramide weiter unten stehen, also Unit-Tests, sind isolierter und schneller und daher kostengünstig zu automatisieren, während Tests, die weiter oben in der Pyramide stehen, also End-to-End- oder Systemtests, komplexer und teurer zu automatisieren sind.

Erfolgsgeschichten: Wie man die DevOps-Herausforderungen für IoT-Geräte angeht
#

Wenn wir DevOps wirksam in die Embedded-Welt bringen wollen, müssen wir die Automatisierung der komplexeren System- und End-to-End-Tests ermöglichen. Sehen wir uns an, wie führende Hersteller von IoT-Geräten diese Herausforderung angegangen sind!

End-to-End-Test für eine Parkuhr
#

Die Parkuhr von Digital Parking ist eine typische IoT-Anwendung: Daten (z. B. welche Fahrzeuge wie lange auf welchem Parkplatz stehen dürfen) werden erfasst und auf dem Gerät angezeigt, während dieselben Informationen online verfügbar sind, um die Kontrolle zu erleichtern und sogar Live-Auslastungsdaten des Parkbereichs bereitzustellen. Um automatisierte End-to-End-Tests des Gesamtsystems zu ermöglichen, wurde ein vollständiges Gerät mit zusätzlicher Hardware ausgestattet, sodass Benutzereingaben (z. B. das Drücken einer Taste oder das Einwerfen von Münzen) auf der echten Hardware ausgelöst werden können.

Mit einem solchen Setup können mehr als 50 Testfälle automatisiert werden. Sie reichen von Benutzerinteraktionen, etwa dem Bezahlen für das geparkte Auto, bis hin zur Prüfung, ob Daten in der Cloud angekommen sind. Auch komplexere Wartungs- und Installations-Use-Cases lassen sich automatisieren.

Dieses Test-Setup wird zum einen verwendet, um regelmässig Regressionstests durchzuführen und sicherzustellen, dass das IoT-Gerät stabil läuft, zum anderen aber auch, um im Feld entdeckte Probleme zu reproduzieren. Erfahren Sie mehr in unserer Erfolgsgeschichte «Parkuhr für das Internet of Things».

Tests des Stromverbrauchs
#

Um die Energieeffizienz ihrer Geräte sicherzustellen, hat Texas Instruments (TI), ein global tätiges Halbleiter-Design- und Fertigungsunternehmen, eine Suite automatisierter Werkzeuge zur Strommessung und -analyse entwickelt, die EnergyTrace™-Software. Diese Software ermöglicht es Entwicklerinnen und Entwicklern, den Stromverbrauch ihrer Geräte in Echtzeit zu messen und zu analysieren – sowohl während der Entwicklung als auch im Feld. Die EnergyTrace-Software enthält mehrere Funktionen, mit denen Entwicklerinnen und Entwickler Tests des Stromverbrauchs automatisieren können, darunter kontinuierliches Power-Profiling, Automatisierung von Strommessungen und Power-Analyse-Tools. Durch die Automatisierung der Stromverbrauchstests kann TI Probleme beim Stromverbrauch frühzeitig im Entwicklungsprozess erkennen und das Design seiner Geräte iterativ verbessern. Dadurch kann TI energieeffizientere Geräte liefern, die den Bedürfnissen seiner Kundinnen und Kunden entsprechen.

Sicherheitstests für IoT-Anwendungen
#

Während Sicherheitstests an einem laufenden System (z. B. Pen-Testing) schwer zu automatisieren sind, weil sie das Testen der Anfälligkeit des Geräts gegenüber verschiedenen Angriffsarten umfassen, ist statisches Testen von Code mit vertretbarem Aufwand automatisierbar. Static Application Security Testing (SAST) verwendet Tools (z. B. SonarCube), um den Quellcode zur Compile-Zeit auf Schwachstellen zu analysieren. Wenn solche Tools in eine CI-Pipeline integriert werden (hier beschrieben für GitLab und GitHub), können sie sogar verhindern, dass anfälliger Code in die Codebasis eingecheckt wird. Häufig wird im Rahmen der statischen Codeanalyse auch Secret Scanning eingesetzt, um zu erkennen, ob Geheimnisse versehentlich in den Quellcode eingecheckt wurden. Diese Tools helfen, Sicherheitsprobleme im Anwendungscode zu verhindern (hier beschrieben für GitLab und GitHub). Natürlich kann es auch Sicherheitsprobleme in Drittanbieter-Bibliotheken geben, von denen die Anwendung abhängt. Software Composition Analysis (SCA) prüft diese Abhängigkeiten gegen öffentliche Datenbanken bekannter Schwachstellen. Mehrere Tools können verwendet werden, um diese Aufgabe zu automatisieren, und können daher regelmässig ausgeführt werden, um keine neu entdeckten Schwachstellen zu verpassen (hier beschrieben für GitLab und GitHub). Entdecken Sie weitere Möglichkeiten mit unserem «Industrial IoT Starterkit».

Continuous Integration für einen medizinischen Ofen
#

Für die Entwicklung und Wartung eines spezialisierten Hochtemperaturofens für medizinische Produkte hat Zühlke ein automatisiertes Test-Framework entwickelt. Aufbauend auf dem Robot Framework wurde ein Testsystem implementiert, sodass viele Systemtests automatisch ausgeführt werden konnten. Die Tests umfassten benutzerzentrierte Use Cases sowie Fabrik-Use-Cases wie Kalibrierung oder Wartungsfälle wie das Aktualisieren der Firmware. Die Testautomatisierung wurde schliesslich in den täglichen Entwicklungsfluss integriert und in einer dedizierten Pipeline genutzt, sodass diese Systemtests für alle in die Codebasis eingecheckten Änderungen ausgeführt würden. Dieses Setup ermöglichte es dem Entwicklungsteam, sich bei neuen Features schneller zu bewegen, mit der Sicherheit, dass keine Regression in ein neues Release rutscht.

Fazit: DevOps sichert Markterfolg und Kundenzufriedenheit
#

Eine kontinuierliche Qualitätssicherung von Embedded- und IoT-Geräten ist entscheidend, um deren Zuverlässigkeit, Sicherheit und Funktionalität sicherzustellen. Da die auf diesen Geräten laufende Software zunehmend wichtiger für deren Erfolg am Markt wird, ist es essenziell, einen DevOps-Ansatz zu verfolgen, der automatisiertes Testen und die Zusammenarbeit über alle Phasen des Entwicklungsprozesses hinweg priorisiert.

Leider ist diese Automatisierung für Embedded-Geräte nicht ohne Weiteres verfügbar, da sie für jedes neue Produkt einen dedizierten Aufwand auf der Entwicklerseite erfordert. In diesem Artikel haben wir gezeigt, wie weit Unternehmen in ihren Bemühungen gehen, ihre Tests für IoT-Geräte zu automatisieren, was die Bedeutung des Schliessens des DevOps-Zyklus und des Erntens seiner Vorteile unterstreicht.

Letztlich werden Investitionen in robuste Testprozesse nicht nur den Erfolg dieser Geräte am Markt sicherstellen, sondern auch die Zufriedenheit der Nutzerinnen und Nutzer sowie das Vertrauen in deren Funktionalität und Sicherheit fördern.

Möchten Sie die Möglichkeiten von DevOps erkunden? Bitte nehmen Sie Kontakt mit uns auf!