Broker-Tests

MQTT mit Postman testen

Mit dem MQTT-Request von Postman einen Broker verbinden, Topics abonnieren und Nachrichten publizieren — plus Grenzen und wann ein anderes Tool besser passt.

Aktualisiert · 7 Min. Lesezeit

MQTT mit Postman testen

Ja, du kannst MQTT mit Postman testen: neuen Request anlegen, MQTT wählen, Broker-URL eintragen, verbinden, Topics zum Abonnieren hinzufügen und Nachrichten im Composer publizieren. Das ist praktisch, um einen Broker anzutesten, wenn Postman ohnehin dein API-Werkzeug ist — aber es ist ein manueller Client, kein automatisierter MQTT-Test-Runner. Dieser Guide zeigt den Ablauf, die Einstellungen, an denen man hängen bleibt, und wo Postman nicht mehr das richtige Werkzeug ist.

Einen MQTT-Request anlegen

  1. Klicke in Postman auf New (oder das + neben den Tabs) und wähle MQTT.
  2. Trage im URL-Feld die Broker-Adresse mit Schema und Port ein, zum Beispiel mqtt://broker.connectmq.com:1883.
  3. Öffne die Request-Einstellungen und setze eine Client-ID, wenn du eine vorhersehbare willst; sonst erzeugt Postman eine.
  4. Verlangt dein Broker Authentifizierung, trage Benutzername und Passwort ein (nutze Variablen wie {{mqtt_user}} und {{mqtt_pass}} aus einem Environment, statt Secrets in den Request zu tippen).
  5. Klicke auf Connect. Der Nachrichtenbereich zeigt das Verbindungsereignis oder einen Fehler, falls der Broker ablehnt.

Die Protokollversion (3.1, 3.1.1 oder 5) wählst du in den Request-Einstellungen. Mit MQTT 5 bekommst du zusätzlich Felder für Connect-Properties und User Properties bei publizierten Nachrichten.

EinstellungUnverschlüsseltes TCPTLS
URL-Schemamqtt://mqtts://
Port bei ConnectMQ18838883
Zertifikate—Öffentliche CA funktioniert direkt; für private CAs eine CA-Datei in Postmans Zertifikatseinstellungen hinterlegen

Unsicher, welchen Port dein Broker nutzt? MQTT-Ports erklärt behandelt 1883, 8883, 8083/8084 und die Alternativen hinter Proxys.

Topics abonnieren

Wechsle in den Bereich Topics des Requests, füge einen Topic-Filter hinzu und wähle einen QoS. Wildcards funktionieren wie gewohnt — testmqtt/postman/# empfängt alles unter diesem Präfix, testmqtt/postman/+/status eine Ebene von Geräten. Eingehende Nachrichten erscheinen in der Liste mit Topic, Zeit und Payload; JSON-Payloads lassen sich aufklappen.

Nutze beim Testen ein eindeutiges Präfix. Auf einem geteilten Endpoint zeigt dir ein Abo auf # oder einen generischen Namen wie test/# den Traffic anderer Leute, und deinen eigenen findest du kaum noch. Wenn ein Filter nicht wie erwartet matcht, füge ihn zusammen mit dem Ziel-Topic in den Topic Matcher ein.

Nachrichten publizieren

Der Composer unten im Request publiziert jeweils auf ein Topic:

  • Topic: zum Beispiel testmqtt/postman/device-1/telemetry
  • Payload: Text oder JSON wie {"temp": 21.5, "unit": "C"}
  • QoS: 0, 1 oder 2
  • Retain: an, wenn neue Abonnenten sofort den letzten Wert bekommen sollen

Gespeicherte Nachrichten helfen bei wiederholten Checks — leg dir "einschalten", "ausschalten" und "fehlerhafter Payload" im selben Request an und schicke sie nacheinander ab. Da der Request selbst abonniert ist, siehst du deine eigenen Nachrichten ankommen und hast damit den Round Trip über den Broker bestätigt.

Ein nützlicher Hybrid: HTTP rein, MQTT raus

Postman glänzt, wenn dein System HTTP und MQTT mischt. Öffne zwei Tabs:

  1. Einen MQTT-Request, der das Topic abonniert, auf das dein Backend publiziert, z. B. testmqtt/postman/orders/#.
  2. Einen HTTP-Request, der deine API aufruft — POST /orders, einen Webhook, einen Endpoint für Gerätebefehle.

Sende den HTTP-Request und beobachte den MQTT-Tab: Du siehst, ob das Backend publiziert hat, auf welches Topic, mit welchem Payload und Retain-Flag. Das ist der schnellste manuelle Check für "die API liefert 200, aber das Gerät reagiert nie".

Fehlersuche bei Postman-MQTT-Verbindungen

SymptomWahrscheinliche UrsacheLösung
Connect dreht sich, dann TimeoutPort durch Firewall oder Proxy blockiert, oder TLS-Port mit mqtt://mqtts:// mit 8883 nutzen; Erreichbarkeit mit Port-Checks prüfen
Connection refused: not authorizedFalscher Benutzername/Passwort, oder der Broker verlangt ZugangsdatenPrüfen, ob die Environment-Variablen tatsächlich auf den Request angewendet werden
Verbunden, dann sofort getrenntEin anderer Client nutzt dieselbe Client-IDPostman die ID erzeugen lassen oder ein zufälliges Suffix anhängen
TLS-/ZertifikatsfehlerBroker nutzt eine private CA oder ein selbstsigniertes ZertifikatCA in Postmans Zertifikatseinstellungen hinterlegen, statt nur die Prüfung abzuschalten
Abonniert, aber keine NachrichtenTippfehler im Topic, Groß-/Kleinschreibung oder ACL verweigert das AboFilter und Topic im Topic Matcher vergleichen

Reason Codes des Brokers (zum Beispiel 0x87 Not authorized in MQTT 5) schlägst du im MQTT-Reason-Code-Tool nach.

Grenzen, die du kennen solltest

Die MQTT-Unterstützung in Postman ist zum Erkunden gedacht, nicht zur Testautomatisierung. Zum Zeitpunkt des Schreibens gilt:

  • Keine Testskripte. HTTP-Requests können pm.test-Assertions ausführen; MQTT-Requests können eingehende Nachrichten nicht prüfen.
  • Kein Collection Runner, kein Newman. MQTT-Requests lassen sich in Collections speichern, aber nicht mit Newman in der CI ausführen.
  • Eine Verbindung pro Tab. Zehn Geräte simulieren heißt zehn Tabs — oder ein anderes Tool.
  • Desktop-orientiert. Nicht-HTTP-Protokolle in der Browser-Version von Postman können den Postman Desktop Agent erfordern.

Postman entwickelt sich schnell weiter, also prüfe die Dokumentation deiner Version. Brauchst du heute etwas davon, nimm ein Tool, das es nativ kann.

Alternativen zum Testen von MQTT

ToolAm besten für
Online-MQTT-ClientOhne Installation, verbindet sich über sichere WebSockets aus jedem Browser
MQTTXDesktop-Client mit mehreren Verbindungen, Scripting und MQTT-5-Properties
MQTT ExplorerDen gesamten Topic-Baum und Retained Messages durchsuchen
mosquitto_pub / mosquitto_subShell-Skripte und CI-Checks
Ein Testskript (Python, Node, Go …)Automatisierte Assertions in deiner Test-Suite

Für einen CI-tauglichen Check, den Postman nicht kann, reichen zwei mosquitto-Befehle:

Automatisierter Round Trip mit den mosquitto-Clients
TOPIC="testmqtt/postman/ci-$RANDOM"
mosquitto_sub -h broker.connectmq.com -p 1883 -t "$TOPIC" -C 1 -W 10 > out.txt &
sleep 1
mosquitto_pub -h broker.connectmq.com -p 1883 -t "$TOPIC" -m '{"ok":true}' -q 1
wait
grep -q '"ok":true' out.txt && echo "PASS" || { echo "FAIL"; exit 1; }

-C 1 beendet nach einer Nachricht und -W 10 scheitert nach zehn Sekunden, das Skript hängt also nie. Weitere Muster findest du in den Beispielen zu mosquitto_pub und mosquitto_sub, und die besten MQTT-Client-Tools vergleicht die GUI-Optionen ausführlich.

Mit dem Browser-MQTT-Client vergleichen

Der MQTT-Request von Postman ist ein gutes manuelles Werkzeug, wenn dein Team ohnehin in Postman arbeitet — vor allem, um zu prüfen, dass HTTP-Aktionen die richtigen MQTT-Nachrichten erzeugen. Für alles Wiederholbare — Regressionstests, Last, viele simulierte Geräte — verschiebe dieselben Checks in Skripte oder einen dedizierten MQTT-Client und nutze Postman zum Erkunden.

Häufig gestellte Fragen

Unterstützt Postman MQTT?

Ja. Aktuelle Postman-Versionen haben einen MQTT-Request-Typ neben HTTP, WebSocket und gRPC. Er verbindet sich mit einem Broker, abonniert Topics, publiziert Nachrichten mit QoS und Retain und unterstützt MQTT 3.1, 3.1.1 und 5.

Kann ich MQTT-Tests mit Postman oder Newman automatisieren?

Nicht so wie HTTP-Requests. Zum Zeitpunkt des Schreibens führen MQTT-Requests keine Testskripte aus und laufen weder im Collection Runner noch in Newman. Für automatisierte MQTT-Tests nimmst du ein Skript mit einer MQTT-Bibliothek oder mosquitto_pub und mosquitto_sub in der CI.

Warum verbindet sich Postman nicht mit meinem MQTT-Broker?

Prüfe zuerst Schema und Port: mqtt:// mit Port 1883 für unverschlüsseltes TCP, mqtts:// mit Port 8883 für TLS. Ein TLS-Port mit mqtt://, eine Firewall vor dem Port, falsche Zugangsdaten oder eine doppelte Client-ID sind die üblichen Ursachen. Teste dieselben Einstellungen im Online-MQTT-Client, um Postman auszuschließen.