Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

پروژه تست Performance – Mohaymen Technical Evaluation

API تحت تست

Endpoint: POST https://automationexercise.com/api/searchProduct Parameter: search_product=T-Shirt (form-data body) Expected response: {"responseCode": 200, "products": [...]}


۵ سناریوی Performance Testing


سناریوی ۱ – Load Test (تست بار)

هدف: بررسی رفتار سیستم در شرایط بار معمول و مورد انتظار

پارامتر مقدار
تعداد کاربران همزمان ۵۰ VU
مدت زمان ۷ دقیقه (۱m ramp-up + ۵m hold + ۱m ramp-down)
Think time ۱ ثانیه
Threshold p(95) < 2000ms, error rate < 1%

معیار موفقیت: سیستم در طول مدت تست پایدار باشد و زمان پاسخ در زیر سقف تعریف‌شده باقی بماند.

فایل پیاده‌سازی: k6_load_test.js


سناریوی ۲ – Stress Test (تست فشار)

هدف: یافتن نقطه شکست سیستم با افزایش تدریجی بار

پارامتر مقدار
شروع ۵۰ VU
افزایش هر ۲ دقیقه ۵۰ VU اضافه می‌شود
پیک ۵۰۰ VU
Recovery ۲ دقیقه ramp-down
Threshold p(95) < 5000ms, error rate < 10%

معیار موفقیت: مشخص شود که سیستم از چه میزان بار به بعد شروع به افت می‌کند.

فایل پیاده‌سازی: k6_stress_test.js


سناریوی ۳ – Soak Test (تست دوام / خستگی)

هدف: بررسی 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'],
  },
};

سناریوی ۴ – Spike Test (تست جهش ناگهانی)

هدف: بررسی رفتار سیستم هنگام افزایش ناگهانی و شدید ترافیک

پارامتر مقدار
بار پایه ۱۰ 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   },
  ],
};

سناریوی ۵ – Breakpoint Test (تست نقطه شکست)

هدف: یافتن دقیق حداکثر ظرفیت سیستم (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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages