Zum Inhalt springen

Integration des JMeter API Clients mit CI/CD-Pipelines

Diese Anleitung erklärt, wie Sie einen gespeicherten LoadFocus-JMeter-Test aus CircleCI, Azure DevOps, GitHub Actions, GitLab CI/CD oder Jenkins ausführen, damit ein Performance-Test Ihr Deployment bestehen oder scheitern lassen kann.

Unabhängig von der CI/CD-Plattform gibt es gemeinsame Schritte zur Integration des LoadFocus JMeter API Clients:

  1. Client installieren: Installieren Sie @loadfocus/loadfocus-api-client zu Beginn Ihres Workflows
  2. Anmeldedaten konfigurieren: Speichern Sie Ihren API-Schlüssel und Ihre Team-ID aus den geheimen Variablen Ihrer Plattform
  3. Tests ausführen: Führen Sie einen gespeicherten JMeter-Test per Namen aus, mit Schwellenwerten
  4. Ergebnisse verarbeiten: Lesen Sie die Ausgabe oder speichern Sie sie mit --format json
  5. Entscheidungen treffen: run-test beendet sich mit Exit-Code 1, wenn ein Schwellenwert verfehlt wird oder der Lauf fehlschlägt, der Pipeline-Schritt schlägt also von selbst fehl

Die drei Befehle, mit --name als exaktem Namen eines Tests, den Sie in LoadFocus gespeichert haben:

Terminal-Fenster
npm install -g @loadfocus/loadfocus-api-client
loadfocus-api config set --apikey "$LOADFOCUS_API_KEY" --teamid "$LOADFOCUS_TEAM_ID"
loadfocus-api jmeter run-test --name "My_JMeter_Test" --thresholds "avgresponse<=200,errors==0"

Bei der Integration des LoadFocus JMeter API Clients mit Ihrer CI/CD-Pipeline beachten Sie diese Best Practices:

  • Kodieren Sie niemals Ihren API-Schlüssel oder Ihre Team-ID fest in Ihrer Pipeline-Konfiguration
  • Verwenden Sie das Secrets-Management-System Ihrer CI/CD-Plattform
  • Beschränken Sie den Zugriff auf Ihre Leistungstestergebnisse auf autorisiertes Personal
  • Verwenden Sie beschreibende Testnamen, die den getesteten Branch/die Umgebung enthalten
  • Setzen Sie angemessene Schwellenwerte basierend auf den Leistungsanforderungen Ihrer Anwendung
  • Erwägen Sie die Ausführung verschiedener Testprofile für verschiedene Umgebungen (z. B. leichtere Tests für dev, vollständige Tests für Staging)
  • Führen Sie Leistungstests aus, nachdem funktionale Tests bestanden haben
  • Erwägen Sie die parallele Ausführung von Leistungstests mit anderen nicht-blockierenden Aufgaben
  • Richten Sie Benachrichtigungen für Leistungstestfehler ein
  • Speichern Sie Leistungstestergebnisse als Artefakte für historische Vergleiche
  • Erwägen Sie die Implementierung einer Trendanalyse, um Leistungsverschlechterungen im Zeitverlauf zu erkennen
  • Dokumentieren Sie Baseline-Leistungsmetriken zum Vergleich
  • Überprüfen Sie, ob Ihr API-Schlüssel und Ihre Team-ID korrekt konfiguriert sind
  • Prüfen Sie, ob Sie das Limit für gleichzeitige Tests Ihres Kontos erreicht haben
  • Überprüfen Sie, ob der Testname in Ihrem LoadFocus-Konto existiert
  • Stellen Sie sicher, dass die Schwellenwertsyntax korrekt ist: eine kommagetrennte Liste aus Metrik, Operator und Zahl, zum Beispiel avgresponse<=200,errors==0. Metriken sind avgresponse, errors, p95, p99, min, max und hitspersec (Antwortzeiten in Millisekunden). Operatoren sind <, <=, >, >=, == (oder =) und !=
  • Ein nicht lesbarer Schwellenwert wird mit einer Warnung übersprungen. Kann keiner der übergebenen Schwellenwerte gelesen werden, gibt run-test einen Fehler aus und beendet sich mit Exit-Code 1, statt den Standard avgresponse<=100 zu verwenden. Prüfen Sie die ersten Zeilen der Ausgabe auf "Invalid threshold"
  • Prüfen Sie, ob die ausgewerteten Metriken für Ihren Test relevant sind
  • Überprüfen Sie, ob der Test genug Last erzeugt, um aussagekräftige Ergebnisse zu liefern
  • Passen Sie die Timeout-Einstellungen in Ihrer CI/CD-Konfiguration an
  • Mit --wait-timeout <seconds> legen Sie fest, wie lange der Client auf das Ende des Tests wartet (Standard 1800). Läuft die Zeit ab, schlägt der Befehl mit Exit-Code 1 fehl, der Test läuft in LoadFocus aber weiter
  • --poll-interval <seconds> legt fest, wie oft der Status geprüft wird (Standard 10)

Für plattformspezifische Integrationsdetails siehe die speziellen Anleitungen für CircleCI, Azure DevOps, GitHub Actions, Jenkins und GitLab CI/CD.