REST Assured مقابل JMeter: مقارنة بين أدوات اختبار REST

نشرت: 2022-03-11

يعد الاختبار الآلي مكونًا مهمًا في عملية ضمان جودة البرامج. لكن اختبار واجهات برمجة التطبيقات (APIs) لنقل الحالة التمثيلية (REST) ​​يمكن أن يكون عملًا صعبًا. يتجاهل الكثير ممن يلجأون إلى اختبار واجهات برمجة تطبيقات REST يدويًا التفاصيل ويفوتون الطرق التي يمكنهم من خلالها توفير الوقت.

أي خدمة REST API يتم اختبارها بشكل صحيح ستغطي هذه المجالات:

  • اختبار ما إذا كانت خدمة API تتوافق مع معايير REST
  • اختبار رموز استجابة خدمة API
  • تأكيد محتوى استجابة خدمة API
  • قياس أداء خدمة API

أدوات لاختبار REST

لهذا ، أنت بحاجة إلى الأدوات الصحيحة. Apache JMeter و REST Assured هما أداتان شائعتان لاختبار REST لاختبار خدمات REST API. يمكنك معرفة المزيد حول كيفية استخدامها عمليًا من هنا وهنا.

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

سهولة الإعداد

هناك شرط أساسي واحد: يتطلب كل من JMeter و REST Assured Java ، لذلك تحتاج إلى تثبيت Java على جهاز الكمبيوتر الخاص بك لتشغيل JMeter أو REST Assured.

تثبيت Apache JMeter بسيط للغاية: انتقل إلى صفحة التنزيل ، واختر ZIP أو TAR ، وقم بتنزيل الأرشيف ، وفك ضغطه ، وستكون جاهزًا للانطلاق.

انتقل إلى المجلد حيث قمت بفك ضغط الأرشيف ، وانتقل إلى المجلد الفرعي bin ، وقم بتشغيل jmeter.bat (أو ما شابه لنظام التشغيل الخاص بك ، إذا كان غير Windows). لمزيد من المعلومات التفصيلية حول كيفية إعداد Apache JMeter ، راجع هذه الصفحة.

يعد تثبيت REST Assured تجربة مختلفة بعض الشيء. REST Assured ليست أداة قائمة بذاتها. إنها مكتبة جافا. من أجل استخدامه ، يجب عليك إعداد مشروع Java جديد وإدراجه كمكتبة لمشروعك. بالطبع ، هناك دعم للعديد من أدوات البناء ، لذا يمكنك فقط توجيه محلل التبعية الخاص بك إلى بعض الريبو العام (Maven). يمكنك العثور على مزيد من المعلومات التفصيلية حول كيفية إعداد REST Assured هنا.

توثيق

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

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

إنشاء اختبار REST الآلي وصيانته

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

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

لقطة شاشة من JMeter GUI

عند حفظ مشروع JMeter الخاص بك ، سيتم حفظ كل ما قمت بإنشائه في ملف XML ضخم واحد ( .jmx ). بشكل عام ، حتى بالنسبة لتغيير بسيط في أحد الاختبارات ، سيكون عليك (على الأرجح) إعادة فتح المشروع في واجهة المستخدم الرسومية من أجل إجراء التغيير.

إذا كنت بحاجة إلى التعاون مع الآخرين في نفس ملف مشروع JMeter ، فلن يكون من السهل صيانة ملف XML الضخم هذا باستخدام أي من أنظمة إدارة التحكم بالمصادر (SCM) (مثل Git ، SVN ، Perforce ، إلخ).

من ناحية أخرى ، تتطلب REST Assured مهارات تشفير Java لإنشاء الاختبارات. لا توجد واجهة مستخدم رسومية سهلة الاستخدام لإنشاء الاختبار. ومع ذلك ، يسمح لك REST Assured بكتابة الاختبارات باستخدام لغة Gherkin (بناء الجملة المعطى متى ثم) لذلك حتى إذا كنت بحاجة إلى بعض مهارات تشفير Java ، فإن الاختبارات يمكن قراءتها إلى حد ما.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

نظرًا لأن REST Assured عبارة عن مكتبة والاختبارات مكتوبة بالفعل بلغة Java ، يمكنك تنظيم اختباراتك في ملفات Java منفصلة ، لذلك عندما تحتاج إلى تغيير اختبار واحد ، تحتاج فقط إلى فتح ملف واحد. لا تحتاج إلى واجهة مستخدم رسومية ، لذا يمكنك تعديل الاختبار بسهولة حتى من خلال محطة SSH. يعد التعاون مع الآخرين أمرًا بسيطًا إلى حد ما لأنه من السهل الاحتفاظ بملفات Java باستخدام أي SCM.

أنواع اختبارات الراحة

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

لقطة شاشة JMeter Response Times

من ناحية أخرى ، فهو ليس سيناريو الاستخدام الأساسي لـ JMeter. يمكنك إنشاء اختبارات وظيفية لواجهات برمجة تطبيقات REST باستخدام JMeter ، بما في ذلك تأكيد الاستجابة.

سيناريو الاستخدام الأساسي لـ REST Assured هو الاختبار الوظيفي لخدمات REST API. حتى أنه يأتي بآلية تأكيد الاستجابة الخاصة به (صيغة غيركين). نظرًا لأن REST Assured هي مكتبة Java ، فيمكن دمجها بسهولة مع اختبارات الوحدة.

عندما يتعلق الأمر باختبار الأداء ، فإن REST Assured لا يدعم اختبار الأداء خارج الصندوق. ومع ذلك ، إذا كنت ترغب في استخدامه لاختبار الأداء ، فسيتعين عليك تطوير إطار العمل المخصص الخاص بك لاختبار الأداء حول REST Assured.

تنفيذ اختبار

يمكن استدعاء اختبارات JMeter بطريقتين.

من واجهة المستخدم بالضغط على زر التشغيل:

JMeter تشغيل زر لقطة الشاشة

من سطر الأوامر:

 jmeter -n -t your_script.jmx

التوصية الرسمية من JMeter هي عدم تشغيل اختبارات الأداء باستخدام واجهة المستخدم الرسومية ، حيث ستعمل الاختبارات بشكل أبطأ (من حيث عدد الطلبات في الثانية) مقارنة بتشغيلها من سطر الأوامر.

من ناحية أخرى ، تتطلب REST Assured عداء اختبار منفصل ، على سبيل المثال jUnit أو TestNG (أو أي طريقة أخرى لتنفيذ كود Java).

من الكسوف باستخدام TestNG:

REST Assured Screenshot

من سطر الأوامر باستخدام أداة بناء Ant ، على سبيل المثال:

 ant run-tests

أنواع التقارير

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

تقرير أداء JMeter

يمكنك معرفة المزيد حول تقارير JMeter وأنواع التقارير التي يمكنك إنشاؤها من هنا.

لا تُنشئ REST Assured نفسها أي تقارير ، لذا فالأمر متروك لك ولإطار عمل الاختبار الذي اخترته. ومع ذلك ، عند التكامل مع بعض إطار عمل اختبار الوحدة ، يمكنك الحصول على تقارير قابلة للاستخدام في تنسيقات HTML أو نص أو XML.

REST Assured HTML Report

التكامل مع جنكينز

عندما يتعلق الأمر بالتكامل المستمر للمنتجات قيد الاختبار ، فمن المهم جدًا دمج إطار أتمتة الاختبار الخاص بك مع أدوات CI لكل من الاختبارات الجارية والإبلاغ عن النتائج.

يمكن دمج اختبارات JMeter الآلية بسهولة مع Jenkins باستخدام المكون الإضافي Performance الذي يسمح لك بإعداد إجراءات ما بعد الإنشاء والحصول على صفحة لوحة معلومات جميلة المظهر من صفحة وظائف Jenkins.

لقطة شاشة لـ JMeter Jenkins

يمكن أيضًا دمج REST Assured بسهولة مع Jenkins لأن Jenkins بها مكونات إضافية لجميع أطر عمل الاختبار تقريبًا ؛ على سبيل المثال ، المكون الإضافي TestNG الذي يمكنه مرة أخرى إنشاء مخطط اتجاه قوي لنتائج الاختبار.

أكد REST لقطة شاشة لـ Jenkins

نشاط المجتمع

هذه فئة لا يمكن قياسها بسهولة. يعتمد نشاط المجتمع على عدد من العوامل مثل نضج الأداة أو عدد المساهمين.

لدى Apache JMeter مجتمع أكبر في الوقت الحاضر. هذا يرجع في الغالب إلى حقيقة أن JMeter ظهر في السوق منذ فترة طويلة ويعتبر معيارًا صناعيًا عندما يتعلق الأمر باختبار أداء تطبيقات وخدمات الويب. JMeter تنشر إصدارات رسمية كل 5-6 أشهر. مستودع GitHub نشط للغاية ، مع التزامات جديدة على أساس يومي. يستخدم JMeter Bugzilla كمتعقب للمشكلات ولديه قائمة بالمشكلات المفتوحة التي يتم تغييرها بشكل متكرر. هناك أكثر من 23000 نتيجة لـ JMeter في بحث StackOverflow. من مواقع التواصل الاجتماعي ، لدى JMeter حساب Twitter رسمي. على Facebook و LinkedIn ، لا يوجد حساب رسمي لـ JMeter ، ولكن هناك مجموعتان ، أكبرهما مجموعة Facebook ومجموعة LinkedIn هذه.

REST Assured تشق طريقها إلى المرحلة الرئيسية وأصبحت الخيار الأول ، توصية من مصادر متعددة ، عندما يتعلق الأمر بأتمتة الاختبارات الوظيفية لخدمة REST API. تنشر REST Assured الإصدارات الرسمية مرة كل 6 أشهر خلال العامين الماضيين. يحتوي مستودع GitHub على الكثير من المساهمين وهو أقل نشاطًا قليلاً من JMeter ، ولكنه أيضًا نشط للغاية. تتعقب REST Assured المشكلات في مستودع GitHub ، لذا فكلها في مكان واحد. في StackOverflow ، توجد أكثر من 2000 نتيجة بحث لـ REST Assured ، لذلك يمكننا القول إنها أقل بكثير مقارنة بنتائج بحث JMeter. بالنسبة لمجموعات الشبكات الاجتماعية ، تم العثور على مجموعة LinkedIn فقط مع عدد أقل بكثير من الأعضاء مقارنة بـ JMeter. قد لا يكون مجتمع REST Assured كبير مثل مجتمع JMeter ، لكنه نشط للغاية.

ملخص

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

فيما يلي ملخص لجميع معايير المقارنة التي تم استكشافها في هذه المقالة لأداتي اختبار REST الشائعتين:

اباتشي جميتر اطمئن، لا تشغل بالك
يتطلب مهارات البرمجة رقم نعم (جافا)
مستندات شاملة نعم نعم
الاختبار الوظيفي نعم (لكن مبالغة) نعم
اختبار أداء نعم لا (من الصندوق)
مناسب لـ SCM (Git، P4 ...) رقم نعم
تقارير الاختبار نعم رقم
التكامل مع أدوات CI نعم نعم
التكامل مع اختبارات الوحدة رقم نعم
موازاة الاختبار نعم نعم
نشاط المجتمع نعم نعم