k6 Lasttests: Ein praktischer Leitfaden für APIs

Ein praktischer Leitfaden für k6-Lasttests: k6 installieren, Ihr erstes Skript schreiben, VUs, Phasen und Schwellenwerte festlegen, p95/p99-Ergebnisse ablesen und es in CI ausführen.

Ashley Goolam

Ashley Goolam

25 June 2026

k6 Lasttests: Ein praktischer Leitfaden für APIs

Apidog für Unternehmen

On-Premises Bereitstellung

SSO & RBAC

SOC 2 konform

Apidog Enterprise entdecken

Wenn Ihre API für einen Benutzer einwandfrei funktioniert, aber unter Last zusammenbricht, benötigen Sie Lasttests, und k6 ist eine der elegantesten Möglichkeiten, dies zu tun. Dieser Leitfaden behandelt, was k6 ist, wie man es installiert, wie man sein erstes Skript schreibt und wie man die Ergebnisse liest, damit Sie Lasttests als Teil Ihrer normalen API-Leistungstestroutine betrachten können. Wir werden auch untersuchen, wie k6 neben funktionalen Tests in CI passt, dabei greifen wir auf die offizielle k6-Dokumentation zurück, wo die Details wichtig sind.

Was ist k6?

k6 ist ein Open-Source-Lasttest-Tool, das jetzt von Grafana gewartet wird. Sie schreiben Ihren Test als JavaScript-Datei, k6 führt ihn mit einer schnellen Go-Engine aus und bombardiert Ihre Endpunkte mit simuliertem Traffic. Die Trennung ist beabsichtigt: Sie erstellen Tests in einer Sprache, die die meisten Entwickler bereits kennen, aber der Lastgenerator selbst läuft als kompiliertes Go, sodass eine einzelne Maschine viele virtuelle Benutzer ohne Überlastung antreiben kann.

k6 ist für eine Aufgabe gebaut und erledigt sie gut: anhaltende, wiederholbare Last zu erzeugen und zu messen, wie Ihr System darauf reagiert. Es meldet Latenz-Perzentile, Anfrageraten, Fehlerraten und ermöglicht es Ihnen, Bestehens-/Fehlerschwellenwerte für diese Zahlen festzulegen. Dieser Fokus ist der entscheidende Punkt. k6 ist kein API-Client, kein Dokumentationstool oder ein funktionales Test-Framework. Es ist eine Last-Engine.

Einige Begriffe, denen Sie ständig begegnen werden:

k6 installieren

k6 wird als einzelne Binärdatei ausgeliefert, daher ist die Installation kurz. Unter macOS mit Homebrew:

brew install k6

Unter Windows mit Chocolatey:

choco install k6

Unter Debian oder Ubuntu fügen Sie das Grafana apt-Repository hinzu und installieren Sie:

sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg \
  --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" \
  | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6

Bestätigen Sie die Funktion:

k6 version

Ein Docker-Image ist ebenfalls verfügbar, falls Sie nichts lokal installieren möchten. Überprüfen Sie die Installationsseite in der Dokumentation für die aktuellen Befehle, da sich Paketdetails im Laufe der Zeit ändern können.

Ihr erstes k6-Skript

Ein k6-Test ist ein JavaScript-Modul mit einer Standardfunktion. k6 ruft diese Funktion einmal pro Iteration pro VU auf. Hier ist ein minimales Skript, das einen Endpunkt aufruft und die Antwort überprüft:

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

export default function () {
  const res = http.get('https://test-api.example.com/users');

  check(res, {
    'status is 200': (r) => r.status === 200,
    'body is not empty': (r) => r.body.length > 0,
  });

  sleep(1);
}

Speichern Sie es als script.js und führen Sie es aus:

k6 run script.js

Standardmäßig führt k6 einen VU für eine Iteration aus. Das sleep(1) fügt eine einsekündige Pause zwischen den Iterationen hinzu, was das Verhalten eines echten Benutzers, der zwischen Aktionen pausiert, nachahmt. Ohne Pause durchläuft jeder VU die Schleife so schnell, wie das Netzwerk es zulässt, was für reine Durchsatztests nützlich, aber für die Simulation des Benutzerverhaltens unrealistisch ist.

Die check()-Aufrufe sind „weiche“ Zusicherungen. Ein fehlgeschlagener Check erscheint in der Zusammenfassung, stoppt aber die Ausführung nicht. Das ist Absicht. Unter hoher Last erwarten Sie einige Fehler, und Sie möchten, dass der Test weiter misst, damit Sie sehen können, wie schlimm es wird.

VUs, Phasen und Schwellenwerte

Das erste Skript führt einen einzelnen Benutzer einmal aus. Bei echten Lasttests geht es darum, zu steuern, wie viele Benutzer Ihre API wie lange beanspruchen. Dies konfigurieren Sie mit einem exportierten options-Objekt.

Die einfachste Form legt eine feste Anzahl von VUs und eine Dauer fest:

export const options = {
  vus: 50,
  duration: '30s',
};

Das führt 50 virtuelle Benutzer für 30 Sekunden aus. Nützlicher ist ein ansteigendes Profil, das aus Phasen besteht, mit denen Sie den Traffic simulieren können, der ansteigt, gehalten wird und abfällt:

export const options = {
  stages: [
    { duration: '1m', target: 100 },  // Anstieg auf 100 VUs
    { duration: '3m', target: 100 },  // Halten bei 100 VUs
    { duration: '1m', target: 0 },    // Abfall auf 0
  ],
  thresholds: {
    http_req_duration: ['p(95)<500'],   // 95% der Anfragen unter 500ms
    http_req_failed: ['rate<0.01'],     // weniger als 1% Fehler
  },
};

Schwellenwerte sind der Punkt, an dem k6 seinen Platz in CI verdient. Wenn ein Schwellenwert fehlschlägt, beendet k6 die Ausführung mit einem Fehlercode ungleich Null. Das bedeutet, dass ein Pipelineschritt den Build fehlschlagen lassen kann, wenn Latenz oder Fehlerraten eine von Ihnen festgelegte Grenze überschreiten. Sie kodieren ein Performance-Budget als Code, genau wie Sie eine funktionale Zusicherung kodieren würden.

Eine kurze Übersicht über die gängigen Lastprofile und die Frage, die jedes beantwortet:

Profil Ziel Was es Ihnen sagt
Smoke (Rauchtest) Kleine Last, Überprüfung der Skriptausführung Der Test selbst ist korrekt
Load (Lasttest) Erwarteter normaler Traffic Hält die API den täglichen Anforderungen stand
Stress (Stresstest) Über den erwarteten Spitzenwert hinausgehen Wo beginnt es zu versagen
Spike (Spitzentest) Plötzlicher starker Anstieg der VUs Kann es einen Traffic-Ansturm überleben
Soak (Dauertest) Moderate Last über Stunden Speicherlecks, langsame Verschlechterung

Sie benötigen nicht alle fünf. Beginnen Sie mit Rauch- und Lasttests. Fügen Sie Stress- und Spitzentests hinzu, sobald Sie Ihre normalen Zahlen kennen. Für einen breiteren Überblick über Ansätze und die dahinter stehenden Metriken gelten die Grundlagen der Performance-Tests für jedes Tool, nicht nur für k6.

k6-Ergebnisse lesen

Wenn ein Durchlauf beendet ist, gibt k6 eine Zusammenfassung im Terminal aus. Die wichtigsten Zeilen sind:

Lesen Sie Perzentile, nicht Durchschnitte. Eine durchschnittliche Antwortzeit von 200 ms klingt gut, bis Sie ein p99 von 4 Sekunden sehen, was bedeutet, dass einer von hundert Benutzern vier Sekunden wartet. Dieser „Tail“ (lange Ausläufer) ist der Punkt, an dem Benutzer abspringen.

Für alles, was über das bloße Betrachten des Terminals hinausgeht, kann k6 Ergebnisse an externe Ausgaben streamen. Es schreibt JSON oder CSV und lässt sich mit Grafana-Dashboards und Prometheus für eine Live-Visualisierung während eines Laufs integrieren. Diese Kombination, k6 plus Grafana, ist der Grund, warum das Tool oft „grafana k6“ genannt wird. Für einen einmaligen Test ist die Terminalzusammenfassung ausreichend; für die fortlaufende Überwachung sollten Sie die Metriken an einen Ort senden, wo Sie sie grafisch darstellen können.

Wo k6 passt und wo Apidog passt

k6 ist eine Last-Engine. Es beantwortet die Frage: „Wie verhält sich mein System unter anhaltendem Traffic?“ Es überprüft nicht, ob Ihre API die richtigen Daten zurückgibt, ihrem Vertrag entspricht oder die Authentifizierung über jeden Endpunkt korrekt handhabt. Das sind Fragen des funktionalen und Vertragstests, und dafür benötigen Sie ein anderes Tool.

Diese Trennung sollte klar bleiben. Sie möchten beide Arten von Tests in Ihrer Pipeline haben, und sie konkurrieren nicht miteinander:

Anliegen Am besten behandelt durch Was es beantwortet
Anhaltende hohe Last, Perzentile im großen Maßstab k6 Bleibt es unter Traffic schnell
Funktionale Korrektheit, Vertrag, Authentifizierung Apidog Gibt es das Richtige zurück
Regression in CI bei jedem Commit Apidog (apidog run) Hat diese Änderung einen Endpunkt unterbrochen
Performance-Budgets in CI k6-SchwellenwerteHaben Latenz oder Fehler eine Grenze überschritten

Apidog kümmert sich um die Korrektheit. Sie entwerfen oder importieren Ihre API, erstellen Testszenarien mit visuellen Zusicherungen und führen diese in CI mit apidog run aus, genau wie Sie ein k6-Skript ausführen würden. Der Apidog CLI-Leitfaden erklärt, wie diese funktionalen Tests in eine Pipeline integriert werden. Apidog enthält auch leichtere Performance-Testfunktionen für schnelle Überprüfungen, die im API Performance Testing in Apidog-Walkthrough behandelt werden, ist aber kein Lastgenerator der k6-Klasse und versucht auch nicht, einer zu sein.

Ein praktischer Workflow sieht so aus. Bei jedem Commit führt Apidog Ihre funktionalen und Vertragstests aus, um zu bestätigen, dass die API immer noch das tut, was sie soll. Nach einem Zeitplan oder vor einer Veröffentlichung führt k6 ein Lastprofil gegen eine Staging-Umgebung aus, um zu bestätigen, dass die API unter Traffic schnell bleibt. Korrektheits-Gate und Performance-Gate, jedes mit dem dafür entwickelten Tool.

Wenn Sie Engines vor der Festlegung vergleichen, steht k6 neben JMeter, Gatling und Locust. Die Übersicht über Lasttest-Tools und dieser Locust-Alternativvergleich zeigen die Kompromisse auf, wenn Skriptsprache oder Skalierung Ihre Wahl beeinflussen.

Häufig gestellte Fragen

Ist k6 kostenlos?

Ja. k6 ist Open Source unter der AGPL-Lizenz, und die Binärdatei kann kostenlos lokal ausgeführt werden, ohne Begrenzung der virtuellen Benutzer über Ihre eigene Hardware hinaus. Grafana bietet auch k6 Cloud an, einen kostenpflichtigen Dienst zum Ausführen großer verteilter Tests und Speichern von Ergebnissen, aber Sie müssen ihn niemals nutzen. Das Kern-Tool deckt die meisten Teams ab. Wenn Sie zuerst andere kostenlose Optionen prüfen möchten, listet die Übersicht über Lasttest-Tools auf, was jedes Tool bietet.

Muss ich JavaScript kennen, um k6 zu verwenden?

Sie benötigen grundlegendes JavaScript, keine tiefgehenden Kenntnisse. Die meisten k6-Skripte bestehen aus einer Standardfunktion, einigen http.get- oder http.post-Aufrufen, ein paar Prüfungen und einem Options-Objekt. Wenn Sie die Beispiele in diesem Leitfaden lesen können, können Sie einen funktionierenden Test schreiben. Es gibt keinen Build-Schritt und kein Framework zu lernen, nur die k6-API.

Was ist der Unterschied zwischen k6 und Apidog für Performance-Tests?

k6 ist ein dedizierter Lastgenerator, der dazu entwickelt wurde, anhaltend hohen Traffic zu erzeugen und Perzentile im großen Maßstab zu melden. Apidog ist eine API-Plattform, die sich auf Design, funktionale Tests und Vertragstests konzentriert, mit leichteren Performance-Testfunktionen für schnelle Überprüfungen. Verwenden Sie k6, wenn Sie echte Last und CI-Performance-Budgets benötigen. Verwenden Sie Apidog für Korrektheit, Vertragsvalidierung und das Ausführen funktionaler Tests bei jedem Commit. Sie lösen unterschiedliche Probleme und arbeiten gut zusammen.

Kann ich k6 in CI/CD ausführen?

Ja, und das ist ein gängiges Setup. k6 beendet die Ausführung mit einem Fehlercode ungleich Null, wenn ein Schwellenwert nicht erreicht wird, sodass jedes CI-System den Build bei einer Performance-Regression fehlschlagen lassen kann. Führen Sie k6 run script.js als Pipelineschritt aus, richten Sie es auf eine Staging-Umgebung aus und legen Sie Schwellenwerte für die p95-Latenz und die Fehlerrate fest. Kombinieren Sie es mit funktionalen Tests von apidog run, damit jeder Commit sowohl eine Korrektheitsprüfung als auch eine Lastprüfung erhält.

Fazit

k6 bietet Ihnen eine saubere, skriptfähige Möglichkeit, Ihre API real zu belasten und zu messen, was passiert. Installieren Sie die Binärdatei, schreiben Sie eine kurze JavaScript-Datei, legen Sie VUs und Phasen fest, fügen Sie Schwellenwerte hinzu und lesen Sie die Perzentile. Das ist der ganze Zyklus. Halten Sie Lasttests von funktionalen Tests getrennt, da jeder eine andere Frage beantwortet, und führen Sie beide in CI aus, damit nichts durchrutscht.

Für die Korrektheitsseite dieser Trennung ermöglicht Ihnen Apidog, Ihre API an einem Ort zu entwerfen, zu testen, zu mocken und zu dokumentieren und dann funktionale Tests in CI mit apidog run auszuführen. Laden Sie Apidog herunter, um vertragsgerechte Zuverlässigkeit mit Ihren k6-Lastläufen zu kombinieren.

Button

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen