© Enkel/Shutterstock.com
Automatisiertes Testen von MQTT-Applikationen

HiveMQ vorgestellt


In einem Großteil der IoT-Anwendungsfälle wird die Kommunikation zwischen Geräten mit dem MQTT-Protokoll realisiert. Typische Anwendungen sind beispielsweise Steuergeräte, Gateways, mobile Geräte, Backend-Systeme und eine Vielzahl weiterer Microservices. In Einsatzgebieten mit großen IoT-Netzwerken sind die Anforderungen an die Softwarequalität der MQTT-Applikationen besonders hoch, da sich hier Fehler katastrophal auswirken können. Automatisierte Softwaretests sind ein fundamentaler Teil davon, diese hohe Qualität zu garantieren, da Fehler in der Implementierung schnell erkannt und behoben werden können. Die HiveMQ-Testcontainer-Bibliothek wurde geschaffen, um MQTT-Anwendungen in einer isolierten Umgebung testen zu können.

Prinzipiell unterscheidet das MQTT-Protokoll zwischen zwei Rollen: dem MQTT-Client und dem MQTT Broker. Der Broker ist die zentrale Komponente des Netzwerks, über den alle Clients Nachrichten austauschen. Das zugrundeliegende Publish/Subscribe-Prinzip von MQTT ist unkompliziert und einfach zu verstehen. Durch die große Beliebtheit und Community von MQTT existiert für jede gängige Programmiersprache eine Vielzahl an bewährten und gut dokumentierten MQTT-Client-Bibliotheken. Das Implementieren einer MQTT-Client-Applikation gestaltet sich dementsprechend einfach. Schwieriger ist es jedoch, sicherzustellen, dass diese MQTT-Applikationen auch wie gewünscht funktionieren.

Ein erster Ansatz dafür ist das manuelle Testen: Durch manuelles Ausprobieren, Anpassen des Quellcodes und erneutes Ausprobieren entsteht nach und nach eine funktionierende Anwendung. Diese Vorgehensweise hat erkennbare Nachteile. Bei jeder Änderung an der Codebasis müssen alle Tests wiederholt werden. Das ist nicht nur zeitaufwendig und deshalb kostspielig, sondern auch fehleranfällig. Häufig werden Testfälle bei einer manuellen Ausführung vergessen oder unvollständig behandelt. Aus diesen Gründen ist automatisiertes Testen einer MQTT-Anwendung sehr wichtig. Ist ein automatisierter Test einmal geschrieben, kann dieser ohne großen Aufwand beliebig oft wiederholt werden.

Neben Unit-Tests, die die korrekte Funktionsweise einzelner Komponenten der MQTT-Anwendung automatisiert prüfen, empfiehlt es sich, die Applikation auch in ihrer Gänze, das heißt im Zusammenspiel mit einem MQTT Broker zu testen. Um das in einem automatisierten Integrationstest umzusetzen, musste bisher eine MQTT-Broker-Testinstanz eines bereitgestellt werden. Diese Testinstanz ist in der Regel eine vollwertige Installation eines MQTT Brokers. Dadurch ergeben sich folgende Herausforderungen:

  • Testinterferenz: Werden mehrere Tests gleichzeitig ausgeführt, die mit demselben MQTT Broker interagieren, führt das häufig zu unerwartetem und schwer nachvollziehbarem Verhalten.

  • Testergebnisse sind direkt von der Erreichbarkeit des Brokers abhängig: Ist der Test-Broker nicht erreichbar, schlagen auch die Tests fehl.

  • Betriebskosten des Brokers: Der Test-Broker muss durchgehend betrieben werden. Das resultiert in Arbeits- und Ressourcenaufwand für die benötigte Infrastruktur.

Um diesen auftretenden Schwierigkeiten vorzubeugen, wurde die HiveMQ-Testcontainer-Bibliothek entwickelt, die mit Hilfe von Docker exklusiv für jeden Integrationstest automatisiert einen MQTT Broker startet. Die entsprechenden Container werden vor der Testausführung gestartet und nach dem Test wieder zerstört. Für möglichst flexible und umfassende Integrationstests mit einem HiveMQ Broker w...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang