Zum Inhalt springen

Diese Anleitung erklärt, wie Sie den LoadFocus JMeter API Client mit CircleCI für automatisierte Leistungstests integrieren. --name ist immer der exakte Name eines JMeter-Tests, den Sie bereits in LoadFocus gespeichert haben.

Speichern Sie Ihre LoadFocus API-Zugangsdaten als Umgebungsvariablen in CircleCI:

  1. Navigieren Sie zu Ihrem Projekt in CircleCI
  2. Gehen Sie zu Project Settings > Environment Variables
  3. Fügen Sie folgende Variablen hinzu:
    • LOADFOCUS_API_KEY: Ihr LoadFocus API-Schlüssel
    • LOADFOCUS_TEAM_ID: Ihre LoadFocus Team-ID

Erstellen oder aktualisieren Sie Ihre .circleci/config.yml-Datei, um Leistungstests einzuschließen:

version: 2.1
jobs:
performance_test:
docker:
- image: cimg/node:24.22
steps:
- checkout
- run:
name: Install LoadFocus JMeter API Client
command: npm install -g @loadfocus/loadfocus-api-client
- run:
name: Configure LoadFocus API Client
command: |
loadfocus-api config set --apikey $LOADFOCUS_API_KEY --teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# --name is the exact name of a test you saved in LoadFocus
loadfocus-api jmeter run-test \
--name "My_JMeter_Test" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json
- store_artifacts:
path: performance_results.json
destination: performance-test-results
# run-test exits with code 1 when a threshold is missed, which fails this job.
# performance_results.json starts with a few progress lines before the JSON object:
# keep only the JSON with: sed -n '/^{$/,$p' performance_results.json > results.json
workflows:
version: 2
build_test_deploy:
jobs:
- build_and_test
- performance_test:
requires:
- build_and_test
- deploy:
requires:
- performance_test
filters:
branches:
only: main

3. Build bei Leistungsproblemen fehlschlagen lassen

Abschnitt betitelt „3. Build bei Leistungsproblemen fehlschlagen lassen“

Der obige Schritt "Run Performance Tests" lässt den Build bereits fehlschlagen, wenn ein Schwellenwert verfehlt wird, denn run-test beendet sich mit Exit-Code 1 und CircleCI stoppt den Job bei einem Exit-Code ungleich null. Wenn Sie zuvor eine eigene Meldung ausgeben möchten, behandeln Sie den Fehler in derselben Zeile:

- run:
name: Run Performance Tests
command: |
loadfocus-api jmeter run-test \
--name "My_JMeter_Test" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > performance_results.json || {
echo "Performance test failed to meet thresholds"
exit 1
}

Für die parallele Ausführung mehrerer Leistungstests:

performance_tests:
docker:
- image: cimg/node:24.22
parallelism: 3
steps:
- checkout
- run:
name: Install LoadFocus JMeter API Client
command: npm install -g @loadfocus/loadfocus-api-client
- run:
name: Configure LoadFocus API Client
command: |
loadfocus-api config set --apikey $LOADFOCUS_API_KEY --teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# Get test name based on index
TESTS=("API_Test" "Frontend_Test" "Database_Test")
INDEX=$(( $CIRCLE_NODE_INDEX % 3 ))
TEST_NAME=${TESTS[$INDEX]}
echo "Running test: $TEST_NAME"
loadfocus-api jmeter run-test \
--name "$TEST_NAME" \
--thresholds "avgresponse<=200,errors==0,p95<=250" \
--format json > "performance_results_${TEST_NAME}.json"
- store_artifacts:
path: performance_results_*.json
destination: performance-test-results
  1. Ressourcenzuweisung: Stellen Sie sicher, dass Ihr CircleCI-Plan ausreichende Ressourcen für die Ausführung von Leistungstests hat, insbesondere bei lang laufenden Tests.

  2. Timeout-Einstellungen: Passen Sie für längere Tests den Job-Timeout in CircleCI an:

    - run:
    name: Run Performance Tests
    command: loadfocus-api jmeter run-test --name "Test_Name" --wait-timeout 3600
    no_output_timeout: 60m
  3. Bedingte Tests: Führen Sie Leistungstests nur auf bestimmten Branches oder für bestimmte Commits aus:

    performance_test:
    # Only run if commit message contains [PERF-TEST]
    when:
    condition:
    or:
    - equal: [ main, << pipeline.git.branch >> ]
    - matches:
    pattern: ".*\\[PERF-TEST\\].*"
    value: << pipeline.git.commit.message >>
  4. Benachrichtigungen: Richten Sie Benachrichtigungen für Leistungstestfehler ein:

    - run:
    name: Notify on Performance Test Failure
    command: |
    curl -X POST -H "Content-Type: application/json" \
    -d "{\"text\":\"Performance test failed for $CIRCLE_PROJECT_REPONAME\"}" \
    $SLACK_WEBHOOK_URL
    when: on_fail

Weitere Informationen finden Sie in der CircleCI-Dokumentation und der LoadFocus API Client-Dokumentation.