50 lines
1.6 KiB
JSON

{
"_comment": "WalkGuide Load Test — 50 VUs, 5 minutes. Normal production load simulation.",
"_meta": {
"min_vu_requirement": 50,
"note": "Pillar 3 ketentuan: load test harus >= 50 concurrent users"
},
"scenarios": {
"load_auth": {
"executor": "ramping-vus",
"startVUs": 0,
"stages": [
{ "duration": "30s", "target": 10 },
{ "duration": "60s", "target": 20 },
{ "duration": "120s", "target": 20 },
{ "duration": "30s", "target": 0 }
],
"gracefulRampDown": "15s"
},
"load_location": {
"executor": "ramping-vus",
"startVUs": 0,
"stages": [
{ "duration": "30s", "target": 15 },
{ "duration": "120s", "target": 20 },
{ "duration": "30s", "target": 0 }
],
"startTime": "10s",
"gracefulRampDown": "15s"
},
"load_obstacle": {
"executor": "constant-vus",
"vus": 10,
"duration": "180s",
"startTime": "20s"
}
},
"thresholds": {
"http_req_duration": ["p(95)<500", "p(99)<1000"],
"http_req_failed": ["rate<0.01"],
"walkguide_error_rate": ["rate<0.01"],
"walkguide_location_latency_ms": ["p(95)<300"],
"walkguide_obstacle_latency_ms": ["p(95)<400"],
"walkguide_sos_latency_ms": ["p(95)<200"],
"walkguide_auth_latency_ms": ["p(95)<800"],
"walkguide_timeline_latency_ms": ["p(95)<1000"]
},
"summaryTrendStats": ["min", "med", "avg", "p(90)", "p(95)", "p(99)", "max"],
"summary_export": "k6-results/load-test-summary.json"
}