k6 2.3.0 bringt Lasttests in die Pipeline: Skripte in JavaScript, Schwellen entscheiden ueber Bestehen
Zusammenfassung
k6 laeuft auf einer Go-Engine, die Skripte sind in JavaScript oder TypeScript geschrieben. Eine gerissene Schwelle laesst den Lauf scheitern, Ergebnisse koennen nach Grafana gehen, aktuell ist 2.3.0.
- Name
- k6
- Version
- 2.3
- Preis
- Kostenlos
- Open Source
- Open Source
- Betriebssystem
- WindowsLinuxmacOS
- Webseite
- https://grafana.com/oss/k6/
- Aktualisiert
- 2026-10-21 12:40
k6 ist ein offenes Werkzeug fuer Lasttests: die Engine ist in Go geschrieben, die Testskripte in JavaScript oder TypeScript. Es behandelt Leistungspruefungen als Teil der Softwaretechnik, also liegen Skripte im Quellverzeichnis, Schwellen stehen im Skript, der Lauf endet mit einem Urteil, und das Ganze haengt in einer Pipeline.
Eine Datei, ein Skript
Die Verteilung gleicht jedem Kommandozeilenwerkzeug: deb, rpm und tar fuer Linux, x64- und arm64-Archive fuer macOS, msi und zip fuer Windows, und eine einzelne Datei laeuft, sobald sie im Pfad liegt. Gepflegt wird das Projekt von Grafana Labs, gestartet 2016, 2021 mit der Firma zu Grafana Labs gekommen, Lizenz GNU AGPL dritte Fassung.
Ein Skript ist ein JavaScript-Modul, und die exportierte Standardfunktion ist eine Runde, die jeder virtuelle Nutzer faehrt; Einstellungen liegen in einem options-Objekt und lassen sich auf der Kommandozeile ueberschreiben. TypeScript geht ebenso. Die Engine ist Go, und ein Prozess zieht mit wenig Speicher eine grosse Zahl virtueller Nutzer hoch, worauf es immer wieder hinweist.

Schwellen: die SLO als Kriterium aufschreiben
Schwellen sind die Linie zwischen diesem Werkzeug und einmal-hinschauen. Sie setzen eine Bestehensmarke auf eine Kennzahl, und ein Lauf, der sie reisst, liefert einen Fehlerzustand. Die Beispiele in der Dokumentation sind konkret.
Kriterium | Beispiel einer Schwelle |
|---|---|
Fehlerquote | Unter einem Prozent |
95. Perzentil der Antwortzeit | Unter 200 ms |
99. Perzentil der Antwortzeit | Unter 400 ms |
Ein bestimmter Endpunkt | Immer innerhalb von 300 ms |
Eigene Kennzahlen nehmen Schwellen genauso. Weil der Rueckgabewert mit dem Ergebnis wechselt, wird eine Schwelle zum Schalter in einer Pipeline. Die drei offiziellen Schritte zur Automatisierung lauten: Schwellen fuer den Test schreiben, die Ausfuehrung automatisieren, dann Warnungen an Fehler haengen; danach braucht es einen Menschen nur, wenn das System sein Ziel verfehlt.
Pruefungen: Zusicherungen ohne Abbruch
Eine Pruefung verifiziert eine Bedingung aus wahr und falsch, ob ein Statuscode 201 ist oder ein Antwortkoerper die richtige Groesse hat. Sie sieht aus wie eine Zusicherung in den meisten Testgeruesten, mit einem Unterschied: eine gescheiterte Pruefung bricht den Test nicht ab und laesst den Lauf nicht scheitern, sie schreibt nur die Fehlerquote als Kennzahl mit.
Damit eine Pruefung wirklich blockiert, muss sie mit einer Schwelle gepaart sein: die Pruefung sammelt Tatsachen, die Schwelle zieht den Schluss. Diese Teilung laesst einen Lauf jede auffaellige Probe sammeln und trotzdem mit einem klaren Ja oder Nein enden.
Szenarien: mehrere Verkehrsformen in einem Test
Ein Szenario beschreibt, wie virtuelle Nutzer und Wiederholungen getaktet werden. Ein Skript darf mehrere Szenarien erklaeren, jedes mit einer anderen Funktion und einem anderen Ablauf, unabhaengig und parallel; versetzte Startzeiten ergeben eine Reihenfolge. Jedes Szenario traegt eigene Umgebungsvariablen und Marken, und in der Zusammenfassung trennen sich die Ergebnisse nach Marke.
Der Mechanismus bildet die Form echten Verkehrs ab: stetige feste Gleichzeitigkeit, eine Rampe, die den Druck schrittweise erhoeht, Druck ueber Ankunftsrate statt Nutzerzahl, sowie Spitzen und lange Sickerlaeufe. Ein Lastskript muss also nicht fuer jede Form neu geschrieben werden.
Protokolle und Erweiterungen
Vier Protokolle sind dabei: HTTP/1.1, HTTP/2, WebSocket und gRPC. HTTP/2 steigt selbst auf, verbindet zuerst ueber HTTP/1.1 und wechselt, sobald der Server es ankuendigt, ohne Aenderung am Skript.
Alles andere verlangt eine eigene Datei. Das Projekt bietet ein Bauwerkzeug namens xk6, und die Gemeinschaft hat damit SQL, Kafka, ZeroMQ und Redis erreicht. Erweiterungen fallen in vier Arten: JavaScript-Erweiterungen geben Skripten eine Schnittstelle, Ausgabe-Erweiterungen schicken Kennzahlen in ein eigenes Format oder einen Dienst, Schluessel-Erweiterungen liefern einem Test Zugangsdaten, und Unterbefehl-Erweiterungen haengen eigene Befehle unter den k6-Namensraum.
Wohin die Ergebnisse gehen
Standardmaessig druckt ein Schlussbericht zusammengefasste Zahlen. Fuer jeden einzelnen Punkt gibt es eine laufende Ausgabe, in eine JSON-Datei geschrieben oder direkt an ein Ziel geschoben. Die Seite nennt unter anderem Prometheus, Mimir, Datadog, New Relic und Timescale, und die eingebaute Weboberflaeche zeichnet die Kurven live.
Die Kette liegt nah an dem, wofuer Grafana da ist: k6 erzeugt synthetischen Verkehr, Grafana sammelt Kennzahlen, Protokolle und Spuren, und zusammen ergeben sie eine Zeitlinie aus Druecken vor der Freigabe und Zusehen beim echten Verkehr danach.
Was 2.x geaendert hat
2.0 war eine Aufraeumaktion: lange abgekuendigte Befehle und Schalter fielen weg, der Go-Modulpfad wanderte auf eine neue Adresse mit v2, und jede Erweiterung musste mit ihrem Importpfad folgen. Es ist ein Aufstieg mit Bruch, und die Notizen sagen das klar.
2.3.0 vom 21. September 2026 bringt Praktisches: einen scenario-Schalter, um ohne Aenderung am Skript nur einige Szenarien eines Tests zu fahren; einen once-Schalter, der ein Lastskript als Rauchtest und als Funktionstest nutzbar macht; und versuchsweise Unterstuetzung fuer asynchrone Gruppen, damit Kennzahlen nach einem await in der richtigen Gruppe bleiben. Ein separates 1.8.2 vom 12. Oktober behebt nur Sicherheitsprobleme in Abhaengigkeiten und bringt nichts Neues: zwei Linien laufen parallel, eine vorwaerts, eine nur mit Flicken.
Fuer wen es taugt
Teams, die schon auf dem Grafana-Stapel sitzen, treffen kaum Reibung: Kennzahlen landen im selben Speicher, Tafeln lassen sich teilen. Wer Tests gern im Quellverzeichnis haelt, findet es handlicher als grafische Lastwerkzeuge, weil ein Skript pruefbar, wiederholbar und in eine Pipeline bringbar ist.
Umgekehrt bleibt fuer einen einmaligen Druck auf eine Schnittstelle die Kommandozeile plus ein paar Dutzend Zeilen Skript der kuerzeste Weg; eine visuelle Zusammenstellung gibt es nicht und ist nicht geplant. Die Annahme lautet: Leistungspruefung gehoert wie der Einheitstest denen, die den Code schreiben.
k6 zieht die Leistungspruefung auf die Seite des Codes: das Skript ist Code, das Kriterium eine Schwelle darin, das Urteil ein Rueckgabewert. Eine Go-Engine erzeugt Verkehr mit so wenig Mitteln wie moeglich, und das Grafana-Heck macht daraus lesbare Kurven. 2016 gestartet, 2021 zu Grafana Labs gekommen, ueber einunddreissigtausend Sterne, AGPL dritte Fassung, und ein Weg, Leistung so zu pruefen wie Einheitstests.