Software-Test Durch Simulation bessere IoT-Systeme entwickeln

Autor / Redakteur: Jakob Engblom * / Franz Graser

Bei der Entwicklung von Software, die auf Hunderten oder Tausenden IoT-Nodes läuft, stellt sich die Frage, wie sich Programme möglichst praxisnah testen lassen. Simulation ist eine gute Antwort darauf.

Firmen zum Thema

Bild 1: Simulation des Internets der Dinge. Die Lösung simuliert die Hardware jedes Knotens wie Prozessoren, Speicher, Timer, Wireless Radio und dergleichen. Auf den simulierten Nodes laufen das Betriebssystem und Zielapplikationen mit den gleichen Binaries wie auf der echten Hardware.
Bild 1: Simulation des Internets der Dinge. Die Lösung simuliert die Hardware jedes Knotens wie Prozessoren, Speicher, Timer, Wireless Radio und dergleichen. Auf den simulierten Nodes laufen das Betriebssystem und Zielapplikationen mit den gleichen Binaries wie auf der echten Hardware.
(Bild: Wind River)

Die IoT-Systeme, die heute entwickelt werden, basieren oft auf einer dreistufigen Architektur (Bild 1). Es gibt viele kleine Knoten, die über Wireless Mesh-Netzwerke miteinander oder mit Gateways verbunden sind. Die Gateways selber sind mit einem Management Server oder mit der Cloud verbunden. Bei den kleinen Knoten kann es sich um Sensoren (Temperatursensoren, Stromzähler, Kameras) oder Aktoren (Thermostate, Dimmer oder Türöffner) handeln. Gateways oder Konzentratoren sind für die Verbindung zur Außenwelt verantwortlich und sorgen für Sicherheit. Der Back-End-Server, der sich oft in der Cloud befindet, ist für die Geschäfts- und Steueraspekte des IoT-Systems zuständig.

Bildergalerie

Zum Testen dieses Systemtyps sollten die Wireless-Nodes über eine große Fläche verteilt sein, damit nicht alle miteinander in Verbindung stehen. Dies setzt voraus, dass als Labor ganze Gebäudekomplexe verwendet werden. Die Einrichtung und Wartung eines solchen Netzwerks ist sehr aufwändig. Die Arbeitskosten können die Kosten der Knoten selbst deutlich übersteigen.

Ein Programm verwaltet Hunderte simulierter Objekte

In einem Simulator (Bild 1) lässt sich ein umfangreiches Netzwerk relativ leicht einrichten. Man muss lediglich ein Programm schreiben, um die Nodes virtuell zu platzieren und über den erforderlichen virtuellen Bereich zu verteilen. Anschließend modelliert man die Wireless-Reichweite zwischen den Nodes. Statt Hunderte physikalischer Objekte manuell zu verwalten, arbeitet man mit einem einzigen Skript oder Programm.

Mit einer Lösung wie Wind River Simics simuliert man die Hardware jedes Knotens: Prozessoren, Speicher, Timer, LEDs, Wireless Radio und alles andere, das man braucht. Auf den simulierten Nodes laufen das Betriebssystem und Zielapplikationen. Dabei werden die gleichen Binaries genutzt, die auf der echten Hardware laufen. Die verschiedenen Typen von Nodes werden sinngemäß simuliert und laufen mit dem gleichen Simulationsaufbau.

Die Simulation des gesamten IoT-Systems auf diese Art erlaubt, alle Aspekte der Software zu testen. Dies enthält zum Beispiel:

  • den Wireless-Kommunikationsstack und seinen Umgang mit Netzwerkproblemen,
  • den Sensor- und Aktor-Code und wie er mit der Umgebung arbeitet,
  • Sleep-Betriebsarten und Wake-up-Intervalle an den Knoten und ihre Energiespar-Eigenschaften,
  • die Reporting-Funktion von Sensoren zu Gateways und weiter zum Server,
  • Middleware, die Netzwerk-Nodes administriert und Software auf den Nodes aktualisiert, einschließlich Over-the-air-Updates,
  • Onboarding und sichere Konnektivität,
  • Datensicherheit (Gateways und Nodes),
  • Skalierbarkeit des Datenmanagementsystems bei steigender Nodes-Zahl.

Simulation bietet die Möglichkeit, Systeme beliebiger Größe zu entwickeln – von sehr kleinen bis hin zu äußerst umfangreichen Systemen. Das bedeutet, dass das Verhalten des Systems über ein ganzes Spektrum getestet werden kann: Von kleinen Unit-Tests oder Subsystem-Tests bis hinauf zu größten vorstellbaren Einrichtungen. Oft wirft jede Skalierung andere Probleme im System auf. Es geht nicht nur um die allergrößten Setups, sondern auch darum, sicherzustellen, dass auch bei Systemen mittlerer Größe alles effizient arbeitet.

Ergänzendes zum Thema
Originalbeitrag als ePaper oder im pdf-Format lesen

Dieser Autorenbeitrag ist in der Printausgabe ELEKTRONIKPRAXIS 11/2015 erschienen. Diese ist auch als kostenloses ePaper oder als pdf abrufbar.

Das Bild 1 zeigt auch die Simulation der Umgebung, in der das IoT-System arbeitet. Jeder Sensorknoten hat typischerweise eine Schnittstelle zu einer Simulation der ihn umgebenden Umwelt – somit verfügt er über Daten, die er zum Gateway und Server schickt. Ein IoT-Knoten ohne eine ihn umgebende Welt ist nicht nützlich.

Zum Systemtest gehört auch, die simulierten Funknetzwerkbedingungen zu variieren. In einem Simulator ist es einfach, bestimmte Signalstärken zwischen beliebigen Knotenpaaren zu definieren und Regeln zu implementieren, nach denen Datenpakete bei nachlassender Signalstärke wahlfrei fallengelassen werden. Die Konfiguration kann während eines Tests verändert werden, um zu prüfen, wie Nodes auf geänderte Bedingungen reagieren – etwa wenn ein Zug die Sichtverbindung zwischen zwei Knoten durchquert und die Funkkommunikation kurzzeitig unterbricht. Solche Tests lassen sich in der Simulation genau steuern und wiederholen. Ganz im Gegensatz zur realen Welt, in der es schwierig sein kann, bestimmte Funksituationen nachzubilden.

Das Testen lässt sich auch horizontal skalieren (Bild 2). Es ist leicht, viele Varianten von Netzwerken aufzubauen, um die Software bei unterschiedlich verteilten und verbundenen Knoten zu testen. Verschiedene Gewichtungen zwischen Gateways und Sensorknoten sowie diverse Netzwerktopologien lassen sich testen. Bild 2 zeigt auch, wie man mit Simulation verschiedene Tests parallel vornehmen kann. Das verkürzt die Gesamtzeit zur Realisierung von Testsets erheblich.

Bildergalerie

Kann es in der Praxis funktionieren, Hunderte oder Tausende Nodes auf einem einzigen Host Computer zu simulieren? Die Antwort lautet ja. IoT-Sensor-Nodes weisen typischerweise ein sehr geringes Aktivitätsprofil auf. Die Sensoren erfassen die Welt nicht kontinuierlich. Statt dessen erfassen sie regelmäßig einen Messwert und stellen diesen bereit. Jeder Sample-Lauf kann eine Sekunde oder nur ein paar Millisekunden dauern. Anschließend kann das System minuten- oder sogar stundenlang im Idle-Zustand verharren. Dies spart Energie und ermöglicht die Implementierung von Nodes in die reale Welt über lange Zeiträume ohne Batteriewechsel.

Simulation läuft viel schneller als Tests in Echtzeit

Somit gibt es in einem System sehr viele Idle-Zeiten, die man nutzen kann, um die Simulation zu beschleunigen. Statt Idle-Zeit Zyklus um Zyklus abzuspielen, springt eine Simulationslösung direkt zum nächsten Ereignis, das einen im Sleep-Zustand befindlichen Knoten aufweckt. Das bedeutet, dass sich ein System, das sich meist im Idle-Zustand befindet, viele Male schneller als in Echtzeit simulieren lässt. In großen IoT-Simulationen ist das von Vorteil.

Einige Anwender nutzen Simics, um das Systemverhalten auf physikalischer und auf der Zeit-Ebene zu untersuchen. Die Probleme, die sie zu analysieren versuchen, involvieren sowohl Software- als auch Netzwerk-Verhalten von tausend oder mehr Nodes und wie sich dieses Verhalten über die Zeit entwickelt. Netzwerksimulation wird verwendet, um Erreichbarkeit und Funk-Netzwerktopologien nachzubilden.

Die Simulation wird zum Zweck der Skalierbarkeit über viele Multicore-Hosts verteilt. Durch den Einsatz von Hypersimulation ist es möglich, die Stabilität über Wochen oder Monate zu testen, ohne echte Wochen oder Monate warten zu müssen. Da man die echte Hardware simuliert und die reale Software nutzt, lassen sich Software-Probleme wie überlaufende Zähler und Knoten, die fehlerhafte Zustände über die Zeit akkumulieren, erfassen.

Für die finalen Systemtests werden letztlich physikalische Labors gebraucht. Denn man muss das testen, was man liefert und das liefern, was man testet. Trotzdem ist die Simulation notwendig, um über physikalische Testlabors hinauszugehen, mehr Testfälle abzudecken und mehr Testvarianten zu nutzen. Das stellt sicher, dass die Qualität erhalten bleibt und das System sich über eine Reihe von Situationen robust verhält. Fazit: Mit Simulation kann man bessere IoT-Systeme auf eine bessere Art und Weise entwickeln.

* Jakob Engblom ist Product Line Manager für Simics-Tools bei Wind River.

Artikelfiles und Artikellinks

(ID:43361104)