Ausführen von JMeter-Tests mit dem LoadFocus API Client
Diese Anleitung erklärt, wie Sie den LoadFocus API Client verwenden, sowohl über die Kommandozeilenschnittstelle (CLI) als auch durch direkte Verwendung der JavaScript-Bibliothek in Ihren Anwendungen. Er führt JMeter-Tests aus, die bereits in Ihrem LoadFocus-Konto vorhanden sind, per Namen. Sie benötigen Ihren API-Schlüssel und Ihre Team-ID von der Seite API-Schlüssel. Fertige Pipeline-Setups finden Sie unter Integration des JMeter API Clients mit CI/CD-Pipelines.
Inhaltsverzeichnis
Abschnitt betitelt „Inhaltsverzeichnis“- Installation
- Konfiguration
- Kommandozeilenschnittstelle (CLI)
- JavaScript-Bibliotheksnutzung
- Erweiterte Nutzung
- Fehlerbehebung
Installation
Abschnitt betitelt „Installation“Globale Installation
Abschnitt betitelt „Globale Installation“npm install -g @loadfocus/loadfocus-api-clientLokale Projektinstallation
Abschnitt betitelt „Lokale Projektinstallation“npm install @loadfocus/loadfocus-api-clientKonfiguration
Abschnitt betitelt „Konfiguration“Bevor Sie den LoadFocus API Client verwenden, müssen Sie Ihre API-Anmeldedaten konfigurieren.
CLI-Konfiguration
Abschnitt betitelt „CLI-Konfiguration“# API-Schluessel und Team-ID festlegenloadfocus-api config set --apikey YOUR_API_KEY --teamid YOUR_TEAM_ID
# Konfiguration ueberpruefenloadfocus-api config showJavaScript-Konfiguration
Abschnitt betitelt „JavaScript-Konfiguration“const { configManager } = require('@loadfocus/loadfocus-api-client');
// Konfiguration festlegenconfigManager.set({ apiKey: 'YOUR_API_KEY', teamId: 'YOUR_TEAM_ID' });
// Konfiguration ueberpruefenconsole.log(configManager.isConfigured()); // Sollte true ausgeben, wenn API-Schlüssel und Team-ID gesetzt sindKommandozeilenschnittstelle (CLI)
Abschnitt betitelt „Kommandozeilenschnittstelle (CLI)“Der LoadFocus API Client bietet eine umfassende CLI für die Interaktion mit der LoadFocus API.
JMeter-Testausführung
Abschnitt betitelt „JMeter-Testausführung“Einen Test ausführen
Abschnitt betitelt „Einen Test ausführen“# Einen Test nach Namen ausfuehrenloadfocus-api jmeter execute --name "My JMeter Test"Einen Test ausführen und auf Abschluss warten
Abschnitt betitelt „Einen Test ausführen und auf Abschluss warten“# Einen Test ausfuehren und auf Abschluss wartenloadfocus-api jmeter run-test --name "My JMeter Test"
# Einen Test mit Schwellenwerten ausfuehrenloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"
# Einen Test mit benutzerdefiniertem Timeout und Abfrageintervall ausfuehrenloadfocus-api jmeter run-test --name "My JMeter Test" --wait-timeout 1800 --poll-interval 15Teststatus-Überwachung
Abschnitt betitelt „Teststatus-Überwachung“# Status eines Tests nach Name und ID pruefenloadfocus-api jmeter status --name "My JMeter Test" --id 12345
# Eine Liste der letzten Testlaeufe abrufenloadfocus-api jmeter runsErgebnisabruf
Abschnitt betitelt „Ergebnisabruf“# Ergebnisse fuer einen bestimmten Test abrufenloadfocus-api jmeter results --name "My JMeter Test" --id 12345Arbeiten mit Schwellenwerten
Abschnitt betitelt „Arbeiten mit Schwellenwerten“Der Befehl run-test prüft jeden Schwellenwert gegen jedes Label (jede Anfrage) des Tests und beendet sich mit Exit-Code 1, wenn ein Schwellenwert fehlschlägt, sodass ein CI-Job mit ihm fehlschlägt. Übergeben Sie keine --thresholds, gilt avgresponse<=100, also eine durchschnittliche Antwortzeit von höchstens 100 ms.
# Einen Test mit mehreren Schwellenwerten ausfuehrenloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"Unterstützte Schwellenwert-Operatoren:
<=- Kleiner oder gleich<- Kleiner als>=- Größer oder gleich>- Größer als==(oder=) - Gleich!=- Ungleich
Die verwendbaren Metriken sind:
avgresponse,min,max,p95undp99: Antwortzeiten in Millisekundenerrors: Anzahl der Fehlerhitspersec: Durchsatz in Anfragen pro Sekundesamples: Anzahl der Samples
Ein Metrikname, der nicht in dieser Liste steht, wird ohne Fehler übersprungen, prüfen Sie also die Schreibweise.
Ausgabeformate
Abschnitt betitelt „Ausgabeformate“# Das Endergebnis als JSON ausgeben (davor werden Fortschrittszeilen ausgegeben)loadfocus-api jmeter run-test --name "My JMeter Test" --format json
# Standard formatierte Ausgabeloadfocus-api jmeter run-test --name "My JMeter Test"JavaScript-Bibliotheksnutzung
Abschnitt betitelt „JavaScript-Bibliotheksnutzung“Der LoadFocus API Client kann auch direkt als JavaScript-Bibliothek in Ihren Anwendungen verwendet werden.
Grundlegende Einrichtung
Abschnitt betitelt „Grundlegende Einrichtung“// LoadFocus API Client importierenconst loadfocus = require('@loadfocus/loadfocus-api-client');
// Auf bestimmte Komponenten zugreifenconst { createClient, configManager } = loadfocus;JMeter Client
Abschnitt betitelt „JMeter Client“// Einen JMeter Client erstellenconst jmeterClient = loadfocus.createClient('jmeter');
// Oder mit expliziter Konfigurationconst jmeterClient = loadfocus.createClient('jmeter', { apiKey: 'YOUR_API_KEY', teamId: 'YOUR_TEAM_ID'});Tests ausführen
Abschnitt betitelt „Tests ausführen“async function executeTest() { try { const result = await jmeterClient.execute({ testrunname: 'My JMeter Test' });
console.log('Test execution started:', result); return result.testrunid; // Return the test ID for later use } catch (error) { console.error('Error executing test:', error); }}Teststatus überwachen
Abschnitt betitelt „Teststatus überwachen“async function checkTestStatus(testName, testId) { try { const status = await jmeterClient.getStatus({ testrunname: testName, testrunid: testId });
console.log('Test status:', status); return status.state; // Return the current state } catch (error) { console.error('Error checking test status:', error); }}Ergebnisse abrufen
Abschnitt betitelt „Ergebnisse abrufen“async function getTestResults(testName, testId) { try { // Verfuegbare Labels fuer den Test abrufen const labels = await jmeterClient.getLabels({ testrunname: testName, testrunid: testId });
console.log('Test labels:', labels);
// Ergebnisse fuer jedes Label abrufen const allResults = []; for (const item of labels) { const labelResults = await jmeterClient.getResults({ testrunname: testName, testrunid: testId, filter: item.label });
allResults.push({ label: item.label, results: labelResults }); }
console.log('Test results:', allResults); return allResults; } catch (error) { console.error('Error retrieving test results:', error); }}Vollständiges Beispiel
Abschnitt betitelt „Vollständiges Beispiel“Hier ist ein vollständiges Beispiel, das einen Test ausführt, auf den Abschluss wartet und Ergebnisse abruft:
const { createClient, configManager } = require('@loadfocus/loadfocus-api-client');
// Konfiguration einrichtenconfigManager.set({ apiKey: 'YOUR_API_KEY', teamId: 'YOUR_TEAM_ID' });
// Client erstellenconst jmeterClient = createClient('jmeter');
async function runCompleteTest() { try { // Test ausfuehren console.log('Executing test...'); const executeResult = await jmeterClient.execute({ testrunname: 'My JMeter Test' });
const testId = executeResult.testrunid; console.log(`Test execution started with ID: ${testId}`);
// Auf Abschluss warten console.log('Waiting for test to complete...'); let completed = false; while (!completed) { const status = await jmeterClient.getStatus({ testrunname: 'My JMeter Test', testrunid: testId });
console.log(`Current state: ${status.state}`);
if (status.state === 'finished') { completed = true; } else if (['aborted', 'finished_failed_to_run', 'finished_failed_timeout'].includes(status.state)) { throw new Error(`Test ended with state: ${status.state}`); } else { // Vor erneuter Pruefung warten await new Promise(resolve => setTimeout(resolve, 10000)); } }
// Ergebnisse abrufen console.log('Getting test results...'); const labels = await jmeterClient.getLabels({ testrunname: 'My JMeter Test', testrunid: testId });
const allResults = []; for (const item of labels) { const labelResults = await jmeterClient.getResults({ testrunname: 'My JMeter Test', testrunid: testId, filter: item.label });
allResults.push({ label: item.label, results: labelResults }); }
console.log('Test results:', JSON.stringify(allResults, null, 2)); return allResults; } catch (error) { console.error('Error running test:', error); }}
// Test ausfuehrenrunCompleteTest();Erweiterte Nutzung
Abschnitt betitelt „Erweiterte Nutzung“Fehlerbehandlung
Abschnitt betitelt „Fehlerbehandlung“Der LoadFocus API Client liefert detaillierte Fehlerinformationen:
try { const result = await jmeterClient.execute({ testrunname: 'My JMeter Test' });} catch (error) { if (error.status) { // Die Anfrage wurde gesendet und der Server antwortete mit einem Statuscode // ausserhalb des 2xx-Bereichs console.error('API Error:', error.status, error.data); } else if (error.request) { // Die Anfrage wurde gesendet, aber keine Antwort empfangen console.error('Network Error:', error.request); } else { // Beim Einrichten der Anfrage ist ein Fehler aufgetreten console.error('Request Error:', error.message); }}Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Häufige Probleme
Abschnitt betitelt „Häufige Probleme“-
Authentifizierungsfehler:
- Stellen Sie sicher, dass Ihr API-Schlüssel und Ihre Team-ID korrekt konfiguriert sind
- Prüfen Sie, ob Ihr API-Schlüssel die erforderlichen Berechtigungen hat
-
Testausführungsfehler:
- Überprüfen Sie, ob der Testname in Ihrem LoadFocus-Konto existiert
- Prüfen Sie, ob Sie das Limit für gleichzeitige Tests Ihres Kontos erreicht haben
-
Timeout-Probleme:
- Erhöhen Sie bei lang laufenden Tests den Parameter
--wait-timeout(Standard 1800 Sekunden)
- Erhöhen Sie bei lang laufenden Tests den Parameter
-
Probleme beim Ergebnisabruf:
- Stellen Sie sicher, dass der Test abgeschlossen ist, bevor Sie Ergebnisse abrufen
- Prüfen Sie, ob die Test-ID korrekt ist
Für weitere Hilfe kontaktieren Sie bitte den Support.