ما هو اختبار الأداء؟
يقيس اختبار الأداء سلوك النظام تحت حمل محدد: زمن الاستجابة (عادةً المئين 95 لا المتوسط)، والإنتاجية (طلبات في الثانية)، ونسبة الأخطاء، مع مراقبة تشبّع المعالج والذاكرة وقاعدة البيانات. يستخدم اختبار الحمل الحركة المتوقعة، ويدفع اختبار الإجهاد إلى ما بعدها لإيجاد نقطة الانهيار، ويثبّت اختبار التحمّل الحمل لساعات لكشف التسريبات، ويفحص اختبار الذروة المفاجئة التعافي من ارتفاع مفاجئ في الحركة.
اقرأ الدليل: ما هو اختبار الأداء؟
كيفية استخدام مولّد اختبارات الطلبات المتزامنة
- أدخل عنوان URL المستهدف (بيئة staging أو اختبار مصرّح لك بتحميلها) والطريقة والترويسات والجسم.
- حدّد المستخدمين الافتراضيين والمدة والصعود التدريجي وزمن التفكير وعتبتي p95 ومعدل الأخطاء.
- اختر أداة (أو «الأدوات الخمس» All five) وانقر «توليد» (Generate).
- نزّل السكربت بالامتداد الصحيح وشغّله بالأمر المطبوع.
- راجع رمز الخروج في CI: تنتهي سكربتات k6 وLocust وArtillery وNode.js برمز غير صفري عند تجاوز أي عتبة؛ أما في JMeter فراجع العيّنات الفاشلة في التقرير.
مزايا مولّد اختبارات الطلبات المتزامنة
- سكربتات k6 وJMeter JMX وLocust وArtillery وNode.js من نموذج واحد
- حمل بصعود تدريجي ثم حالة مستقرة (ويضيف سكربت k6 هبوطاً تدريجياً مدته 5 ثوانٍ) مع سقوف لعدد المستخدمين الافتراضيين والمدة
- عتبات مدمجة: في سكربتات k6 وLocust وArtillery وNode.js تُفشل ميزانيةُ زمن الاستجابة p95 والحدُّ الأقصى لمعدل الأخطاء التشغيلَ؛ أما خطة JMeter فتفحص كل عيّنة على حدة مقابل ميزانية زمن الاستجابة
- مهلات زمنية وزمن تفكير وترويسات مخصّصة وأجسام JSON
- ربط اختياري بملف تغذية CSV في k6 وJMeter وLocust وArtillery
- أوامر التشغيل وملخص للإعدادات؛ ولا يُرسل أي شيء إلى الهدف
مثال على مولّد اختبارات الطلبات المتزامنة
سكربت k6 لنقطة نهاية الطلبات (orders)
الإدخال:
POST https://staging.example.com/api/orders
20 VUs · 60 s · 15 s ramp-up · p95 < 500 ms · errors < 1%النتيجة:
export const options = {
stages: [
{ duration: '15s', target: 20 }, // ramp-up
{ duration: '45s', target: 20 }, // steady state
{ duration: '5s', target: 0 }, // ramp-down
],
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};- مراحل k6 في المثالالعتبات في السكربت:
p(95)<500وrate<0.01- 1صعود تدريجي 0–15 sإلى 20 مستخدماً افتراضياً
- 2حالة مستقرة 15–60 sثبات عند 20
- 3هبوط تدريجي 60–65 sإلى 0
لا تتضمن سكربتات JMeter وLocust وArtillery وNode.js مرحلة هبوط تدريجي.
الأسئلة الشائعة حول مولّد اختبارات الطلبات المتزامنة
ما الأدوات المدعومة؟
k6 (JavaScript)، وJMeter (خطة اختبار JMX كاملة مع مجموعة خيوط وعنصر HTTP Sampler ومدير ترويسات وتأكيدات ومؤقت)، وLocust (Python)، وArtillery (YAML)، وسكربت Node.js خالٍ من الاعتماديات.
ما الإعدادات الافتراضية الآمنة المدمجة؟
يُحدّ عدد المستخدمين الافتراضيين بـ 500 والمدة بساعة واحدة؛ ويتضمن كل سكربت مهلة طلب 30 ثانية، وصعوداً تدريجياً، وزمن تفكير. وتحمل سكربتات k6 وLocust وArtillery وNode.js أيضاً عتبتي p95 ومعدل الأخطاء اللتين تُفشلان التشغيل في CI؛ أما خطة JMeter فتعلّم كل عيّنة أبطأ من ميزانية p95 بأنها فاشلة، لكنها لا تتضمن عتبة على مستوى التشغيل كله.
هل يمكن للسكربتات قراءة ملف تغذية CSV؟
نعم. أدخل اسم ملف CSV وستتضمن سكربتات k6 وJMeter وLocust وArtillery كود التحميل؛ وولّد الملف باستخدام مولّد بيانات اختبار التحميل.
هل يُرسل عنوان URL وترويساتي إلى أي مكان؟
لا. تُولَّد السكربتات محلياً في متصفحك. راجع الترويسات قبل إيداعها في المستودع — لا تخزّن بيانات اعتماد حقيقية في سكربت أبداً.
هل اختبار التحميل على أي موقع قانوني؟
اختبر فقط الأنظمة التي تملكها أو لديك إذن كتابي باختبارها. السكربتات مصمّمة لبيئات staging وما قبل الإنتاج.
ملاحظات تقنية
مخرجات JMX خطة اختبار كاملة لـ JMeter 5.6: عنصر TestPlan بمتغيّرات معرّفة من المستخدم، وThreadGroup مع مجدول وزمن صعود، وHTTPSamplerProxy بالمضيف والمنفذ والمسار بعد تحليلها من العنوان، وHeaderManager، وتأكيدات المدة والاستجابة، وConstantTimer لزمن التفكير، ومستمع Summary Report. وتُهرَّب الأحرف الخاصة في الترويسات والأجسام وفق XML.
السقوف (500 مستخدم افتراضي وساعة واحدة) والتحذيرات من أسماء المضيفين التي تبدو إنتاجية هي حواجز حماية مقصودة؛ أما الاختبارات الأكبر فينبغي التخطيط لها واعتمادها وتشغيلها من مولّدات موزّعة.
المراجع
- Apache JMeter User's Manualكيف تُبنى اختبارات الحمل وتُعامَل بالمعاملات وتُشغَّل في JMeter، وكيف تُقرأ مستمعاته وتقاريره.
- Release It! Second Edition: Design and Deploy Production-Ready Software (Michael T. Nygard)أنماط الاستقرار — المهل الزمنية وقواطع الدائرة والحواجز والضغط العكسي — وأنماط الفشل التي يُفترض أن يكشفها اختبار الحمل.
- Site Reliability Engineering: How Google Runs Production Systemsأهداف مستوى الخدمة وميزانيات الخطأ ومراقبة «الإشارات الذهبية الأربع» والتعامل مع الحمل الزائد — الجانب التشغيلي للمرونة.