يستطيع JMeter إنشاء عينات لطلبات HTTP من خلال العمل كوكيل تسجيل محلي بين المتصفح والتطبيق المستهدف المُصرَّح له. تُسمى هذه الخاصية في الإصدارات الحالية " مسجل نص اختبار HTTP(S)" . يقوم هذا المكون بتسجيل مسار المتصفح إلى وحدة تحكم التسجيل، وبعد ذلك يجب تنظيف النص البرمجي، وربطه، والتحقق من صحته، وتنفيذه كاختبار على مستوى البروتوكول.
ما هو خادم وكيل HTTP الخاص بـ JMeter؟
يستمع جهاز التسجيل على منفذ محلي، عادةً 8888يرسل المتصفح طلبات HTTP وHTTPS إلى هذا الخادم الوكيل، ويقوم JMeter بتحويل حركة البيانات المطابقة إلى عينات ضمن وحدة تحكم محددة. أثناء إعادة التشغيل، يرسل JMeter الطلبات مباشرةً؛ فهو لا يُشغّل متصفحًا لكل مستخدم افتراضي.
لماذا التسجيل بدلاً من كتابة السيناريو يدويًا؟
- يلتقط ترتيب الطلبات الواقعي، وعمليات إعادة التوجيه، والنماذج، وواجهات برمجة التطبيقات الخلفية.
- يكشف عن استدعاءات XHR أو fetch التي يسهل التغاضي عنها.
- يُنشئ خطًا أساسيًا سريعًا لرحلة المستخدم المعقدة.
- يقلل من أخطاء النسخ في العناوين والمعلمات.
يُعدّ البناء اليدوي أكثر سلاسةً بالنسبة لواجهات برمجة التطبيقات الصغيرة والموثّقة. يُفيد التسجيل عندما لا يكون سلوك شبكة المتصفح مفهومًا بعد. للاطلاع على المصطلحات، راجع دليل أنواع الوكيل الخاص بنا.
كيفية تسجيل نص برمجي في JMeter 5.x
- قم بتشغيل JMeter في وضع واجهة المستخدم الرسومية لإنشاء البرامج النصية.
- أضف مجموعة خيوط إلى خطة الاختبار.
- أضف وحدة تحكم التسجيل ضمن مجموعة الخيوط.
- أضف الإعدادات الافتراضية لطلبات HTTP ومدير ملفات تعريف الارتباط HTTP عند الاقتضاء.
- أضف مسجل نص اختبار HTTP(S) وحدد وحدة التحكم في التسجيل كهدف له.
- استخدم أنماط التضمين/الاستبعاد للحد من حركة المرور غير ذات الصلة.
يُعد دليل تسجيل Apache JMeter الرسمي المرجع المعتمد الخاص بكل إصدار.
الخطوة 1) إعداد خادم وكيل HTTP
8888قم بتعيين وحدة التحكم المستهدفة، ثم انقر بالبداية.قم بتهيئة متصفح الاختبار باستخدام خادم وكيل HTTP و HTTPS 127.0.0.1 ونفس المنفذ. إذا كان المتصفح يعمل في جهاز افتراضي أو حاوية أخرى، فإن localhost يشير إلى تلك البيئة؛ استخدم عنوانًا خاصًا معتمدًا يمكن الوصول إليه بدلاً من ذلك.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
لا تُفرط في استخدام التصفية في المرحلة الأولى لأن واجهة برمجة التطبيقات قد تستخدم نطاقًا فرعيًا آخر. سجّل مرة واحدة، وافحص المضيفين، ثم حسّن الأنماط.
الخطوة 2) سجل نشاطك
- قم بتشغيل المسجل واعتمد على شهادته المؤقتة فقط في متصفح الاختبار المعزول.
- افتح بيئة الاختبار المعتمدة.
- قم برحلة واحدة نظيفة بسرعة الإنسان.
- أوقف التسجيل فور الانتهاء من آخر إجراء تجاري.
- أعد ضبط إعدادات البروكسي العادية للمتصفح.
أعد تسمية العينات حسب إجراءات العمل وقم بتجميع الطلبات ذات الصلة ضمن وحدات التحكم في المعاملات. قم بإزالة التحليلات والإعلانات وتحديثات المتصفح وأدوات الدردشة والموارد الثابتة المكررة ما لم تكن ضمن النطاق بشكل صريح.
افحص كل عينة بحثًا عن الأسرار. يجب أن تأتي كلمات المرور من بيانات وقت التشغيل المحمية، بينما تتطلب الرموز المتغيرة ربطًا بينها.
الخطوة 3) قم بتشغيل خطة الاختبار الخاصة بك
تحقق من مستخدم واحد وتكرار واحد قبل إضافة أي حمل. استخدم مؤقتًا عرض شجرة النتائج، وتحقق من عمليات إعادة التوجيه ومحتوى الاستجابة، وأضف تأكيدات للنتيجة التجارية المتوقعة. لا يُعدّ رمز HTTP 200 وحده دليلاً على نجاح تسجيل الدخول أو إتمام عملية الشراء.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
بعد تصحيح الأخطاء، قم بإزالة المستمعين الثقيلين وقم بتشغيل البرنامج بدون واجهة رسومية:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
يجب أن يكون مجلد التقارير جديدًا أو فارغًا. قم بزيادة الحمل تدريجيًا وراقب النظام المستهدف بالإضافة إلى JMeter.
الخطوة 4) احفظ نتيجة الاختبار
احفظ الخطة القابلة لإعادة الاستخدام باسم .jmx قم بفصل الملفات واحتفظ بالبيانات المُنشأة بشكل منفصل:
- جمكس: أجهزة أخذ العينات، وأجهزة التحكم، والتأكيدات، والمؤقتات، والمتغيرات، والتكوين.
- JTL: نتائج العينة الخام للتحليل.
- لوحة تحكم HTML: النسب المئوية، والإنتاجية، والأخطاء، والخيوط النشطة.
- مقاييس الخادم: وحدة المعالجة المركزية، والذاكرة، وقاعدة البيانات، وقائمة الانتظار، وبيانات الخدمة عن بُعد.
قم بإصدار الخطة مع الخصائص غير السرية وبيانات الاختبار. سجل إصدارات JMeter و Java، والإصدار المستهدف، والبيئة، وعدد المستخدمين، وفترة التدرج، والمدة.
تسجيل حركة مرور HTTPS والشهادات
بالنسبة لبروتوكول HTTPS، يقوم JMeter بإنشاء شهادة مؤقتة عند بدء التسجيل. قم باستيرادها فقط إلى متصفح الاختبار المخصص، وسجل الموقع المعتمد، ثم قم بإزالتها.
- ابدأ تشغيل مسجل نص اختبار HTTP(S).
- حدد موقع شهادة ApacheJMeterTemporaryRootCA التي تم إنشاؤها.
- قم باستيراده كجهة موثوقة في الملف الشخصي المعزول.
- سجل رحلة HTTPS المعتمدة.
- قم بإزالة الشهادة عند الانتهاء.
يمكن لتقنيات تثبيت الشهادات، وبروتوكول TLS المتبادل، والمتصفحات المُدارة، وتطبيقات الجوال، وبروتوكولات النقل الحديثة، أن تمنع عمليات الاعتراض. لا تُضعف ضوابط الأمان في بيئة الإنتاج. استخدم نسخة تجريبية، أو مواصفات واجهة برمجة التطبيقات، أو طريقة التقاط بديلة معتمدة.
الربط: جعل النص المسجل قابلاً لإعادة التشغيل
تتغير معرّفات الجلسات، ورموز CSRF، وحالة OAuth، وتوقيعات الطلبات، ومعرّفات الموارد بين عمليات التشغيل. يستخلص الربط قيمة جديدة من استجابة واحدة ويستبدلها في الطلبات اللاحقة.
- حدد الاستجابة التي تحتوي أولاً على القيمة الديناميكية.
- أضف مستخرج JSON أو CSS أو XPath أو التعبير النمطي.
- قم بتخزين النتيجة في متغير JMeter مسمى.
- استبدل القيم الثابتة اللاحقة بالمرجع المتغير.
- فشل واضح عندما لا يُظهر الاستخراج أي تطابق.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
توفر عملية تحديد المعلمات بيانات المستخدم المستقلة، والتي غالبًا ما تكون من ملفات CSV. أما عملية الربط فتلتقط البيانات التي يُنشئها الخادم أثناء التنفيذ. وعادةً ما تحتاج الخطط الواقعية إلى كليهما.
فحص الجهاز
| المشكلة | سبب محتمل | حل |
|---|---|---|
| لم يتم تسجيل أي طلبات | خادم وكيل خاطئ، أو مسجل متوقف، أو تعارض في المنافذ، أو قاعدة تجاوز | تأكد من المضيف والمنفذ، وابدأ التسجيل، وقم بإزالة استثناءات الهدف. |
| تحذير HTTPS | شهادة المصادقة المؤقتة مفقودة أو منتهية الصلاحية | قم بإنشاء شهادة تسجيل جديدة واستوردها فقط إلى ملف تعريف الاختبار. |
| الكثير من حركة المرور | الإضافات، أو بيانات القياس عن بُعد، أو علامات التبويب الأخرى، أو الأنماط العامة | استخدم ملف تعريف نظيفًا وقم بتحسين عوامل التصفية للتضمين/الاستبعاد. |
| فشل إعادة تشغيل تسجيل الدخول | ملفات تعريف الارتباط المفقودة، أو الرموز المميزة، أو تدفق OAuth، أو الارتباط | أضف مدير ملفات تعريف الارتباط، واستخرج القيم الديناميكية، وافحص عمليات إعادة التوجيه. |
| المتصفح غير متصل بالإنترنت بعد ذلك | لا يزال يشير إلى الخادم الوكيل المحلي المتوقف | استعادة الإعدادات التلقائية أو إعدادات عدم استخدام البروكسي. |
| خطأ في ذاكرة JMeter | مستمعو واجهة المستخدم الرسومية أو تخزين الاستجابات الكبيرة | استخدم الوضع غير الرسومي وقلل من بيانات الاستجابة المحفوظة. |
| يختلف عن المتصفح | لا يقوم JMeter بعرض أو تنفيذ جافا سكريبت للصفحة | اختبر واجهات برمجة التطبيقات الأساسية واستخدم أدوات المتصفح لتحليل مقاييس العرض. |
JMeter هي أداة لقياس أداء البروتوكولات. لا يمكنها قياس الأحداث المرئية مثل أكبر عنصر مُلوّن مُدمج (Largest Contentful Paint) بمفردها.
الأسئلة الشائعة
ما الذي حل محل اسم خادم وكيل HTTP في JMeter؟
يُطلق على المكون الآن اسم مسجل نص اختبار HTTP(S).
ما هو منفذ التسجيل الذي يجب أن أستخدمه؟
أي منفذ محلي غير مستخدم يصلح. المنفذ 8888 شائع، ويجب على المتصفح استخدام نفس القيمة.
هل يستطيع JMeter تسجيل حركة مرور HTTPS؟
نعم، عندما يثق متصفح الاختبار المعزول بشهادة التسجيل المؤقتة لـ JMeter.
لماذا يفشل النص المسجل عند إعادة تشغيله؟
تتطلب الرموز الديناميكية وملفات تعريف الارتباط وتدفقات المصادقة واختلافات المضيف والبيانات المفقودة عادةً الربط والتحديد.
هل يستطيع JMeter تسجيل متصفح Chrome؟
نعم. قم بتهيئة ملف تعريف Chrome نظيف لاستخدام مسجل JMeter المحلي.
هل يجب عليّ إجراء اختبارات التحميل من واجهة المستخدم الرسومية لـ JMeter؟
لا. قم بالبناء والتصحيح في وضع واجهة المستخدم الرسومية، ثم قم بتنفيذ التحميل في وضع غير واجهة المستخدم الرسومية.
هل يتصرف برنامج JMeter مثل متصفح حقيقي؟
لا. إنه يرسل طلبات البروتوكول ولكنه لا يقوم بعرض HTML أو تنفيذ جافا سكريبت المتصفح.
هل من الآمن تسجيل عملية تسجيل الدخول إلى بيئة الإنتاج؟
يُفضّل استخدام حسابات الاختبار والتهيئة. أما تسجيل الإنتاج فيتطلب تفويضًا صريحًا وتعاملًا سريًا صارمًا.
