Kuormitustestauksen API-integraatio

Tämä opas selittää kuinka käyttää LoadFocus API Client -työkalua sekä komentoriviliittymän (CLI) kautta että suoraan JavaScript-kirjastona sovelluksissasi.

Sisällysluettelo

Asennus

Globaali asennus

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

Paikallinen projektiasennus

npm install @loadfocus/loadfocus-api-client

Konfigurointi

Ennen LoadFocus API Client -työkalun käyttöä sinun on konfiguroitava API-tunnistetietosi.

CLI-konfigurointi

# Aseta API-avain ja tiimi-ID
loadfocus-api config set apikey YOUR_API_KEY
loadfocus-api config set teamid YOUR_TEAM_ID
# Tarkista konfigurointi
loadfocus-api config show

JavaScript-konfigurointi

const { configManager } = require('@loadfocus/loadfocus-api-client');
// Aseta konfiguraatio
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Tarkista konfiguraatio
console.log(configManager.get('apikey')); // Tulostaa API-avaimesi
console.log(configManager.isConfigured()); // Tulostaa true jos kaikki vaaditut asetukset on asetettu

Komentoriviliittymä (CLI)

LoadFocus API Client tarjoaa kattavan CLI:n LoadFocus API:n kanssa vuorovaikuttamiseen.

JMeter-testin suoritus

Suorita testi

# Suorita testi nimellä
loadfocus-api jmeter execute --name "My JMeter Test"
# Suorita testi tietyillä parametreilla
loadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300

Suorita testi ja odota valmistumista

# Suorita testi ja odota valmistumista
loadfocus-api jmeter run-test --name "My JMeter Test"
# Suorita testi kynnysarvoilla
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"
# Suorita testi mukautetulla aikakatkaisulla ja pollausvälillä
loadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15

Testin tilan seuranta

# Tarkista testin tila nimellä ja ID:llä
loadfocus-api jmeter status --name "My JMeter Test" --id 12345
# Hae lista viimeisimmistä testiajoista
loadfocus-api jmeter runs --limit 10

Tulosten haku

# Hae tietyn testin tulokset
loadfocus-api jmeter results --name "My JMeter Test" --id 12345
# Hae tulokset tietyillä mittareilla
loadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors

Kynnysarvojen käyttö

run-test-komento tukee kynnysarvojen arviointia sen automaattiseksi määrittämiseksi, läpäiseekö testi suorituskykymittareiden perusteella.

# Suorita testi useilla kynnysarvoilla
loadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"

Tuetut kynnysarvo-operaattorit:

  • <= - Pienempi tai yhtä suuri
  • < - Pienempi kuin
  • >= - Suurempi tai yhtä suuri
  • > - Suurempi kuin
  • == - Yhtä suuri
  • != - Eri suuri

Tulostusmuodot

# Hae tulokset JSON-muodossa
loadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json
# Oletusarvoinen siististi tulostettu tulostus
loadfocus-api jmeter run-test --name "My JMeter Test"

JavaScript-kirjaston käyttö

LoadFocus API Client -työkalua voidaan käyttää myös suoraan JavaScript-kirjastona sovelluksissasi.

Perusasennus

// Tuo LoadFocus API Client
const loadfocus = require('@loadfocus/loadfocus-api-client');
// Käytä tiettyjä komponentteja
const { JMeterClient, configManager } = loadfocus;

JMeter Client

// Luo JMeter-asiakas
const jmeterClient = new loadfocus.JMeterClient();
// Tai eksplisiittisellä konfiguraatiolla
const jmeterClient = new loadfocus.JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID'
});

Testien suoritus

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; // Palauta testin ID myöhempää käyttöä varten
} catch (error) {
console.error('Error executing test:', error);
}
}

Testin tilan seuranta

async function checkTestStatus(testName, testId) {
try {
const status = await jmeterClient.getStatus({
testrunname: testName,
testrunid: testId
});
console.log('Test status:', status);
return status.state; // Palauta nykyinen tila
} catch (error) {
console.error('Error checking test status:', error);
}
}

Tulosten haku

async function getTestResults(testName, testId) {
try {
// Hae testin käytettävissä olevat nimiöt
const labels = await jmeterClient.getLabels({
testrunname: testName,
testrunid: testId
});
console.log('Test labels:', labels);
// Hae tulokset jokaiselle nimiölle
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);
}
}

Täydellinen esimerkki

Tässä täydellinen esimerkki, joka suorittaa testin, odottaa valmistumista ja hakee tulokset:

const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');
// Aseta konfiguraatio
configManager.set('apikey', 'YOUR_API_KEY');
configManager.set('teamid', 'YOUR_TEAM_ID');
// Luo asiakas
const jmeterClient = new JMeterClient();
async function runCompleteTest() {
try {
// Suorita testi
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}`);
// Odota valmistumista
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 {
// Odota ennen uutta tarkistusta
await new Promise(resolve => setTimeout(resolve, 10000));
}
}
// Hae tulokset
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);
}
}
// Suorita testi
runCompleteTest();

Edistynyt käyttö

Mukautettu HTTP-konfiguraatio

Voit mukauttaa LoadFocus API Client -työkalun käyttämää HTTP-asiakasta:

const { JMeterClient } = require('@loadfocus/loadfocus-api-client');
// Luo asiakas mukautetuilla HTTP-asetuksilla
const jmeterClient = new JMeterClient({
apikey: 'YOUR_API_KEY',
teamid: 'YOUR_TEAM_ID',
httpOptions: {
timeout: 30000, // 30 sekuntia
retries: 3,
headers: {
'User-Agent': 'My Custom Application'
}
}
});

Virheiden käsittely

LoadFocus API Client tarjoaa yksityiskohtaista virhetietoa:

try {
const result = await jmeterClient.execute({
testrunname: 'My JMeter Test'
});
} catch (error) {
if (error.response) {
// Pyyntö tehtiin ja palvelin vastasi tilakoodilla
// joka on 2xx-alueen ulkopuolella
console.error('API Error:', error.response.status, error.response.data);
} else if (error.request) {
// Pyyntö tehtiin mutta vastausta ei saatu
console.error('Network Error:', error.request);
} else {
// Pyynnön asettamisessa tapahtui virhe
console.error('Request Error:', error.message);
}
}

Vianmääritys

Yleisiä ongelmia

  1. Todennusvirheet:

    • Varmista, että API-avaimesi ja tiimi-ID on konfiguroitu oikein
    • Tarkista, että API-avaimellasi on tarvittavat käyttöoikeudet
  2. Testin suoritusvirheet:

    • Varmista, että testinimi on olemassa LoadFocus-tilissäsi
    • Tarkista, oletko saavuttanut tilisi samanaikaisten testien rajan
  3. Aikakatkasuongelmat:

    • Pitkäkestoisille testeille kasvata waitTimeout-parametria
    • Harkitse pollausmekanismin käyttöönottoa synkronisen odotuksen sijaan
  4. Tulosten hakuongelmat:

    • Varmista, että testi on valmistunut ennen tulosten hakua
    • Tarkista, onko testin ID oikein

Virheenkorjaus

Ota debug-lokitus käyttöön yksityiskohtaisempia tietoja varten:

// JavaScript-koodissasi
process.env.DEBUG = 'true';
// Tai CLI:tä käytettäessä
DEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"

Lisäapua varten tutustu LoadFocus API -dokumentaatioon tai ota yhteyttä tukeen.