hrms-api-backend/dotnet_leave_test.js

48 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2026-01-20 20:54:47 +07:00
// ทดสอบการยิง 30,000 requests ในเวลา 10 นาที โดยให้กระจายการยิงในเวลาที่ต่างๆ กัน
import { check, sleep } from "k6";
import http from "k6/http";
import { Rate } from "k6/metrics";
export let errorRate = new Rate("errors");
// จำนวน request ที่ต้องการยิง
// ระยะเวลาทดสอบทั้งหมด
// จำนวน Virtual Users เฉลี่ยที่ต้องการ 300 users
//const averageVus = Math.ceil(totalRequests / totalDuration);
const averageVus = 300;
export let options = {
stages: [
{ duration: "2m", target: averageVus * 0.5 }, // 20% ของการทดสอบ เพิ่ม VUs เป็น 50% ของค่าเฉลี่ย
{ duration: "4m", target: averageVus }, // 40% ของการทดสอบ เพิ่ม VUs เป็น 100% ของค่าเฉลี่ย
{ duration: "2m", target: averageVus * 1.5 }, // 20% ของการทดสอบ เพิ่ม VUs เป็น 150% ของค่าเฉลี่ย
{ duration: "2m", target: 0 }, // ลด VUs ลงมาเป็น 0
],
thresholds: {
errors: ["rate<0.01"], // อัตรา error ต้องน้อยกว่า 1%
http_req_duration: ["p(95)<2000"], // 95% ของ requests ควรใช้เวลาไม่เกิน 2 วินาที
},
};
export default function () {
// ตัวเลือก headers
let headers = {
"Content-Type": "application/json",
Authorization: "Bearer {Token}",
2026-01-20 20:54:47 +07:00
};
// ส่ง GET request
let response = http.get("https://{URL}", { headers: headers });
2026-01-20 20:54:47 +07:00
// ตรวจสอบการตอบสนอง
check(response, {
"is status 200": (r) => r.status === 200,
});
// หน่วงเวลา 1 วินาที
sleep(1);
}