المعالج في JMeter: المعالج المسبق والمعالج اللاحق

⚡ ملخص ذكي

المعالج في JMeter يقوم المعالج المسبق بتعديل طلبات أخذ العينات قبل التنفيذ أو بعده. يقوم المعالج المسبق بإعداد بيانات الطلب، بينما يقوم المعالج اللاحق بـtracقيم ts وعناصر التحكم في تدفق الاختبار، مما يتيح الارتباط، والمعايرة الديناميكية، وسلوك اختبار الأداء الموثوق به.

  • ⚙️ التعريف الأساسي: يقوم المعالج بتعديل أداة أخذ العينات داخل نطاقه، ويتم تنفيذه إما قبل الطلب أو بعد الاستجابة.
  • 🔍 دور المعالج المسبق: تقوم المعالجات المسبقة بتعيين المتغيرات، وإعادة الكتابة URLs، تحليل روابط HTML، وتطبيق معلمات المستخدم قبل تشغيل أداة أخذ العينات.
  • 📤 دور ما بعد المعالجة: تقوم معالجات ما بعد المعالجة بقراءة الاستجابات، على سبيل المثالtracقم بتحويل القيم الديناميكية إلى متغيرات، وقرر ما إذا كان الاختبار الجاري سيستمر.
  • 🧩 Extracاختيار تور: التعبيرات النمطية، والحدود، وJSON، وCSS/jQuery، وXPath مثالtracكل فريق يناسب تنسيق استجابة مختلف.
  • 🛑 التحكم في التدفق: يقوم معالج حالة النتيجة بإيقاف مؤشر ترابط واحد أو الاختبار بأكمله عند فشل أداة أخذ العينات.
  • 🧪 شرح تطبيقي: ست خطوات لبناء خطة تتوقف تلقائيًا بمجرد أن يُرجع مسار غير صالح خطأً في الخادم.

المعالج في JMeter

معالج في Apache JMeter هو عنصر من عناصر خطة الاختبار يقوم بتعديل أدوات أخذ العينات ضمن نطاقه. ويتم تشغيله تلقائيًا، إما قبل مغادرة الطلب مباشرةً. JMeter أو مباشرة بعد وصول الرد، مما يجعلها الآلية الرئيسية للتعامل مع البيانات الديناميكية أثناء تجربة أداء.

هناك نوعين من المعالجات:

  1. المعالج
  2. معالج آخر

يحدد نطاق عمل المعالج مدى وصوله. المعالج الموضوع مباشرة تحت خطة اختبار أو أن مجموعة الخيوط تنطبق على كل عينة فرعية منها، بينما يؤثر المعالج المتداخل داخل عينة فرعية واحدة على ذلك الطلب فقط. إن فهم هذه القاعدة يمنع أخطاء التكوين المذكورة في قسم استكشاف الأخطاء وإصلاحها في هذه الصفحة.

المعالج

يقوم المعالج المسبق بتنفيذ بعض الإجراءات قبل تقديم طلب العينات.

فكر في مثال بسيط: لنفترض أنك تريد ذلك JMeter إلى "العنكبوت" من خلال الموقع قيد الاختبار، تحليل الرابط (تحقق من جميع الروابط الموجودة على الصفحة) و عائد أعلى HTML. يمكنك إضافة بعض الإجراءات مثل "محلل ارتباط HTML" إلى وحدة التحكم الخاصة بك قبل إنشاء طلب HTTP.

المعالج

يوضح الرسم التخطيطي أعلاه المعالج المسبق الذي يقع بين وحدة التحكم والطلب الصادر. ولأنه يعمل أولاً، فهو المكان الصحيح لإنشاء بيانات الطلب: توليد طابع زمني، وقراءة قيمة من عمود CSV، وإعادة كتابة مُعرّف الجلسة في URLأو تعيين بيانات اعتماد مختلفة لكل مستخدم افتراضي.

معالج آخر

ينفذ المعالج اللاحق بعض الإجراءات بعد تقديم طلب أخذ العينات.

خذ مثالاً بسيطًا: JMeter يرسل طلب HTTP إلى خادم الويب قيد الاختبار (إلخ www.google.com) والحصول على الرد. انت تريد JMeter لإيقاف الاختبار إذا كانت استجابة الخادم خطأً. يمكنك استخدام معالج ما بعد المعالجة لتنفيذ المهمة المذكورة أعلاه كما يلي:

معالج آخر

كما يوضح الرسم التخطيطي الثاني، يقرأ المعالج اللاحق الاستجابة بعد اكتمال عملية أخذ العينات. وهذا هو الحل القياسي لمسألة الارتباط. فعندما يُعيد الخادم رمزًا مميزًا أو مُعرّف جلسة أو رقم طلب يتغير في كل تشغيل، يقوم المعالج اللاحق بالتقاط تلك القيمة في JMeter متغير بحيث يمكن لأداة أخذ العينات التالية إعادة استخدامه.

أنواع المعالجات المسبقة في JMeter

Apache JMeter تأتي مزودة بمجموعة صغيرة من المعالجات المسبقة. كل منها يُعدّ عينة بطريقة مختلفة، لذا فإن اختيار العنصر المناسب يحافظ على خطة الاختبار قابلة للقراءة وسهلة الصيانة.

  • مهلة العينة: يُحدد هذا الخيار الحد الأقصى لمدة الطلب. أي عينة تستغرق مدة أطول من القيمة المُحددة تُعتبر فاشلة.
  • معلمات المستخدم: يقوم بتعيين قيم محددة للمتغيرات لكل مستخدم افتراضي، بحيث يرسل كل مؤشر ترابط مجموعة البيانات الخاصة به.
  • محلل روابط HTML: يقوم برنامج الزحف بفحص الصفحة قيد الاختبار، وتحليل الروابط التي يعثر عليها، وإدخالها في طلب HTTP التالي.
  • HTTP URL مُعدِّل إعادة الكتابة: يقوم بإدخال مُعرّف الجلسة في URL للتطبيقات التي tracجلسات k بدون ملفات تعريف الارتباط.
  • معلمات المستخدم للتعبيرات النمطية: يقوم بتعبئة معلمات الطلب باستخدام القيم التي تم التقاطها بواسطة تعبير نمطي من استجابة سابقة.
  • معالج JDBC المسبق: يقوم بتشغيل عبارة SQL قبل أداة أخذ العينات، وهو أمر مفيد لتهيئة أو إعادة ضبط سجلات قاعدة البيانات.
  • معالج JSR223 المسبق: ينفذ أ Groovy or Java نص برمجي لأي منطق تحضير مخصص. يحل هذا النص محل معالج BeanShell PreProcessor القديم ويؤدي أداءً أفضل بكثير تحت الضغط.

💡 نصيحة: يفضل استخدام معالج JSR223 المسبق مع Groovy لغة فوق BeanShell. Groovy يتم تجميع البرامج النصية وتخزينها مؤقتًا، لذا فهي تستهلك موارد أقل بكثير من وحدة المعالجة المركزية عند تشغيل آلاف الخيوط بالتوازي.

أنواع المعالجات اللاحقة في JMeter

تنقسم معالجات ما بعد المعالجة إلى مجموعتين: مثالtracتتضمن هذه العناصر أدوات استخراج القيم من الاستجابة، ومعالجات تتفاعل مع نتائج أداة أخذ العينات. يوضح الجدول أدناه كيفية ربط كل عنصر بتنسيق الاستجابة الأنسب له.

معالج لاحق أفضل مناسب لـ استخدام نموذجي
التعبير النمطي مثالtracتور أي رد نصي التقاط الرموز أو المعرفات من HTML والنص العادي
حدود إكسtracتور أي رد نصي التقاط قيمة باستخدام حدود يسارية ويمينية بدلاً من تعبير نمطي كامل
مثال JSONtracتور استجابات JSON قراءة الحقول من حمولات REST أثناء اختبار API
مثال CSS/jQuerytracتور استجابات HTML تحديد عنصر باستخدام مُحدِّد CSS
مثال XPathtracتور استجابات XML و XHTML التنقل في شجرة المستندات المنظمة
معالج JDBC اللاحق نتائج قاعدة البيانات التحقق من الصفوف أو تنظيفها بعد الطلب
معالج ما بعد المعالجة JSR223 أي رد تحليل وتأكيدات مخصصة مكتوبة برمجياً
معالج الإجراء لحالة النتيجة أي رد قلة النومping خيط أو الاختبار بأكمله عند فشل أداة أخذ العينات

الحدود إكسtracوصل تور إلى JMeter 4.0 وغالبًا ما يكون الخيار الأسرع للكتابة، لأنه يطلب فقط النص الموجود مباشرةً على يسار ويمين القيمة. التعبير النمطي Extracيظل برنامج Tor الخيار الأكثر مرونة عندما تختلف العلامات المحيطة بين الاستجابات.

الفرق بين المعالج المسبق والمعالج اللاحق

يشترك العنصران في نفس قواعد النطاق، لكنهما يحلان مشكلتين مختلفتين. يوضح الجدول أدناه الفرق بينهما قبل عرض المثال العملي.

معامل المعالج معالج لاحق
وقت التنفيذ يتم تشغيله قبل أن يرسل برنامج أخذ العينات طلبه يتم تشغيله بعد أن يتلقى جهاز أخذ العينات استجابته
الغرض الأساسي يقوم بإعداد وتعديل بيانات الطلب يقرأ بيانات الاستجابة ويتفاعل معها
العناصر النموذجية معلمات المستخدم، محلل روابط HTML، معالج JSR223 المسبق التعبير النمطي مثالtracتور، JSON Extracتور، معالج إجراءات حالة النتيجة
التأثير على التدفق لا يمكن إيقاف الاختبار، بل يتم فقط تشكيل الطلب يمكن إيقاف عملية واحدة أو تشغيل الاختبار بالكامل
هدف مشترك البارامتر الارتباط ومعالجة الأخطاء

عمليًا، يعمل الاثنان معًا. يقوم معالج ما بعد المعالجة (PostProcessor) بالتقاط رمز الجلسة من استجابة تسجيل الدخول، بينما يقوم معالج ما قبل المعالجة (PreProcessor) في الطلب التالي بإضافة هذا الرمز قبل إرسال الاستدعاء. يوضح المثال التالي جانب معالج ما بعد المعالجة من هذا النمط.

مثال على ما بعد المعالج

سيوضح لك هذا البرنامج التعليمي إرشادات خطوة بخطوة حول كيفية استخدام Post-processor في JMeter. لنبدأ بنص الاختبار البسيط.

  1. JMeter يرسل طلب HTTP إلى خادم الويب قيد الاختبار www.google.com.
  2. JMeter يتلقى ردًا من Google الخادم.
  3. إذا كانت استجابة الخادم خطا, JMeter سوف توقف الاختبار.
  4. إذا استجابة الخادم OK (لا يوجد خطأ)، JMeter سوف استمر الاختبار.

هو، هنا، خريطة طريق من هذا المثال:

مثال على ما بعد المعالج

شرط مسبق:

We إعادة استخدام الخطوة 1 والخطوة 2 في المقالة JMeter اختبار أداء. إذا JMeter لم يتم تثبيته بعد، اتبع التعليمات JMeter دليل التثبيت لأول مرة.

الخطوة 1) إضافة مجموعة المواضيع

انقر بالزر الأيمن على خطة اختبار وأضف مجموعة سلاسل رسائل جديدة: إضافة -> المواضيع (المستخدمين) -> مجموعة الخيوط

ولكن في لوحة تحكم Thread Group، أدخل خصائص الموضوع كما يلي:

إضافة مجموعة المواضيع

يتيح لك هذا الإعداد JMeter خلق 10 طلب المستخدم ل http://www.google.com 10 .

الخطوة 2) إضافة JMeter عناصر

  • إضافة طلب HTTP الافتراضي
  • إضافة طلب HTTP

ما زلنا نصنع JMeter ارسل طلب http://www.google.com إلى Google الخادم.

الخطوة 3) إضافة عنصر ما بعد المعالج

انقر بزر الماوس الأيمن مجموعة الخيوط -> إضافة -> معالج آخر -> معالج الإجراء لحالة النتيجة

معالج الإجراء لحالة النتيجة يسمح للمستخدم بإيقاف الموضوع أو الاختبار بأكمله في حالة فشل طلب المستخدم.

إضافة عنصر ما بعد المعالج

في جزء معالجة إجراء حالة النتيجة، اختر أوقف الاختبار الآن. سيؤدي هذا التحديد إلى إيقاف الاختبار إذا JMeter الحصول على الخطأ من استجابة الخادم.

إضافة عنصر ما بعد المعالج

الخطوة 4) تكوين طلب HTTP

افتح لوحة طلب HTTP. يدخل "abc" إلى حقل المسار

تكوين طلب HTTP

عندما تدخل "abc" إلى الطريق، JMeter سيخلق URL طلب ل Google الخادم: http://www.google.com/abc. هذا URL غير موجود على Google الخادم. إنه خاطئ URL لذا، أطلب ذلك Google سيعيد الخادم خطأً.

الخطوة 5) إضافة عرض شجرة النتائج

انقر بزر الماوس الأيمن مجموعة الخيوط -> إضافة -> مستمع -> عرض شجرة النتائج

إضافة عرض شجرة النتائج

الخطوة 6) تشغيل الاختبار

حدد عرض شجرة النتائج، ثم اضغط على زر تشغيل في شريط القائمة. سوف ترى خطأ رد من Google سيتوقف الخادم والاختبار بدون إكمال 100 موضوع.

قم بإجراء الاختبار

عد الآن إلى الخطوة 4، افتح جزء طلب HTTP، وأدخل "تقويمنا"إلى الجزء. التي تجعل JMeter خلق URL طلب https://calendar.google.com/calendar/u/0/r إلى Google الخادم. هذا هو تصحيح URL لذا، أطلب ذلك Google سيعيد الخادم رسالة OK (بدون خطأ).

قم بإجراء الاختبار

حدد عرض شجرة النتائج، ثم اضغط على زر تشغيل في شريط القائمة. سوف ترى OK رد من Google سيستمر تشغيل الخادم والاختبار حتى اكتمال جميع الخيوط المئة.

قم بإجراء الاختبار

مضيفا التأكيد إلى جانب معالج إجراء حالة النتيجة، يجعل الفحص أكثر صرامة، لأنه يمكن أن يفشل التأكيد في أخذ عينة أعادت HTTP 200 ولكنها سلمت المحتوى الخاطئ.

فحص الجهاز

إذا واجهت المشكلة أثناء تشغيل السيناريو أعلاه، قم بما يلي:

  1. تحقق مما إذا كنت متصلاً بالإنترنت عبر وكيل. إذا كانت الإجابة بنعم، قم بإزالة الوكيل.
  2. افتح مثيلًا جديدًا لـ Jmeter
  3. فتح ProcessorTestPlan.jmx في جيميتر
  4. Double-انقر على مجموعة المواضيع -> عرض شجرة النتائج
  5. قم بتشغيل الاختبار

إذا بدا أن معالج ما بعد المعالجة لا يقوم بأي شيء، فتحقق من موقعه أولاً. معالج ما بعد المعالجة الموضوع خارج نطاق أداة أخذ العينات التي يستهدفها لا يعمل أبدًا، وهو السبب الأكثر شيوعًا لظهور ملف ex فارغ.tracمتغير تيد. عناصر ذات صلة مثل وحدات التحكم و الاختبار الموزع اتبع نفس منطق النطاق.

الأسئلة الشائعة

يقوم المعالج المسبق بتغيير محتوى الطلب قبل إرساله. أما المؤقت، فيقوم فقط بإيقاف الخيط مؤقتًا لفترة زمنية محددة. يعمل كلاهما قبل وحدة أخذ العينات، لكن المؤقت لا يُعدّل بيانات الطلب أبدًا.

السابقtracيقوم برنامج تور بحفظ القيمة في JMeter اسم المتغير الذي تحدده. أي عينة لاحقة في نفس سلسلة العمليات تشير إليه باستخدام صيغة ${variableName}، في مسار أو رأس أو نص الطلب.

نعم. تقوم العديد من المساعدات المدعومة بالذكاء الاصطناعي الآن بقراءة الاستجابة المسجلة واقتراح تعبير نمطي أو زوج حدودي للربط. لا يزال الاقتراح بحاجة إلى مراجعة، لأن الذكاء الاصطناعي لا يستطيع معرفة القيم الديناميكية الحقيقية.

نعم. يقوم مساعدو الذكاء الاصطناعي بمقارنة الاستجابة الأولية مع النموذجtracالتعبير عن تور والإشارة إلى حالات عدم التطابق في escaping، groupingأو النطاق. تحقق من الإصلاح داخل شجرة نتائج العرض قبل الوثوق به في عملية التحميل.

يتم تشغيل المعالجات مرة واحدة لكل عملية تنفيذ لأداة أخذ العينات داخل نطاقها. مع عشرة خيوط، انظرping خمس مرات، يقوم المعالج المرفق بهذا الجهاز بتنفيذ العملية خمسين مرة، ويحتفظ كل خيط بقيم متغيراته الخاصة.

تلخيص هذه التدوينة بـ: