# أباتشي جيمتر

اباتشي جميتر (بالإنجليزية: Apache JMeter) هو مشروع برمجي مجاني لأداء اختبارات أداء التطبيقات والخوادم وفقًا لبروتوكولات مختلفة بالإضافة إلى اختبارات وظيفية. تم تطويره داخل مؤسسة Apache (ASF) .
تمت كتابة اباتشي جميتر بالكامل بلغة جافا، مما يسمح باستخدامه على أي نظام تشغيل يدعم آلة جافا الافتراضية.
يسمح لك بمحاكاة سلوك العديد من المستخدمين الذين يتصرفون في وقت واحد على تطبيق ويب. مع تطوره، تم تمديده وجعل من الممكن اختبار أنواع أخرى من التطبيقات: خوادم بروتوكول نقل الملفات وخوادم خدمات الويب وقواعد البيانات التي يمكن الوصول إليها عبر jdbc وTCP / IP وخوادم LDAP وما إلى ذلك.
يقيس وقت الاستجابة لكل طلب ويصدر إحصاءات عن أوقات الاستجابة هذه.
يحتوي على الوظائف الرئيسية لهذا النوع من الأدوات: استخدام مجموعة بيانات لسيناريوهات ويب تسجيل الاستعانة بمصادر خارجية، وسيناريوهات «ديناميكية»، والتكيف مع استجابات الخادم، واكتشاف الأخطاء، وقابلية التوسع، وإدارة ملفات تعريف الارتباط وإعادة كتابة (في ) عناوين URL، وإطلاق الاختبارات من عدة محطات عمل، وما إلى ذلك. من الممكن أيضًا، بدءًا من الإصدار 2.4، إجراء «انتحال IP» (محاكاة عدة عناوين IP من نفس محطة الاختبار) باستخدام طلبات HTTP HTTPClient (الحد الأدنى من HttpClient الإصدار 3).
تتوفر معالجات الاختبار المسبق/اللاحق، مما يسمح على سبيل المثال بتعديل استعلام ديناميكيًا قبل تنفيذه أو لاستخراج البيانات من نتائج الاختبار. يمكن عرض نتائج الاختبار بطرق مختلفة ويمكن أيضًا حفظها كملف بتنسيق XML أو CSV .
يمكن لـاباتشي جميتر أيضًا إجراء اختبارات وظيفية لأحد التطبيقات، مما يسمح بالتحقق من صحة وظائف التطبيق بطريقة آلية.

## نقاط مثيرة للاهتمام

نطاق اختبارات الأداء الممكنة واسع جدًا. هناك طريقة لاختبار أداء نصوص SQL وطلبات HTTP / SOAP / EJB والمكالمات إلى فئات جافا والمزيد. توفر الواجهة الرسومية لـاباتشي جميتر إمكانيات لإجراء اختبارات متعددة الخيوط، لإنشاء حلقات اختبار ووحدات تحكم أكثر تحديدًا.
ميزاته الرئيسية هي:
* تجربة أداء
* اختبار المتانة: محاكاة حركة المرور للتحقق من المتانة وفقًا لمستوى حركة المرور
* اختبار الكسر
* تحقيق النتائج الإحصائية بعدة أشكال بيانية ونصية
اباتشي جميتر هي أداة اختبار عامة، فهي لا تقتصر على نوع واحد من نوع الاختبار، بل يقوم عالم المقاييس، من خلال إنشاء سيناريو الاختبار الخاص به، بتحديد نوع الاختبارات. يمكنك أيضًا مزج البروتوكولات في نفس الاختبار (http وftp على سبيل المثال). بالإضافة إلى ذلك، فإن اباتشي جميتر قابل للتوسيع، أي أنه من الممكن إنشاء أنواع جديدة من العينات (الطلبات) لتنفيذ البروتوكولات الأخرى.

## المكونات الأساسية لـاباتشي جميتر

* خطة اختبار (Test Plan): الموقع الذي نحدد منه ما نختبره.
* مجموعة الوحدة (Thread Group): الموقع الذي يتم من خلاله تحديد معلمات المحاكاة:
* عدد الوحدات (Number of Thread): عدد المستخدمين المتصلين.
** حان وقت التكثيف (Ramp-up period): الفترة الزمنية التي يقوم خلالها هؤلاء المستخدمون بتسجيل الدخول تدريجيًا.
** عدد التكرارات (Loop Count): عدد التكرارات التي ستقوم بها كل وحدة (مستخدم).
*** الخيار اللانهائي (Infinite): يحدد أن الوحدات تتكرر إلى أجل غير مسمى (غالبًا في هذه الحالة، يكون التوقف يدويًا أو بعد مدة بالثواني).
* برنامج العمل (Workplan): الموقع للاحتفاظ بمكونات الاختبار غير المستخدمة.
* مدير SSL : مكون يستخدم لإدارة مفاتيح SSL للمصادقة عبر شهادة SSL .
يحتوي اباتشي جميتر على ما يلي:
* عينات (Samples): الطلبات التي يمكن إرسالها إلى خادم أو تطبيق ويب لاختبار موارده. يتضمن اباتشي جميتر طلبات FTP وطلبات HTTP وطلبات JDBC وطلبات JMS وطلبات كائن Java وطلبات LDAP وطلبات SOAP / XML-RPC وطلبات WebService (SOAP).
* تحكم (Controllers): يسمح بتحديد معلمات الاختبار المطلوب إجراؤها. يتضمن اباتشي جميتر عدة أنواع من وحدات التحكم:
** وحدة تحكم متداخلة ووحدات تحكم عشوائية: المكونات المستخدمة لإرسال الطلبات بترتيب عشوائي.
** تحكم حلقة: مكون يستخدم لإرسال الطلبات المحددة عدة مرات.
** وحدة تحكم تنفيذ واحدة: مكون يُستخدم لبدء تشغيل الاستعلامات المحددة مرة واحدة، بغض النظر عن عدد التكرارات المخطط لها.
** تحكم المعاملات: مكون يستخدم لتوحيد النتائج (وقت الاستجابة) لمجموعة من الطلبات.
** تحكم مسجل: مكون يهدف إلى التقاط طلبات HTTP التي تم اعتراضها بواسطة مكون وكيل HTTP (Proxy).
يسمح لك اباتشي جميتر بإدارة معلمات مواقع أو خوادم معينة (ملفات تعريف الارتباط، مواقع آمنة). المكونات المتاحة لإدارة هذه الإعدادات هي كما يلي:
* افتراضيات HTTP وFTP و LDAP و JDBC و Java : المكونات المستخدمة لتحديد المعلمات الافتراضية، سيتم استخدامها لجميع الطلبات
* مدير تفويض HTTP : مكون يوفر معرفًا وكلمة مرور للمواقع التي يتم تقييد الوصول إليها
* مدير ملفات تعريف الارتباط HTTP : مكون يستخدم لتخزين وإرسال وتحديد ملفات تعريف الارتباط لإرسالها إلى الخادم.
* مدير رأس HTTP : مكون يستخدم لتحديد رأس HTTP للطلبات المرسلة.
يوفر اباتشي جميتر إمكانية إدراج إيقاف مؤقت بين كل طلب يتم إرساله من خلال عدادات الوقت أو عناصر إجراء التحكم في التنفيذ مع الإجراء = الإيقاف المؤقت. العدادات المختلفة المتاحة:
* عداد الوقت الثابت: عنصر يسمح بإدخال وقت ثابت بين كل طلب يتم إرساله
* عداد الوقت العشوائي الغاوسي: عنصر يسمح بإدخال وقت عشوائي وفقًا لمنطق غاوسي بين كل طلب يتم إرساله
* مقياس التدفق المستمر: مكون يستخدم للتحكم في وتيرة تنفيذ استعلام
* عداد التزامن: مكون يسمح بانتظار عدد معين من الوحدات لتنفيذ الطلب التالي في نفس الوقت
يتم تحليل استجابات الخادم عن طريق التأكيدات، وهناك عدة أنواع:
* استجابة التوكيد: للتحقق مما إذا تم العثور على سلسلة أحرف واحدة أو أكثر في الاستجابة المستلمة
* مدة التأكيد: للتحقق مما إذا كان قد تم استلام الاستجابة قبل أو بعد وقت محدد مسبقًا
* حجم التوكيد: للتحقق مما إذا كان حجم الاستجابة (بالبايت) أكبر، أو أقل، أو مساويًا... إلى حجم محدد مسبقًا
* تأكيد XML : للتحقق من أن صفحة الاستجابة هي مستند XML صالح.
* تأكيد MD5 : للتحقق مما إذا كانت تجزئة MD5 للاستجابة (الرأس والجسم) تتوافق مع تجزئة MD5 المحددة مسبقًا.
* تأكيد JSON : للتحقق من مسار بتنسيق JSON
* تأكيد XPATH : للتحقق من تعبير XPATH لموجز XML
للحصول على نتائج الاختبار وعرضها، يشتمل اباتشي جميتر على أجهزة استقبال. تتوفر عدة أجهزة استقبال:
* الرسم البياني للنتائج: عنصر يوفر رسمًا بيانيًا يعرض أوقات الاستجابة، والمتوسط، والوسيط، والانحراف المعياري للطلبات المختلفة المقدمة
* شاشة منحنى (خدد): مكون يوفر رسمًا بيانيًا لوقت الاستجابة للطلبات المختلفة المنفذة، وفقًا لمنطق سبلين
* نتائج التوكيد: مكون يوفر نتائج التأكيدات في شكل نصي لجميع الاستعلامات المنفذة
* عارض البريد: مكون يسمح بإرسال بريد إلكتروني إلى المسؤول في حالة حدوث العديد من الإخفاقات في الطلبات المنفذة
* شجرة النتائج: مكون يعرض قائمة الطلبات المنفذة ونوعها وبيانات استجابتها
* جدول النتائج: مكون يقوم بإنشاء جدول لجميع الاستعلامات المنفذة ونوعها ووقت استجابتها وصلاحيتها.
* تقرير إجمالي: مكون إنشاء جدول لجميع إحصائيات الاختبارات المنفذة
* مسجل بيانات بسيط: المكون الذي يحفظ نتائج الاختبار في ملف معين
يقدم اباتشي جميتر عنصرًا غير اختبار يسمى "HTTP(S) Test Script Recorder" (الاسم القديم: "HTTP Proxy Server") الذي يسمح بتسجيل جلسة استخدام تطبيق ويب يتم تنفيذه من متصفحه. يتم اعتراض الطلبات بواسطة وكيل إعادة الترميز، ويتم إنشاؤها كعناصر فرعية لوحدة تحكم المسجل، وتكون جاهزة لإعادة التنفيذ. يؤدي ذلك إلى تسريع إكمال سيناريو اختبار الأداء.

## الكتب المرجعية

* ماجستير جي ميتر من اختبار الحمل إلى DevOps ، كتاب باللغة الإنجليزية من تأليف أنطونيو جوميز رودريغز، وبرونو ديميون (ميلامبر) وفيليب معوض، أكتوبر 2018
* إتقان جميتر: Du Test de charge à Devops ، كتاب بالفرنسية من تأليف أنطونيو جوميز رودريغز، برونو ديميون (ميلامبر) وفيليب معوض، نوفمبر 2015
* JMeter Cookbook ، كتاب باللغة الإنجليزية بواسطة Bayo Erinle أكتوبر 2014
* اختبار الأداء مع JMeter ، كتاب باللغة الإنجليزية بواسطة Bayo Erinle يوليو 2013
* أباتشي جي ميتر، كتاب إنجليزي بقلم إميلي هاليلي يونيو 2008

## مراجع

* ↑ وصلة مرجع: https://jmeter.apache.org/changes_history.html. الوصول: 1 ديسمبر 2023.
* ↑ "Release 5.6.3". 9 يناير 2024. اطلع عليه بتاريخ 2024-01-19.
* ↑ وصلة مرجع: https://svn.apache.org/repos/asf/jmeter/tags/v5_1_1/LICENSE. الوصول: 27 ديسمبر 2020.