Einführung

K6 ist ein Open-Source-Tool, das für die Leistungs- und Lasttests entwickelt wurde. Es ist in Go geschrieben und bietet eine einfache Möglichkeit, Tests mit JavaScript zu schreiben. K6 kann sowohl für die API-Tests als auch für die Lasttests verwendet werden.

Installation

Um K6 zu nutzen muss die CLI installiert werden Grafana hat eine Anleitung dazu erstellt, welche den Vorgang auf unterschiedlichen Betriebssystemen beschreibt. Eine einfache Möglichkeit ist den letzten GitHub-Release von K6 herunterzuladen und das Executable an den richtigen Ort zu verschieben.

  wget https://github.com/grafana/k6/releases/download/v0.53.0/k6-v0.53.0-linux-amd64.tar.gz
tar -xvf k6-v0.53.0-linux-amd64.tar.gz
sudo mv k6-v0.53.0-linux-amd64/k6 /usr/local/bin/
  

Entwickeln

Die Last- und Performance-Tests für K6 werden mit JavaScript geschrieben und benutzen die k6 API. Hier ein einfaches Beispiel:

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

export const options = {
  // Etappen mit Anzahl der Virtuellen Benutzer und Dauer
  stages: [
    { duration: '30s', target: 20 },
    { duration: '1m', target: 10 },
    { duration: '30s', target: 0 }
  ],

  thresholds: {
    http_req_failed: ['rate<0.01'], // weniger als 1% der Requests dürfen fehlschlagen
    http_req_duration: ['p(95)<500'], // 95% der Requests müssen unter 500ms sein
  },
}

// Testfunktion
export default function() {
  // Request ausführen
  const res = http.get('https://example.com');

  // Resultat prüfen
  check(res, {
    'status is 200': (r) => r.status === 200,
  });
  sleep(0.1);
}
  

Testen

Ein Test kann dann mit dem run Befehl von k6 ausgeführt werden, dabei muss als Parameter die JavaScript-Datei angegeben werden. Zum Beispiel k6 run test.js. Dadurch wird der Test gestartet was einige Zeit dauern kann. Sobald der Test beendet ist zeigt K6 eine Zusammenfassung des Tests mit allen Metriken an. Dies könnte zum Beispiel so aussehen:

K6 Test Ergebnis
Ausführung des K6 Tests im Terminal

Last updated 08 Jan. 2025, 17:05 +0100 . history