Slodzes testēšanas API integrācija

Šī pamācība izskaidro, kā izmantot LoadFocus API klientu gan caur komandrindas saskarni (CLI), gan tieši izmantojot JavaScript bibliotēku savās lietotnēs.

Satura rādītājs

Instalācija

Globāla instalācija

npm install -g @loadfocus/loadfocus-api-client

Lokāla projekta instalācija

npm install @loadfocus/loadfocus-api-client

Konfigurācija

Pirms LoadFocus API klienta izmantošanas jums jākonfigurē savi API akreditācijas dati.

CLI konfigurācija

# Iestatiet API atslēgu un komandas ID
loadfocus-api config set apikey YOUR_API_KEY
loadfocus-api config set teamid YOUR_TEAM_ID
# Pārbaudiet konfigurāciju
loadfocus-api config show

JavaScript konfigurācija

const { configManager } = require('@loadfocus/loadfocus-api-client');
// Iestatiet konfigurāciju
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Pārbaudiet konfigurāciju
console.log(configManager.get('apikey')); // Jāizdrukā jūsu API atslēga
console.log(configManager.isConfigured()); // Jāizdrukā true, ja visa nepieciešamā konfigurācija ir iestatīta

Komandrindas saskarne (CLI)

LoadFocus API klients nodrošina visaptverošu CLI mijiedarbībai ar LoadFocus API.

JMeter testa izpilde

Testa izpilde

# Izpildiet testu pēc nosaukuma
loadfocus-api jmeter execute --name "My JMeter Test"
# Izpildiet testu ar konkrētiem parametriem
loadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300

Testa izpilde un gaidīšana līdz pabeigšanai

# Izpildiet testu un gaidiet pabeigšanu
loadfocus-api jmeter run-test --name "My JMeter Test"
# Izpildiet testu ar sliekšņiem
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"
# Izpildiet testu ar pielāgotu taimautu un aptaujas intervālu
loadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15

Testa statusa uzraudzība

# Pārbaudiet testa statusu pēc nosaukuma un ID
loadfocus-api jmeter status --name "My JMeter Test" --id 12345
# Iegūstiet pēdējo testu izpilžu sarakstu
loadfocus-api jmeter runs --limit 10

Rezultātu iegūšana

# Iegūstiet rezultātus konkrētam testam
loadfocus-api jmeter results --name "My JMeter Test" --id 12345
# Iegūstiet rezultātus ar konkrētām metrikām
loadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors

Darbs ar sliekšņiem

Komanda run-test atbalsta sliekšņu novērtēšanu, lai automātiski noteiktu, vai tests ir izturēts vai neizdevies, pamatojoties uz veiktspējas metrikām.

# Izpildiet testu ar vairākiem sliekšņiem
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"

Atbalstītie sliekšņu operatori:

  • <= - Mazāks vai vienāds ar
  • < - Mazāks par
  • >= - Lielāks vai vienāds ar
  • > - Lielāks par
  • == - Vienāds ar
  • != - Nav vienāds ar

Izvades formāti

# Iegūstiet rezultātus JSON formātā
loadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json
# Noklusējuma formatētā izvade
loadfocus-api jmeter run-test --name "My JMeter Test"

JavaScript bibliotēkas izmantošana

LoadFocus API klientu var izmantot arī tieši kā JavaScript bibliotēku jūsu lietotnēs.

Pamata iestatīšana

// Importējiet LoadFocus API klientu
const loadfocus = require('@loadfocus/loadfocus-api-client');
// Piekļūstiet konkrētiem komponentiem
const { JMeterClient, configManager } = loadfocus;

JMeter klients

// Izveidojiet JMeter klientu
const jmeterClient = new loadfocus.JMeterClient();
// Vai ar tiešu konfigurāciju
const jmeterClient = new loadfocus.JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID'
});

Testu izpilde

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; // Atgrieziet testa ID vēlākai izmantošanai
} catch (error) {
console.error('Error executing test:', error);
}
}

Testa statusa uzraudzība

async function checkTestStatus(testName, testId) {
try {
const status = await jmeterClient.getStatus({
testrunname: testName,
testrunid: testId
});
console.log('Test status:', status);
return status.state; // Atgrieziet pašreizējo stāvokli
} catch (error) {
console.error('Error checking test status:', error);
}
}

Rezultātu iegūšana

async function getTestResults(testName, testId) {
try {
// Iegūstiet pieejamās etiķetes testam
const labels = await jmeterClient.getLabels({
testrunname: testName,
testrunid: testId
});
console.log('Test labels:', labels);
// Iegūstiet rezultātus katrai etiķetei
const 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);
}
}

Pilns piemērs

Šeit ir pilns piemērs, kas izpilda testu, gaida pabeigšanu un iegūst rezultātus:

const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');
// Iestatiet konfigurāciju
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Izveidojiet klientu
const jmeterClient = new JMeterClient();
async function runCompleteTest() {
try {
// Izpildiet testu
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}`);
// Gaidiet pabeigšanu
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 (status.state === 'failed' || status.state === 'error') {
throw new Error(`Test failed with state: ${status.state}`);
} else {
// Gaidiet pirms atkārtotas pārbaudes
await new Promise(resolve => setTimeout(resolve, 10000));
}
}
// Iegūstiet rezultātus
console.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);
}
}
// Izpildiet testu
runCompleteTest();

Papildu izmantošana

Pielāgota HTTP konfigurācija

Varat pielāgot HTTP klientu, ko izmanto LoadFocus API klients:

const { JMeterClient } = require('@loadfocus/loadfocus-api-client');
// Izveidojiet klientu ar pielāgotām HTTP opcijām
const jmeterClient = new JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID',
httpOptions: {
timeout: 30000, // 30 sekundes
retries: 3,
headers: {
'User-Agent': 'My Custom Application'
}
}
});

Kļūdu apstrāde

LoadFocus API klients nodrošina detalizētu kļūdu informāciju:

try {
const result = await jmeterClient.execute({
testrunname: 'My JMeter Test'
});
} catch (error) {
if (error.response) {
// Pieprasījums tika veikts un serveris atbildēja ar statusa kodu
// ārpus 2xx diapazona
console.error('API Error:', error.response.status, error.response.data);
} else if (error.request) {
// Pieprasījums tika veikts, bet atbilde netika saņemta
console.error('Network Error:', error.request);
} else {
// Kaut kas notika pieprasījuma iestatīšanā, kas izraisīja kļūdu
console.error('Request Error:', error.message);
}
}

Problēmu novēršana

Biežākās problēmas

  1. Autentifikācijas kļūdas:

    • Pārliecinieties, ka jūsu API atslēga un komandas ID ir pareizi konfigurēti
    • Pārbaudiet, vai jūsu API atslēgai ir nepieciešamās atļaujas
  2. Testa izpildes neveiksmes:

    • Pārbaudiet, vai testa nosaukums pastāv jūsu LoadFocus kontā
    • Pārbaudiet, vai esat sasniedzis sava konta vienlaicīgo testu limitu
  3. Taimauta problēmas:

    • Ilgstošiem testiem palieliniet waitTimeout parametru
    • Apsveriet aptaujas mehānisma ieviešanu sinhrona gaidīšanas vietā
  4. Rezultātu iegūšanas problēmas:

    • Pārliecinieties, ka tests ir pabeigts pirms rezultātu iegūšanas
    • Pārbaudiet, vai testa ID ir pareizs

Atkļūdošana

Iespējojiet atkļūdošanas žurnalēšanu detalizētākai informācijai:

// Jūsu JavaScript kodā
process.env.DEBUG = 'true';
// Vai izmantojot CLI
DEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"

Papildu palīdzībai, lūdzu, skatiet LoadFocus API dokumentāciju vai sazinieties ar atbalstu.