API-integration för lasttestning
Denna guide förklarar hur du använder LoadFocus API-klienten, både via kommandoradsgränssnittet (CLI) och genom att direkt använda JavaScript-biblioteket i dina applikationer.
Innehållsförteckning
- Installation
- Konfiguration
- Kommandoradsgränssnitt (CLI)
- Användning av JavaScript-biblioteket
- Avancerad användning
- Felsökning
Installation
Global installation
npm install -g @loadfocus/loadfocus-api-client
Lokal projektinstallation
npm install @loadfocus/loadfocus-api-client
Konfiguration
Innan du använder LoadFocus API-klienten behöver du konfigurera dina API-uppgifter.
CLI-konfiguration
# Ange API-nyckel och team-IDloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# Verifiera konfigurationloadfocus-api config show
JavaScript-konfiguration
const { configManager } = require('@loadfocus/loadfocus-api-client');// Ange konfigurationconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Verifiera konfigurationconsole.log(configManager.get('apikey')); // Ska skriva ut din API-nyckelconsole.log(configManager.isConfigured()); // Ska skriva ut true om all nödvändig konfiguration är angiven
Kommandoradsgränssnitt (CLI)
LoadFocus API-klienten tillhandahåller ett omfattande CLI för att interagera med LoadFocus API.
JMeter-testkörning
Köra ett test
# Kör ett test efter namnloadfocus-api jmeter execute --name "My JMeter Test"# Kör ett test med specifika parametrarloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
Köra ett test och vänta på slutförande
# Kör ett test och vänta på slutförandeloadfocus-api jmeter run-test --name "My JMeter Test"# Kör ett test med tröskelvärdenloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# Kör ett test med anpassad timeout och pollningsintervallloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
Övervakning av teststatus
# Kontrollera status för ett test med namn och IDloadfocus-api jmeter status --name "My JMeter Test" --id 12345# Hämta en lista över senaste testkörningarloadfocus-api jmeter runs --limit 10
Hämtning av resultat
# Hämta resultat för ett specifikt testloadfocus-api jmeter results --name "My JMeter Test" --id 12345# Hämta resultat med specifika mätvärdenloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
Arbeta med tröskelvärden
Kommandot run-test stöder utvärdering av tröskelvärden för att automatiskt avgöra om ett test godkänns eller underkänns baserat på prestandamätvärden.
# Kör ett test med flera tröskelvärdenloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
Stödda tröskeloperatorer:
<=- Mindre än eller lika med<- Mindre än>=- Större än eller lika med>- Större än==- Lika med!=- Inte lika med
Utdataformat
# Hämta resultat i JSON-formatloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Standard formaterad utskriftloadfocus-api jmeter run-test --name "My JMeter Test"
Användning av JavaScript-biblioteket
LoadFocus API-klienten kan också användas direkt som ett JavaScript-bibliotek i dina applikationer.
Grundläggande konfiguration
// Importera LoadFocus API-klientenconst loadfocus = require('@loadfocus/loadfocus-api-client');// Åtkomst till specifika komponenterconst { JMeterClient, configManager } = loadfocus;
JMeter-klient
// Skapa en JMeter-klientconst jmeterClient = new loadfocus.JMeterClient();// Eller med explicit konfigurationconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
Köra tester
async function executeTest() {try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test',threads: 50,rampup: 30,duration: 300});console.log('Test execution started:', result);return result.testrunid; // Returnera test-ID för senare användning} catch (error) {console.error('Error executing test:', error);}}
Övervaka teststatus
async function checkTestStatus(testName, testId) {try {const status = await jmeterClient.getStatus({testrunname: testName,testrunid: testId});console.log('Test status:', status);return status.state; // Returnera aktuellt tillstånd} catch (error) {console.error('Error checking test status:', error);}}
Hämta resultat
async function getTestResults(testName, testId) {try {// Hämta tillgängliga etiketter för testetconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// Hämta resultat för varje etikettconst allResults = [];for (const label of labels) {const labelResults = await jmeterClient.getResults({testrunname: testName,testrunid: testId,filter: label});allResults.push({label,results: labelResults});}console.log('Test results:', allResults);return allResults;} catch (error) {console.error('Error retrieving test results:', error);}}
Komplett exempel
Här är ett komplett exempel som kör ett test, väntar på slutförande och hämtar resultat:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// KonfigureraconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// Skapa klientconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// Kör testetconsole.log('Executing test...');const executeResult = await jmeterClient.execute({testrunname: 'My JMeter Test'});const testId = executeResult.testrunid;console.log(`Test execution started with ID: ${testId}`);// Vänta på slutförandeconsole.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 (status.state === 'failed' || status.state === 'error') {throw new Error(`Test failed with state: ${status.state}`);} else {// Vänta innan nästa kontrollawait new Promise(resolve => setTimeout(resolve, 10000));}}// Hämta resultatconsole.log('Getting test results...');const labels = await jmeterClient.getLabels({testrunname: 'My JMeter Test',testrunid: testId});const allResults = [];for (const label of labels) {const labelResults = await jmeterClient.getResults({testrunname: 'My JMeter Test',testrunid: testId,filter: label});allResults.push({label,results: labelResults});}console.log('Test results:', JSON.stringify(allResults, null, 2));return allResults;} catch (error) {console.error('Error running test:', error);}}// Kör testetrunCompleteTest();
Avancerad användning
Anpassad HTTP-konfiguration
Du kan anpassa HTTP-klienten som används av LoadFocus API-klienten:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// Skapa klient med anpassade HTTP-alternativconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 sekunderretries: 3,headers: {'User-Agent': 'My Custom Application'}}});
Felhantering
LoadFocus API-klienten tillhandahåller detaljerad felinformation:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {// Förfrågan gjordes och servern svarade med en statuskod// som faller utanför intervallet 2xxconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// Förfrågan gjordes men inget svar mottogsconsole.error('Network Error:', error.request);} else {// Något hände vid konfigureringen av förfrågan som utlöste ett felconsole.error('Request Error:', error.message);}}
Felsökning
Vanliga problem
Autentiseringsfel:
- Se till att din API-nyckel och ditt team-ID är korrekt konfigurerade
- Kontrollera att din API-nyckel har nödvändiga behörigheter
Misslyckade testkörningar:
- Verifiera att testnamnet finns i ditt LoadFocus-konto
- Kontrollera om du har nått ditt kontos gräns för samtidiga tester
Timeout-problem:
- För långvariga tester, öka parametern
waitTimeout - Överväg att implementera en pollningsmekanism istället för att vänta synkront
- För långvariga tester, öka parametern
Problem med att hämta resultat:
- Se till att testet har slutförts innan du hämtar resultat
- Kontrollera att test-ID:t är korrekt
Felsökning
Aktivera felsökningsloggning för mer detaljerad information:
// I din JavaScript-kodprocess.env.DEBUG = 'true';// Eller vid användning av CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
För ytterligare hjälp, se LoadFocus API-dokumentationen eller kontakta supporten.