Endpoint: POST https://automationexercise.com/api/searchProduct
Parameter: search_product=T-Shirt (form-data body)
Expected response: {"responseCode": 200, "products": [...]}
هدف: بررسی رفتار سیستم در شرایط بار معمول و مورد انتظار
| پارامتر | مقدار |
|---|---|
| تعداد کاربران همزمان | ۵۰ VU |
| مدت زمان | ۷ دقیقه (۱m ramp-up + ۵m hold + ۱m ramp-down) |
| Think time | ۱ ثانیه |
| Threshold | p(95) < 2000ms, error rate < 1% |
معیار موفقیت: سیستم در طول مدت تست پایدار باشد و زمان پاسخ در زیر سقف تعریفشده باقی بماند.
فایل پیادهسازی: k6_load_test.js ✅
هدف: یافتن نقطه شکست سیستم با افزایش تدریجی بار
| پارامتر | مقدار |
|---|---|
| شروع | ۵۰ VU |
| افزایش | هر ۲ دقیقه ۵۰ VU اضافه میشود |
| پیک | ۵۰۰ VU |
| Recovery | ۲ دقیقه ramp-down |
| Threshold | p(95) < 5000ms, error rate < 10% |
معیار موفقیت: مشخص شود که سیستم از چه میزان بار به بعد شروع به افت میکند.
فایل پیادهسازی: k6_stress_test.js ✅
هدف: بررسی memory leak و degradation در طول زمان طولانی
| پارامتر | مقدار |
|---|---|
| تعداد کاربران همزمان | ۳۰ VU |
| مدت زمان | ۶۰ دقیقه |
| Think time | ۲ ثانیه |
| Threshold | p(95) < 3000ms, error rate < 1% |
معیار موفقیت: زمان پاسخ طی ۶۰ دقیقه بیش از ۲۰٪ افت نداشته باشد؛ نشانهای از memory leak دیده نشود.
// ساختار کلی – برای پیادهسازی
export const options = {
stages: [
{ duration: '5m', target: 30 }, // ramp-up
{ duration: '50m', target: 30 }, // hold
{ duration: '5m', target: 0 }, // ramp-down
],
thresholds: {
http_req_duration: ['p(95)<3000'],
http_req_failed: ['rate<0.01'],
},
};هدف: بررسی رفتار سیستم هنگام افزایش ناگهانی و شدید ترافیک
| پارامتر | مقدار |
|---|---|
| بار پایه | ۱۰ VU |
| پیک ناگهانی | ۳۰۰ VU (در ۳۰ ثانیه) |
| برگشت | به ۱۰ VU (در ۳۰ ثانیه) |
| Threshold | error rate < 5% |
معیار موفقیت: سیستم پس از جهش به حالت عادی برگردد و error rate قابل قبول باشد.
// ساختار کلی – برای پیادهسازی
export const options = {
stages: [
{ duration: '1m', target: 10 }, // baseline
{ duration: '30s', target: 300 }, // spike!
{ duration: '1m', target: 300 }, // hold spike
{ duration: '30s', target: 10 }, // recover
{ duration: '1m', target: 10 }, // verify recovery
{ duration: '30s', target: 0 },
],
};هدف: یافتن دقیق حداکثر ظرفیت سیستم (throughput limit)
| پارامتر | مقدار |
|---|---|
| شروع | ۱۰ VU |
| افزایش | هر ۱ دقیقه ۱۰ VU |
| شرط توقف | وقتی error rate > 5% یا p(95) > 3000ms |
| Think time | ۰.۵ ثانیه |
معیار موفقیت: عدد دقیق VU که در آن سیستم شروع به خطا میکند ثبت شود تا به عنوان ظرفیت شناختهشده استفاده گردد.
// ساختار کلی – برای پیادهسازی
export const options = {
stages: [
{ duration: '1m', target: 10 },
{ duration: '1m', target: 20 },
{ duration: '1m', target: 30 },
// ... ادامه تا یافتن نقطه شکست
{ duration: '1m', target: 200 },
],
thresholds: {
http_req_duration: ['p(95)<3000'],
http_req_failed: ['rate<0.05'],
},
// abortOnFail: true ← در نسخههای جدیدتر K6
};# نصب K6
# macOS:
brew install k6
# Windows:
winget install k6
# اجرای Load Test
k6 run k6_load_test.js
# اجرای Stress Test
k6 run k6_stress_test.js
# اجرا با خروجی HTML
k6 run --out json=results.json k6_load_test.js