TL;DR
Newman, der offizielle CLI-Runner von Postman, benötigt npm und Node.js in Ihrer CI-Pipeline. Dies birgt Risiken für die Lieferkette, erhöht den Aufwand für die Abhängigkeitsverwaltung, und im kostenlosen Tarif von Postman sind Sammlungsdurchläufe über die API jetzt ratenbegrenzt. Dieser Leitfaden behandelt drei Alternativen zum Ausführen von API-Tests in CI ohne Newman: Apidogs CLI-Runner, k6 und Hurl. Apidog ist der direkteste Weg, wenn Sie bereits Postman-Sammlungen besitzen, da es diese nativ importiert und keine Beschränkungen pro Durchlauf hat.
Einleitung
Newman war eine gute Idee. Ein CLI-Tool, das Postman-Sammlungen in CI-Pipelines ausführt, machte API-Tests portabel und automatisierbar. Es wurde mit Postmans Markenvertrauen ausgeliefert, ließ sich über eine beliebte Community-Aktion in GitHub Actions integrieren und funktionierte gut genug, dass viele Teams ihre gesamte API-Testautomatisierungsstrategie darauf aufbauten.
Dann traten drei Probleme auf.
Erstens ist Newman ein npm-Paket. Jede Pipeline, die es verwendet, zieht zur Build-Zeit aus dem npm-Register. Die `ua-parser-js`-Kompromittierung von 2021 und der `node-ipc`-Vorfall von 2022 zeigten, dass npm-Lieferkettenangriffe nicht theoretisch sind. Sicherheitsteams begannen zu fragen, warum die API-Testschicht überhaupt npm benötigte.
Zweitens begann Postman, die Sammlungsdurchläufe in den kostenlosen und grundlegenden kostenpflichtigen Tarifen zu begrenzen. Teams, die sich darauf verließen, Sammlungen über die Postman-API als Teil ihrer CI auszuführen, stießen auf Quoten und mussten entweder ihre Tarife upgraden oder ihre Pipelines neu gestalten.
Drittens hat sich das Wartungstempo von Newman verlangsamt. Probleme bleiben monatelang auf GitHub offen. Einige neuere Postman-Scripting-APIs haben in Newman eine inkonsistente Unterstützung.
Das Ergebnis: Entwickler, die CI-Pipelines auf Newman aufgebaut haben, suchen nun nach Alternativen. Hier sind die verfügbaren Optionen.
Option 1: Apidog CLI (empfohlen für Postman-Sammlungsbenutzer)
Der CLI-Runner von Apidog ist der funktionell ähnlichste Ersatz für Newman, wenn Sie bereits in Postman-Sammlungen investiert sind.
Was es unterstützt
- Postman Collection v2 und v2.1 Format
- Postman-Umgebungen (JSON-Export)
pm.test,pm.expect,pm.environment.set,pm.collectionVariables.set- Pre-request- und Post-request-Skripte
- Datengesteuertes Testen über CSV- und JSON-Datendateien
- JUnit XML- und JSON-Ausgabe für CI-Berichte
Kein npm erforderlich. Der Apidog CLI wird als eigenständiges Binärprogramm verteilt. Sie laden es einmal herunter, fügen es Ihrem PATH hinzu, und es läuft.
Keine Beschränkungen pro Durchlauf. Apidog begrenzt die Sammlungsdurchläufe in keinem Tarif. Eine Pipeline, die 500 Sammlungen pro Tag ausführt, funktioniert genauso wie eine, die 5 ausführt.
Installation
Laden Sie die CLI-Binärdatei für Ihre Plattform von apidog.com/cli herunter oder verwenden Sie den Shell-Installer:
# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh
# Verify
apidog --version
Für Docker-basierte CI-Runner bietet Apidog ein offizielles Image an:
FROM apidog/cli:latest
Ausführen einer Postman-Sammlung
Exportieren Sie Ihre Sammlung aus Postman (Datei > Exportieren > Sammlung v2.1) und Ihre Umgebung (Umgebungen verwalten > Exportieren).
Dann ausführen:
apidog run collection.json \
--environment environment.json \
--reporter-junit results.xml
GitHub Actions Beispiel
name: API Tests
on: [push, pull_request]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Apidog CLI
run: curl -sSf https://apidog.com/cli/install.sh | sh
- name: Run API tests
run: |
apidog run ./tests/collection.json \
--environment ./tests/env.json \
--reporter-junit test-results.xml
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: api-test-results
path: test-results.xml
Kein npm install, keine package.json, keine Node.js-Versionsmatrix. Der Job läuft schneller und die Abhängigkeitsoberfläche ist kleiner.
GitLab CI Beispiel
api-tests:
image: apidog/cli:latest
script:
- apidog run ./tests/collection.json
--environment ./tests/env.json
--reporter-junit test-results.xml
artifacts:
reports:
junit: test-results.xml
Option 2: k6
k6 ist ein Lasttest-Tool von Grafana Labs, das auch funktionale API-Tests durchführt. Es ist erwähnenswert, weil es hervorragend für Performance-Tests neben funktionalen Überprüfungen geeignet ist.
Was es unterstützt
- HTTP/1.1, HTTP/2, WebSocket, gRPC
- JavaScript-Testskripte (ES6+)
- Schwellenwerte für Performance-Assertions
- Ausgabe an InfluxDB, Prometheus, Datadog
Was es nicht unterstützt
- Natives Postman-Sammlungsformat. Sie können Postman-Sammlungen mit dem
postman-to-k6-Konverter in k6-Skripte umwandeln, aber die Ausgabe erfordert oft eine manuelle Bereinigung, insbesondere bei komplexen Skripten. - Postmans
pm.*API nativ. Die Konvertierungsschicht emuliert sie, aber mit Lücken.
Wann man k6 wählen sollte
Wenn Sie funktionale Tests mit Performance-Tests in derselben Pipeline kombinieren müssen – zum Beispiel die Überprüfung der API-Korrektheit unter Last –, ist k6 die Migrationskosten wert. Wenn Sie Newman nur für funktionale Tests ersetzen möchten, ist Apidog schneller einzurichten.
Grundlegende k6-Nutzung in CI
# Install (Linux)
sudo apt-get install k6
# Run a test script
k6 run api-tests.js
k6 CI gibt Pass/Fail basierend auf den Schwellenwertdefinitionen in Ihrem Skript aus. JUnit XML-Ausgabe ist über das k6-reporter-Paket verfügbar.
Option 3: Hurl
Hurl ist ein Open-Source-HTTP-Testwerkzeug, geschrieben in Rust. Es ist schnell, hat keine Laufzeitabhängigkeiten und verwendet eine Klartext-DSL zur Definition von Anfragen und Assertions.
Was es unterstützt
- HTTP/1.1 und HTTP/2
- JSON-, XPath- und Regex-Assertions
- Variablen und Verkettung von Anfragen
- HTML-, JUnit- und JSON-Ausgabe
Was es nicht unterstützt
- Postman-Sammlungsformat. Hurl verwendet sein eigenes
.hurl-Dateiformat. Es gibt keinen automatisierten Konverter. - JavaScript-Testskripte. Assertions sind deklarativ, nicht programmatisch.
Wann man Hurl wählen sollte
Wenn Sie bereit sind, Ihre Tests in Hurls DSL neu zu schreiben, erhalten Sie ein bemerkenswert kleines Binärprogramm ohne Laufzeit. Das Binärprogramm ist eine einzelne 10 MB große Datei. Hurl ist eine gute Wahl für neue Projekte, bei denen Sie keine Postman-Sammlungsaltlasten mit sich führen.
Einfaches Hurl-Testbeispiel
GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
Hurl in GitHub Actions
- name: Install Hurl
run: |
curl -LO https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-x86_64-unknown-linux-gnu.tar.gz
tar -xf hurl-*.tar.gz
sudo mv hurl /usr/local/bin/
- name: Run API tests
run: hurl --test tests/*.hurl
Vergleich der drei Optionen
| Funktion | Apidog CLI | k6 | Hurl |
|---|---|---|---|
| Postman-Import | Nativ | Konverter (verlustbehaftet) | Nein |
| npm-Abhängigkeit | Nein | Nein | Nein |
| JavaScript-Skripting | Ja (pm.* API) | Ja (ES6) | Nein (nur DSL) |
| Performance-Tests | Nein | Ja | Nein |
| Binärgröße | ~50 MB | ~30 MB | ~10 MB |
| Kostenlose Laufzeitbeschränkungen | Keine | Keine | Keine |
| JUnit-Ausgabe | Ja | Via Plugin | Ja |
Migration von Newman: Praktische Schritte
Wenn Sie eine bestehende Newman-basierte Pipeline haben, finden Sie hier den Migrationspfad zum Apidog CLI:
Exportieren Sie Ihre Sammlungen. Klicken Sie in Postman mit der rechten Maustaste auf jede Sammlung und exportieren Sie sie als v2.1. Exportieren Sie Ihre Umgebungen separat.
Installieren Sie Apidog CLI. Fügen Sie den Installationsschritt zu Ihrer CI-Konfiguration hinzu.
Ersetzen Sie den Newman-Befehl. Ein typischer Newman-Befehl sieht wie folgt aus:
newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
Das Apidog-Äquivalent:
apidog run collection.json --environment environment.json --reporter-junit results.xml
Die Flag-Struktur ist absichtlich ähnlich.
Skriptkompatibilität prüfen. Führen Sie Ihre Sammlung lokal mit Apidog CLI aus, bevor Sie die CI-Änderung committen. Die meisten pm.*-Skripte laufen ohne Änderungen. Skripte, die pm.require zum Laden externer Module verwenden, müssen angepasst werden.
Entfernen Sie Node.js aus Ihrer CI-Konfiguration. Wenn Newman der einzige Grund war, warum Node.js in Ihrer Pipeline auftauchte, können Sie den Node.js-Setup-Schritt und den npm install-Schritt vollständig entfernen.
FAQ
Ist Newman offiziell veraltet?Nein, Anfang 2026 wird Newman immer noch von Postman gewartet. Das Wartungstempo ist jedoch langsam und mehrere offene Probleme beeinflussen reale Anwendungsfälle. Es wird nicht so schnell verschwinden, aber der Aufbau neuer Pipelines darauf birgt ein zunehmendes Risiko.
Benötigt Apidog CLI ein Apidog-Konto?Für die Ausführung lokal exportierter Sammlungen, nein. Für die Synchronisierung von Sammlungen aus einem Apidog-Arbeitsbereich, ja. Wenn Sie von Postman migrieren, können Sie rein aus exportierten JSON-Dateien ausführen.
Kann Apidog CLI datengesteuerte Tests ausführen?Ja. Übergeben Sie eine CSV- oder JSON-Datendatei mit dem Flag --iteration-data. Dies entspricht Newmans -d-Flag für datengesteuerte Iterationen.
Was ist das Lieferkettenrisiko bei npm-basierten Runnern?Jedes Paket, das zur CI-Zeit von npm gezogen wird, ist eine potenzielle Angriffsfläche. Kompromittierte Pakete können Umgebungsvariablen exfiltrieren, was im CI-Kontext API-Schlüssel und Tokens einschließt. Ein Binär-Runner, der über HTTPS heruntergeladen und an eine Prüfsumme gebunden ist, vermeidet diese Art von Risiko.
Unterstützt k6 gRPC-Tests?Ja. k6 bietet native gRPC-Unterstützung, was es zu einem der wenigen Open-Source-Tools macht, das sowohl REST als auch gRPC in derselben Testsuite verarbeitet. Wenn Ihre API-Oberfläche gRPC-Endpunkte enthält, ist k6 eine Evaluierung wert.
Unterstützt Hurl Authentifizierungs-Header?Ja. Hurl unterstützt benutzerdefinierte Header, einschließlich Authorization, Bearer und Cookie-basierte Authentifizierung. Variablen ermöglichen es Ihnen, Geheimnisse aus Umgebungsvariablen zur Laufzeit einzuschleusen.
Newmans Ära als Standardwahl für API-Tests in CI geht zu Ende. Die Risiken in der Lieferkette sind real, die Einschränkungen der kostenlosen Tarife haben die Berechnung für viele Teams verändert, und es gibt jetzt bessere Alternativen. Die Migration zu einer Newman-freien Pipeline ist unkompliziert, insbesondere wenn Sie mit Ihren bestehenden Postman-Sammlungen zum Apidog CLI wechseln.
