Artillery-Lasttests: das Node.js-Tool im Überblick
6 Min. Lesezeit
Artillery ist ein Open-Source-Lasttest-Tool, das auf Node.js läuft und jeden Test als YAML-, TypeScript- oder JavaScript-Datei beschreibt. Ein Artillery-Lasttest passt zu Teams, die im JavaScript-Umfeld arbeiten, neue Benutzer mit fester Rate eintreffen lassen wollen oder Browsertests mit Playwright im selben Tool möchten. Wer ein einzelnes Binary ohne Laufzeitumgebung will, ist mit k6 besser bedient, und wer viele Protokolle ab Werk braucht, mit JMeter.
Wir haben Artillery für dieses Review nicht selbst ausgeführt. Die Fakten stammen aus der Dokumentation, dem Repository, dem npm-Paket und der Preisseite von Artillery, geprüft am 19. Oktober 2026; die Einschätzungen sind unsere eigenen.
| Thema | Artillery |
|---|---|
| Lizenz | MPL-2.0; einige Azure-Module unter BSL |
| Laufzeit | Node.js, aktuelle LTS (Paket verlangt 22.18.0 oder neuer) |
| Aktuelle Version | 2.0.34 (14. August 2026) |
| Tests als | YAML, TypeScript oder JavaScript |
| Lastmodell | Neue virtuelle Benutzer pro Sekunde, in Phasen |
| Eingebaute Engines | HTTP, WebSocket, Socket.IO, Playwright |
| Pass/Fail-Checks | Plugin ensure, Exit-Code ungleich null |
| Skalierung | run-lambda, run-fargate, run-aci |
| Gehostete Berichte | Artillery Cloud, optional, mit Gratisstufe |
Wer entwickelt Artillery, und wie ist es lizenziert?
Artillery Software Inc. pflegt es auf GitHub. Der größte Teil des Codes steht unter MPL-2.0, die kommerzielle Nutzung erlaubt; einige Azure-spezifische Module stehen unter der Business Source License.
Das README des Repositorys erlaubt die Nutzung von Artillery auf Azure für Evaluierung und Proof of Concept und verlangt für kommerzielle oder produktive Nutzung dort eine kommerzielle Lizenz. Die neueste Version ist 2.0.34, am 14. August 2026 auf npm erschienen, und die Paketmetadaten verlangen Node.js 22.18.0 oder neuer; die Installationsanleitung empfiehlt die aktuelle LTS-Version (geprüft am 19. Oktober 2026).
Wie funktioniert ein Artillery-Testskript?
Ein Skript hat zwei Teile: config mit Ziel, Lastphasen und Plugins, und scenarios mit dem, was jeder virtuelle Benutzer tut. Sie können es in YAML schreiben oder config und scenarios aus einer TypeScript- oder JavaScript-Datei exportieren.
Dieser Test steigert in zwei Minuten von 5 auf 50 neue Benutzer pro Sekunde, hält zehn Minuten lang 50 pro Sekunde und scheitert, wenn das 99. Perzentil der Antwortzeit 800 ms erreicht:
config:
target: https://staging.example.com
phases:
- duration: 120
arrivalRate: 5
rampTo: 50
name: ramp
- duration: 600
arrivalRate: 50
name: sustain
plugins:
ensure:
thresholds:
- http.response_time.p99: 800
scenarios:
- name: browse and add to cart
flow:
- get:
url: /products
- think: 2
- post:
url: /cart
json:
sku: A-100
Laut Referenz zum Testskript gibt es vier Phasentypen: eine konstante Ankunftsrate, eine lineare Rampe mit rampTo, eine feste Zahl von Ankünften (arrivalCount) über einen Zeitraum und eine pause. Eigener Code über config.processor kann lokal und auf Fargate ein TypeScript-Modul sein, auf Lambda aber nicht (geprüft am 19. Oktober 2026).
Welches Lastmodell nutzt Artillery?
Artillery startet neue virtuelle Benutzer mit der Rate, die Sie festlegen, egal ob frühere Benutzer fertig sind. Das ist ein offenes Lastmodell, das die Ankünfte konstant hält, auch wenn das System langsamer wird.
Jeder neue Benutzer wählt ein Szenario, durchläuft es und geht, ein langsames System sammelt also Benutzer an, wie es echter Verkehr täte. maxVusers begrenzt die Zahl gleichzeitiger Benutzer in einer Phase, falls Sie den Lastgenerator schützen müssen. Unser Artikel zum offenen vs geschlossenen Lastmodell erklärt den Unterschied, und Little’s Law zeigt, wie Ankunftsrate und Antwortzeit die Zahl gleichzeitiger Benutzer bestimmen.
Welche Protokolle und Browser kann es testen?
HTTP ist der Standard, WebSocket, Socket.IO und Playwright sind eingebaut. gRPC und AWS Kinesis brauchen separat installierte Engines.
Die Seite zu den Engines beschreibt das Modell: Jedes Szenario läuft auf einer Engine, und Sie können eigene schreiben. Auf npm steht artillery-engine-grpc bei 0.0.9 und artillery-engine-kinesis bei 1.1.1, beide unter MPL-2.0. Die Playwright-Engine führt Ihren Playwright-Code in echten Headless-Browsern aus und meldet Web Vitals wie TTFB, FCP und LCP pro Seite. Die Dokumentation warnt, dass ein eigener Browser pro Benutzer statt eines Browser-Kontexts deutlich mehr CPU und Speicher braucht (geprüft am 19. Oktober 2026). Unsere Übersicht der WebSocket-Lasttest-Tools stellt Artillery neben andere Optionen für Echtzeit-Apps.
Wie passt es in CI?
Das Plugin ensure macht aus Metriken Pass/Fail-Checks, und ein fehlgeschlagener Check lässt Artillery mit einem Exit-Code ungleich null enden. Das genügt jedem CI-System, um den Build scheitern zu lassen.
Die Referenz zu ensure bietet zwei Arten von Checks: thresholds, bei denen eine Metrik unter einem Wert bleiben muss, und conditions, die Metriken in einem Ausdruck wie http.response_time.p95 < 250 and http.request_rate > 1000 kombinieren. Eine Bedingung mit strict: false meldet nur, ohne zu scheitern. Das Apdex-Plugin ergänzt bei HTTP-Tests einen Apdex-Score mit einer Standardschwelle von 500 ms (geprüft am 19. Oktober 2026); unser Artikel zum Apdex-Score erklärt, wie man ihn liest. Für eine Workflow-Datei siehe unseren Leitfaden zu Lasttests in GitHub Actions.
Wie skaliert man einen Artillery-Test?
Von der Kommandozeile aus, im eigenen Cloud-Konto: run-lambda und run-fargate auf AWS, run-aci auf Azure Container Instances. Artillery legt die Ressourcen an, die der Lauf braucht, und entfernt die temporären danach.
Die Fargate-Anleitung listet die beteiligten Ressourcen und IAM-Berechtigungen. Die Lambda-Anleitung nennt ihre Grenzen: Ein Test kann nicht länger als 15 Minuten laufen, ein laufender Test lässt sich nicht stoppen, und before- und after-Hooks laufen einmal pro Worker. Die Azure-Anleitung verlangt Artillery 2.0.19 oder neuer und außerhalb einer Evaluierung ein Abonnement (geprüft am 19. Oktober 2026).
LoadFocus, der Herausgeber dieser Website, führt keine Artillery-Skripte aus. LoadFocus führt JMeter-Testpläne und k6-Skripte aus 25 Cloud-Regionen aus, für Artillery sind also die Befehle oben der Weg zum Skalieren.
Was kostet Artillery Cloud?
Das Dashboard ist optional: Ergebnisse landen nur dort, wenn Sie mit --record und einem API-Schlüssel starten. Die Pläne reichen von einer Gratisstufe bis 499 $ im Monat.
Die Preisseite nennt (geprüft am 19. Oktober 2026):
- Free: 30 Berichte im Monat, 1 Monat Aufbewahrung, 2 Teammitglieder, verteilte Tests mit bis zu 5 Workern und 30 Minuten.
- Team, 199 $ im Monat: 1.000 Berichte, 6 Monate, 8 Mitglieder, bis zu 25 Worker und 2 Stunden.
- Business, 499 $ im Monat: 2.500 Berichte, 18 Monate, keine Grenze bei Mitgliedern, Workern oder Dauer.
Enterprise-SSO, Audit-Logs und Support-SLAs beginnen bei 1.199 $ im Monat, und jährliche Abrechnung spart 20 %.
Was kann Artillery gut, und wo liegen seine Grenzen?
Stark ist es bei Last mit fester Ankunftsrate, kurzen lesbaren Skripten und Browsertests mit Playwright. Schwächer ist es, wenn Sie ein einzelnes Binary, viele Protokolle ohne Zusätze oder Azure ohne Lizenz brauchen.
Als Node.js-Tool kann es in eigenen Funktionen jedes npm-Modul nutzen, um den Preis einer weiteren Laufzeitumgebung auf jeder Testmaschine. Grenzen, die die Dokumentation selbst nennt:
- Lambda-Läufe enden nach 15 Minuten und lassen sich nicht abbrechen.
- Eigener Code in TypeScript (
config.processor) läuft nicht auf Lambda. - gRPC und Kinesis sind separate Engines.
- Produktive Nutzung auf Azure erfordert eine kommerzielle Lizenz.
Wann sollten Sie stattdessen k6, JMeter oder Locust wählen?
Wählen Sie ein anderes Tool, wenn dessen Laufzeit, Protokolle oder Sprache besser zu Ihrem Team passen.
Wählen Sie stattdessen k6, wenn Sie ein Go-Binary ohne Node.js und Schwellenwerte im Skript wollen. Unser Vergleich k6 vs Artillery stellt beide nebeneinander. LoadFocus führt k6-Skripte aus 25 Cloud-Regionen aus, fährt Arrival-Rate-Szenarien aber mit einer festen Zahl von Benutzern; für eine gehaltene Ankunftsrate führen Sie sie mit k6 selbst aus.
Wählen Sie stattdessen JMeter, wenn Sie JDBC, JMS, LDAP oder FTP ab Werk brauchen oder wenn Ihre Tester Tests lieber in einer GUI erstellen.
Wählen Sie stattdessen Locust, wenn Ihr Team Python schreibt; unser Locust-Review behandelt es. Die Übersicht der Open-Source-Lasttest-Tools stellt alle nebeneinander.
FAQ
Ist Artillery für kommerzielle Nutzung kostenlos? Die CLI steht größtenteils unter MPL-2.0, die kommerzielle Nutzung erlaubt. Die Ausnahme ist Azure: Kommerzielle oder produktive Nutzung der Azure-Module erfordert eine kommerzielle Lizenz.
Kann Artillery Browsertests ausführen? Ja. Die eingebaute Playwright-Engine führt Ihren Playwright-Code in Headless-Browsern aus und meldet Web Vitals für jede Seite.
Kann LoadFocus Artillery-Skripte ausführen?
Nein. LoadFocus führt JMeter-Testpläne und k6-Skripte aus. Um einen Artillery-Test zu skalieren, nutzen Sie run-lambda, run-fargate oder run-aci.
Weiterlesen
- k6 vs Artillery: welches Lasttest-Tool passt zu Ihrem Team?
- Open-Source-Lasttest-Tools: sechs Optionen im Überblick
- Offenes vs geschlossenes Lastmodell: welches passt wann?
- WebSocket-Lasttest-Tools: sechs Optionen im Vergleich
- Apdex-Score: was er bedeutet und wie man ihn berechnet
Die technischen Aussagen in diesem Artikel wurden nicht unabhängig geprüft.