Vergleiche

k6 vs Artillery: welches Lasttest-Tool passt zu Ihrem Team?

5 Min. Lesezeit

k6 und Artillery sind beide quelloffene Lasttest-Tools, bei denen Tests als Code entstehen, und beide testen eine HTTP-API zuverlässig unter Last. Nehmen Sie k6, wenn Sie ein einzelnes Binary, Testlogik in JavaScript und eingebaute Pass/Fail-Schwellenwerte wollen. Nehmen Sie Artillery, wenn Ihr Team ohnehin mit Node.js arbeitet, kurze YAML-Szenarien bevorzugt oder Playwright-Browsertests und verteilte Läufe auf AWS oder Azure direkt von der Kommandozeile braucht.

Die folgenden Fakten stammen aus der Dokumentation und den Repositories der beiden Projekte, geprüft am 8. Oktober 2026.

k6Artillery
LizenzAGPL-3.0 (Repository)MPL-2.0, einige Azure-Module unter BSL (Repository)
LaufzeitEin Go-Binary mit eingebetteter JavaScript-EngineNode.js, aktuelle LTS-Version
TestskripteJavaScriptYAML, TypeScript oder JavaScript
KernprotokolleHTTP, WebSockets, gRPCHTTP, WebSocket, Socket.IO (gRPC und Kinesis als Zusatz-Engines)
BrowsertestsEingebautes Browser-ModulPlaywright
Pass/Fail-PrüfungenThresholdsensure-Plugin
Skalierungk6-operator auf Kubernetes oder Grafana Cloud k6run-lambda oder run-fargate auf AWS, run-aci auf Azure

Was ist der Unterschied zwischen k6 und Artillery?

Sie unterscheiden sich vor allem in der Laufzeitumgebung und darin, wie Sie Last beschreiben. k6 ist ein kompiliertes Go-Tool, das JavaScript-Testcode ausführt, Artillery ist ein Node.js-Tool, das YAML- oder JavaScript-Szenarien liest.

Das merken Sie schon am ersten Tag. Für k6 installieren Sie ein Paket oder ein eigenständiges Binary, ohne eine Laufzeitumgebung pflegen zu müssen. Artillery braucht Node.js und wird über npm installiert. In einem JavaScript-Projekt fühlt sich das natürlich an, überall sonst ist es eine weitere Laufzeitumgebung, die aktuell bleiben muss.

Bei den Protokollen deckt die Schnittmenge den Großteil der Webarbeit ab: Beide sprechen von Haus aus HTTP und WebSockets. k6 bringt außerdem gRPC mit, Artillery Socket.IO. gRPC und Kinesis bekommt Artillery über Zusatz-Engines, die Sie separat installieren (geprüft am 9. Oktober 2026), und k6 reicht über sein Ökosystem an Erweiterungen weiter.

Wie schreibt man in beiden Tools einen Test?

In k6 schreiben Sie ein JavaScript-Modul mit den Optionen oben und einer Default-Funktion, die jeder virtuelle Benutzer ausführt. In Artillery schreiben Sie meist eine YAML-Datei mit einem config-Block für die Last und einem scenarios-Block für das, was jeder virtuelle Benutzer tut.

Ein k6-Test, der auf 20 virtuelle Benutzer hochfährt und fehlschlägt, wenn das 95. Perzentil der Antwortzeit über 500 ms steigt:

import http from "k6/http";
import { check, sleep } from "k6";

export const options = {
  stages: [
    { duration: "30s", target: 20 },
    { duration: "1m", target: 20 },
    { duration: "15s", target: 0 },
  ],
  thresholds: { http_req_duration: ["p(95)<500"] },
};

export default function () {
  const res = http.get("https://staging.example.com/api/users");
  check(res, { "status is 200": (r) => r.status === 200 });
  sleep(1);
}

Dieselbe Idee im YAML-Format von Artillery, mit zehn neuen virtuellen Benutzern pro Sekunde über eine Minute:

config:
  target: "https://staging.example.com"
  phases:
    - duration: 60
      arrivalRate: 10
  plugins:
    ensure:
      thresholds:
        - "http.response_time.p95": 500
scenarios:
  - flow:
      - get:
          url: "/api/users"

Die beiden Beispiele modellieren Last auf unterschiedliche Weise. Das k6-Skript legt eine Anzahl gleichzeitiger virtueller Benutzer fest, die Artillery-Datei legt fest, wie viele neue virtuelle Benutzer pro Sekunde ankommen. k6 kann Ankunftsraten auch über seine Scenario-Executors steuern, und Artillery kann die Parallelität mit maxVusers begrenzen. Wählen Sie also das Modell, das dazu passt, wie echter Traffic Ihr System erreicht, und nicht das, das ein Tool zuerst zeigt.

Wie entscheiden k6 und Artillery, ob ein Test bestanden ist?

Beide übersetzen ein Performance-Ziel in einen Exit-Code, und genau den braucht eine CI-Pipeline. Ein verfehltes Ziel beendet den Lauf in beiden Tools mit einem Exit-Code ungleich null.

In k6 heißen die Ziele Thresholds und stehen wie im Beispiel oben in den Optionen des Skripts. In Artillery stehen sie im ensure-Plugin, das einfache Schwellenwerte und Bedingungen über mehrere Metriken hinweg unterstützt.

Der praktische Unterschied liegt darin, wo die Ziele stehen. k6-Thresholds liegen in derselben Datei wie die Testlogik. Die Prüfungen von Artillery liegen im config-Block, wo sie auch jemand anpassen kann, der die Szenarien nie anfasst.

Wie fährt man einen Test, der größer ist, als ein Rechner erzeugen kann?

Beide Tools können einen Test auf viele Rechner verteilen, aber auf ganz unterschiedlichen Wegen. k6 setzt auf Kubernetes oder den gehosteten Dienst von Grafana, Artillery auf Ihr eigenes AWS- oder Azure-Konto.

Für k6 verteilt der k6-operator einen Test auf Pods in einem Kubernetes-Cluster, und Grafana Cloud k6 führt dieselben Skripte als gehosteter Dienst aus. Für Artillery starten die Befehle run-lambda und run-fargate Worker in Ihrem AWS-Konto, nach einer einmaligen IAM-Einrichtung über einen CloudFormation-Stack. Auf Azure macht run-aci dasselbe mit Azure Container Instances, braucht über eine Evaluierung hinaus aber ein kostenpflichtiges Artillery-Abo (geprüft am 9. Oktober 2026). Wenn Sie bereits Kubernetes betreiben, wirkt der Weg über den Operator vertraut. Wenn Sie lieber gar nichts betreiben möchten, hat der serverlose Weg von Artillery weniger bewegliche Teile, solange der Test in AWS oder Azure laufen darf.

Für k6-Skripte gibt es einen dritten Weg. LoadFocus führt k6-Skripte auf seiner eigenen Cloud-Infrastruktur aus 25 Regionen aus, sodass aus dem Skript auf Ihrem Laptop ein verteilter Test wird, ganz ohne Cluster oder AWS-Konto. LoadFocus führt keine Artillery-Skripte aus, für Artillery bleiben also seine eigenen AWS- und Azure-Befehle der Weg zur Skalierung.

Wohin gehen die Ergebnisse?

Beide Tools geben am Ende eines Laufs eine Zusammenfassung aus und können Metriken für Dashboards und Alarme an andere Systeme senden.

k6 bietet laut seinem Repository Zusammenfassungen oder detaillierte Metriken, die an den Dienst Ihrer Wahl exportiert werden. Artillery nennt in seinem Repository mehr als 20 Integrationen für Monitoring, Observability und CI/CD. Beide Tools können also die Dashboards füttern, die Sie schon haben. Prüfen Sie vorher, ob genau die Ausgabe, die Sie brauchen, auf der Liste steht, denn beide Listen ändern sich von Version zu Version.

Welches Tool sollten Sie wählen?

Wählen Sie k6, wenn Sie ein einzelnes Binary in der CI, JavaScript-Testlogik mit echtem Kontrollfluss und Thresholds in derselben Datei wie den Test wollen. Es passt auch zu Teams, die bereits Grafana nutzen, weil das Open-Source-Tool und der gehostete Dienst dieselbe Skript-API teilen.

Wählen Sie stattdessen Artillery, wenn Ihr Team täglich Node.js schreibt, wenn eine kurze YAML-Datei für den Rest des Teams leichter zu prüfen ist als ein Skript oder wenn Sie Playwright-Browsertests und Socket.IO im selben Tool brauchen. Seine serverlose Skalierung ist auch der kürzere Weg, wenn Ihre Infrastruktur ohnehin in AWS liegt und Kubernetes keine Rolle spielt.

Wenn Sie noch unentschlossen sind, schreiben Sie denselben Smoke-Test in beiden Tools. Zwanzig Zeilen reichen, um zu sehen, welches Ihr Team im Code-Review leichter liest.

FAQ

Ist k6 kostenlos? Ja. k6 ist Open Source unter der Lizenz AGPL-3.0 und läuft kostenlos auf Ihren eigenen Rechnern. Grafana Cloud k6 ist ein separater gehosteter Dienst mit eigener Preisgestaltung.

Ist Artillery kostenlos? Größtenteils. Der Großteil von Artillery steht unter der Lizenz MPL-2.0, einige Azure-spezifische Module nutzen jedoch eine Source-Available-Lizenz, die für den produktiven Einsatz auf Azure eine kommerzielle Lizenz verlangt, so das Repository des Projekts (geprüft am 8. Oktober 2026).

Kann LoadFocus Artillery-Tests ausführen? Nein. LoadFocus führt k6- und JMeter-Skripte aus. Um einen Artillery-Test über einen Rechner hinaus zu skalieren, nutzen Sie die Befehle von Artillery für AWS Lambda, Fargate oder Azure Container Instances in Ihrem eigenen Cloud-Konto.

Welches Tool braucht weniger Ressourcen auf dem Lastgenerator? Das haben wir nicht selbst gemessen, deshalb nennen wir keinen Sieger. Das k6-Projekt sagt, dass selbst schwächere Rechner viel Traffic simulieren können, und fair vergleichen lässt sich das nur, wenn Sie dasselbe Szenario mit beiden Tools auf Ihrer eigenen Hardware laufen lassen.

Weiterlesen


Die technischen Aussagen in diesem Artikel wurden nicht unabhängig geprüft.

LoadFocus team
Geschrieben vom LoadFocus-Team, den Leuten hinter einem Cloud-Lasttest-Dienst.