اختبار تحميل API مع الجراد

اختبار تحميل API مع الجراد

اختبار تحميل API مع الجراد: مقدمة

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

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

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

ما هو اختبار تحميل API؟

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

تقيس اختبارات تحميل API المقاييس مثل وقت الاستجابة ، والمستخدمين المتزامنين ، ومعدلات الإنتاجية ، ومستويات استخدام الموارد ، ومتوسط ​​الوقت بين الفشل (MTBF) ، ومتوسط ​​الوقت للفشل (MTTF) ، وما إلى ذلك. يمكن استخدام كل هذه المقاييس لتحديد مدى جودة أداء واجهة برمجة التطبيقات.

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

هناك عدة أنواع من اختبارات الحمل ، ولكل منها حالات الاستخدام الخاصة به. دعونا نلقي نظرة على بعضها.

اختبار الحمل: هذا هو الشكل الأساسي لاختبار الحمل. يتم استخدامه لتقييم أداء النظام (في هذه الحالة ، API) تحت الحمل العادي وحمل الذروة المتوقع.

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

اختبار سبايك: هذا يشبه إلى حد ما اختبار الإجهاد ، باستثناء أن الحمل الثقيل يتم تطبيقه فجأة ، بدلاً من تكثيفه ببطء. يمثل هذا النوع من الاختبارات ما يحدث عندما يكون هناك ارتفاع مفاجئ في متوسط ​​عدد المستخدمين أو الزوار ، أو عندما يكون هناك هجوم DDOS على نظامك.

اختبار النقع: هذا الاختبار يختلف عن الآخرين أعلاه. إنه يضع نظامك أقل من 80٪ (أو ما يقرب من ذلك) من الحمل العادي ويتركه يعمل لفترة طويلة ، لنقل 12 إلى 14 ساعة. يحدد هذا النوع من الاختبارات مدى موثوقية النظام بمرور الوقت.

تحميل اختبار واجهات برمجة التطبيقات الخاصة بك مع الجراد

يمكن للمطورين الوصول إلى مجموعة متنوعة من الخيارات لتحميل اختبار واجهات برمجة التطبيقات الخاصة بهم. بعض أدوات اختبار الحمل الشائعة هي Gatling و JMeter و Locust. سنركز على الجراد في هذه المقالة.

Locust هي أداة اختبار تحميل مفتوحة المصدر تعتمد على Python تستخدمها كبرى الشركات مثل Google و Microsoft و Riot Games لاختبار واجهات برمجة التطبيقات الخاصة بهم. في هذه المقالة ، سوف نوضح كيفية تحميل اختبار API. 

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

المتطلبات الأساسية

بيثون 3

الإعداد والتثبيت

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

مشروع $ mkdir

مسار $ cd / d \ to \ project

$ بيثون -m venv venv

$ venv \ Scripts \ activ

 

أولاً ، أنشأنا ملف تنفيذ المشاريع الدليل. ثم قمنا بتغيير الدليل الحالي إلى تنفيذ المشاريع . ثم قمنا بإنشاء وتنشيط بيئة افتراضية لبيثون داخل هذا الدليل. 

الآن ، سوف ننتقل إلى التثبيت قارورة(سنستخدمه لإنشاء نقاط النهاية ليتم اختبار الحمل) و جراد نفسها. 

 

لتثبيت Flask ، قم بتشغيل. تأكد من أنك في تنفيذ المشاريع حيث أنشأت بيئة افتراضية.

قارورة تثبيت بالدولار

 

لتثبيت Locust ، قم بتشغيل

تثبيت الجراد

 

بمجرد الانتهاء من ذلك ، اكتب الأوامر التالية. تأكد من أنك في تنفيذ المشاريع الدليل عند القيام بذلك.

نسخ nul __init__.py $

التطبيق $ mkdir

تطبيق $ copy nul \ app.py

تطبيق $ copy nul \ __ init__.py

 

تنشئ هذه الأوامر بعض الملفات التي سنستخدمها لإنشاء نقاط النهاية الخاصة بنا باستخدام Flask. يمكنك أيضًا إنشاء هذه الملفات باستخدام مستكشف الملفات الخاص بك بالمناسبة. لكن ما هي المتعة في ذلك؟ بمجرد القيام بذلك ، انسخ الكود أدناه إلى app.py

من flask import Flask ، jsonify ، request

التطبيق = قارورة (__ name__)

نماذج_السيارة = [

  {'brand': 'Tesla'، 'model': 'Model S'}

]

 

نماذج_الطائرة = [

  {'brand': 'Boeing'، 'model': '747'}

]

 

@ app.route ("/ سيارات")

def get_cars ():

  عودة jsonify (car_models)

@ app.route ("/ طائرات")

def get_planes ():

  عودة jsonify (نموذج_الطائرة)

إذا __name__ == '__main__':

    app.run (تصحيح = صحيح)  

 

يحتوي الكود أعلاه على طريقة get_cars تستخدم للحصول على قائمة بماركات السيارات وطرازاتها ، و get_planes تستخدم للحصول على قائمة ماركات الطائرات ونماذجها. لكي نحمل اختبار نقطة النهاية هذه ، نحتاج إلى تشغيل app.py. للقيام بذلك ، قم بتشغيل الأمر أدناه.

مسار python $ \ to \ app.py

بمجرد تشغيل ذلك ، سترى شيئًا كهذا:

اختبار تحميل API 1

إذا قمت بنسخ عنوان URL من المحطة واكتب cars or الطائرات بعد / ، يجب أن تكون قادرًا على رؤية البيانات هناك. ومع ذلك ، فإن هدفنا هو اختبار نقطة النهاية باستخدام الجراد ، وليس باستخدام المتصفح. لذلك دعونا نفعل ذلك. قم بتشغيل الأمر التالي في جذر ملف تنفيذ المشاريع الدليل.

 

$ نسخة فارغة locust_test.py

 

يؤدي هذا إلى إنشاء ملف "locust_test.py" في جذر ملف تنفيذ المشاريع الدليل. بمجرد القيام بذلك ، افتح الملف والصقه في الكود أدناه. سوف نشرح ذلك قريبا.

 

وقت الاستيراد

من استيراد الجراد HttpUser المهمة بين

 

فئة UserBehaviour (HttpUser):

    wait_time = بين (5، 10)

 

    @مهمة

    def get_cars (ذاتي):

        self.client.get ('/ سيارات')

    

    @مهمة

    def get_planes (ذاتي):

        self.client.get ('/ طائرات')

 

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

يتم تحديد المهمة عن طريق تزيين طريقة بامتداد @مهمة مصمم. لدينا أيضًا وظيفة تسمى ما بين() يتيح لنا تحديد مدى الثواني التي يجب انتظارها قبل تنفيذ المهمة التالية. يمكنك أن ترى أننا خصصنا نطاقًا من 5 إلى 10 ثوانٍ لذلك في الكود الخاص بنا. 

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

 

$ الجراد -f locust_test.py

 

يجب أن نرى شيئا من هذا القبيل:

اختبار تحميل API 2

بشكل افتراضي ، توجد واجهة الويب الخاصة بلوكوست على http: // localhost / 8089. إذا قمت بزيارة موقع الويب ، فسترى واجهة مثل هذه:

اختبار تحميل API 3

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

اختبار تحميل API 4

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


إلى جانب إحصائيات علامة التبويب ، هناك ملف الرسوم البيانية علامة التبويب التي تظهر المزيد معلومات في شكل رسم بياني ، مثل الصورة أدناه.

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

ليستنتج...

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

إذا كنت تريد إجراء اختبار ارتفاع ، فحدد قيمة كبيرة (على سبيل المثال 2000) لعدد المستخدمين ، ثم قيمة كبيرة مماثلة لمعدل النشر (500 على سبيل المثال). هذا يعني أنه في غضون 4 ثوانٍ ، سيكون لديك 2000 مستخدم تم إنشاؤهم والوصول إلى نقاط النهاية الخاصة بك. سيكون اختبار الإجهاد مشابهًا ، ولكن بقيمة أقل بكثير لمعدل التفريخ. لمعرفة كل ما يمكنك القيام به ، تحقق من Locust توثيق