การผสานรวม API การทดสอบโหลด
คู่มือนี้อธิบายวิธีใช้ LoadFocus API Client ทั้งผ่าน command-line interface (CLI) และการใช้ JavaScript library โดยตรงในแอปพลิเคชันของคุณ
สารบัญ
- การติดตั้ง
- การกำหนดค่า
- Command-Line Interface (CLI)
- การใช้ JavaScript Library
- การใช้งานขั้นสูง
- การแก้ไขปัญหา
การติดตั้ง
การติดตั้งแบบ Global
npm install -g @loadfocus/loadfocus-api-client
การติดตั้งในโปรเจกต์
npm install @loadfocus/loadfocus-api-client
การกำหนดค่า
ก่อนใช้ LoadFocus API Client คุณต้องกำหนดค่า API credentials ของคุณ
การกำหนดค่า CLI
# ตั้งค่า API key และ team IDloadfocus-api config set apikey YOUR_API_KEYloadfocus-api config set teamid YOUR_TEAM_ID# ตรวจสอบการกำหนดค่าloadfocus-api config show
การกำหนดค่า JavaScript
const { configManager } = require('@loadfocus/loadfocus-api-client');// ตั้งค่าการกำหนดค่าconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// ตรวจสอบการกำหนดค่าconsole.log(configManager.get('apikey')); // Should print your API keyconsole.log(configManager.isConfigured()); // Should print true if all required config is set
Command-Line Interface (CLI)
LoadFocus API Client ให้ CLI ที่ครอบคลุมสำหรับการทำงานกับ LoadFocus API
การรันทดสอบ JMeter
รันทดสอบ
# รันทดสอบตามชื่อloadfocus-api jmeter execute --name "My JMeter Test"# รันทดสอบพร้อมพารามิเตอร์เฉพาะloadfocus-api jmeter execute --name "My JMeter Test" --threads 50 --rampup 30 --duration 300
รันทดสอบและรอจนเสร็จ
# รันทดสอบและรอจนเสร็จloadfocus-api jmeter run-test --name "My JMeter Test"# รันทดสอบพร้อม thresholdsloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250"# รันทดสอบพร้อม timeout และ polling interval ที่กำหนดเองloadfocus-api jmeter run-test --name "My JMeter Test" --waitTimeout 1800 --pollInterval 15
การตรวจสอบสถานะทดสอบ
# ตรวจสอบสถานะของทดสอบตามชื่อและ IDloadfocus-api jmeter status --name "My JMeter Test" --id 12345# ดูรายการการรันทดสอบล่าสุดloadfocus-api jmeter runs --limit 10
การดึงผลลัพธ์
# ดูผลลัพธ์สำหรับการทดสอบเฉพาะloadfocus-api jmeter results --name "My JMeter Test" --id 12345# ดูผลลัพธ์พร้อมเมตริกเฉพาะloadfocus-api jmeter results --name "My JMeter Test" --id 12345 --include samples,avgresponse,errors
การใช้ Thresholds
คำสั่ง run-test รองรับการประเมิน threshold เพื่อกำหนดโดยอัตโนมัติว่าการทดสอบผ่านหรือล้มเหลวตามเมตริกประสิทธิภาพ
# รันทดสอบพร้อม thresholds หลายตัวloadfocus-api jmeter run-test --name "My JMeter Test" --thresholds "avgresponse<=200,errors==0,p95<=250,hitspersec>=10"
ตัวดำเนินการ threshold ที่รองรับ:
<=- น้อยกว่าหรือเท่ากับ<- น้อยกว่า>=- มากกว่าหรือเท่ากับ>- มากกว่า==- เท่ากับ!=- ไม่เท่ากับ
รูปแบบ Output
# ดูผลลัพธ์ในรูปแบบ JSONloadfocus-api jmeter run-test --name "My JMeter Test" --format json > results.json# Output แบบจัดรูปแบบเริ่มต้นloadfocus-api jmeter run-test --name "My JMeter Test"
การใช้ JavaScript Library
LoadFocus API Client ยังสามารถใช้เป็น JavaScript library โดยตรงในแอปพลิเคชันของคุณ
การตั้งค่าพื้นฐาน
// นำเข้า LoadFocus API Clientconst loadfocus = require('@loadfocus/loadfocus-api-client');// เข้าถึงส่วนประกอบเฉพาะconst { JMeterClient, configManager } = loadfocus;
JMeter Client
// สร้าง JMeter clientconst jmeterClient = new loadfocus.JMeterClient();// หรือพร้อมการกำหนดค่าที่ชัดเจนconst jmeterClient = new loadfocus.JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID'});
การรันทดสอบ
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; // Return the test ID for later use} catch (error) {console.error('Error executing test:', error);}}
การตรวจสอบสถานะทดสอบ
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);}}
การดึงผลลัพธ์
async function getTestResults(testName, testId) {try {// ดู labels ที่มีสำหรับการทดสอบconst labels = await jmeterClient.getLabels({testrunname: testName,testrunid: testId});console.log('Test labels:', labels);// ดูผลลัพธ์สำหรับแต่ละ labelconst 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);}}
ตัวอย่างแบบเต็ม
นี่คือตัวอย่างแบบเต็มที่รันการทดสอบ รอจนเสร็จ และดึงผลลัพธ์:
const { JMeterClient, configManager } = require('@loadfocus/loadfocus-api-client');// ตั้งค่าการกำหนดค่าconfigManager.set('apikey', 'YOUR_API_KEY');configManager.set('teamid', 'YOUR_TEAM_ID');// สร้าง clientconst jmeterClient = new JMeterClient();async function runCompleteTest() {try {// รันทดสอบ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}`);// รอจนเสร็จ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 {// รอก่อนตรวจสอบอีกครั้งawait new Promise(resolve => setTimeout(resolve, 10000));}}// ดูผลลัพธ์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);}}// รันทดสอบrunCompleteTest();
การใช้งานขั้นสูง
การกำหนดค่า HTTP แบบกำหนดเอง
คุณสามารถปรับแต่ง HTTP client ที่ใช้โดย LoadFocus API Client:
const { JMeterClient } = require('@loadfocus/loadfocus-api-client');// สร้าง client พร้อมตัวเลือก HTTP แบบกำหนดเองconst jmeterClient = new JMeterClient({apikey: 'YOUR_API_KEY',teamid: 'YOUR_TEAM_ID',httpOptions: {timeout: 30000, // 30 วินาทีretries: 3,headers: {'User-Agent': 'My Custom Application'}}});
การจัดการข้อผิดพลาด
LoadFocus API Client ให้ข้อมูลข้อผิดพลาดโดยละเอียด:
try {const result = await jmeterClient.execute({testrunname: 'My JMeter Test'});} catch (error) {if (error.response) {// Request ถูกส่งและเซิร์ฟเวอร์ตอบกลับด้วย status code// ที่อยู่นอกช่วง 2xxconsole.error('API Error:', error.response.status, error.response.data);} else if (error.request) {// Request ถูกส่งแต่ไม่ได้รับ responseconsole.error('Network Error:', error.request);} else {// มีบางอย่างเกิดขึ้นในการตั้งค่า request ที่ทำให้เกิด Errorconsole.error('Request Error:', error.message);}}
การแก้ไขปัญหา
ปัญหาที่พบบ่อย
ข้อผิดพลาดการยืนยันตัวตน:
- ตรวจสอบว่า API key และ team ID ถูกกำหนดค่าอย่างถูกต้อง
- ตรวจสอบว่า API key มีสิทธิ์ที่จำเป็น
ความล้มเหลวในการรันทดสอบ:
- ยืนยันว่าชื่อทดสอบมีอยู่ในบัญชี LoadFocus ของคุณ
- ตรวจสอบว่าคุณถึงขีดจำกัดการทดสอบพร้อมกันของบัญชีหรือไม่
ปัญหา Timeout:
- สำหรับการทดสอบที่ใช้เวลานาน เพิ่มพารามิเตอร์
waitTimeout - พิจารณาใช้กลไก polling แทนการรอแบบ synchronous
- สำหรับการทดสอบที่ใช้เวลานาน เพิ่มพารามิเตอร์
ปัญหาการดึงผลลัพธ์:
- ตรวจสอบว่าการทดสอบเสร็จแล้วก่อนดึงผลลัพธ์
- ตรวจสอบว่า test ID ถูกต้อง
การดีบัก
เปิดใช้งาน debug logging สำหรับข้อมูลโดยละเอียดเพิ่มเติม:
// ในโค้ด JavaScript ของคุณprocess.env.DEBUG = 'true';// หรือเมื่อใช้ CLIDEBUG=true loadfocus-api jmeter run-test --name "My JMeter Test"
สำหรับความช่วยเหลือเพิ่มเติม กรุณาดู เอกสาร LoadFocus API หรือติดต่อฝ่ายสนับสนุน