ما هو اختبار التحمل في اختبار البرمجيات؟ (مع مثال)

⚡ ملخص ذكي

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

  • 🕒 الحمل المستمر: من المتوقع أن يستمر توقف حركة الإنتاج لساعات أو أيام بدلاً من دقائق.
  • 📉 التركيز على التدهور: السؤال هو ما إذا كانت أوقات الاستجابة تتجه نحو الأعلى، وليس ما إذا كان الهدف قد تحقق مرة واحدة.
  • 💧 النتائج المشتركة: تسرب الذاكرة، واستنفاد مجمع الاتصالات، ونمو السجلات أو ذاكرة التخزين المؤقت غير المحدود.
  • 📊 مجموعة المراقبة: الذاكرة، ووحدة المعالجة المركزية، ووقت الاستجابة، ومعدل النقل، واتصالات قاعدة البيانات خلال التشغيل الكامل.
  • 🛠️ الأدوات: تقوم أدوات التحميل القياسية بتوجيه حركة المرور بينما تقوم أدوات إدارة أداء التطبيقات بتسجيل منحنيات الموارد.
  • 🇧🇷 التنازل عن ميزة ممن أجل الحصول على أخرى: النتائج ذات قيمة عالية ولكن الحصول عليها بطيء، مما يحد من عدد مرات إجراء الاختبار.

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

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

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

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

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

أهداف اختبار التحمل

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

ما الذي يجب مراقبته في اختبارات التحمل؟

اختبار التحمل

في اختبار التحمل يتم اختبار الأشياء التالية.

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

كيفية إجراء اختبار التحمل

فيما يلي نهج الاختبار الأساسي لاختبار التحمل

  • بيئة الاختبار – حدد الأجهزة والبرامج ونظام التشغيل المطلوب لاختبار التحمل، وتعيين الأدوار والمسؤوليات داخل الفريق، وما إلى ذلك. يجب أن تكون البيئة جاهزة قبل تنفيذ الاختبار. تحتاج أيضًا إلى تقدير حجم إنتاج قاعدة البيانات المشتركة والنمو السنوي. هذا مطلوب، وبالتالي تحتاج إلى اختبار كيفية استجابة تطبيقك بعد عام أو عامين أو خمسة أعوام.
  • إنشاء خطة الاختبار والسيناريوهات - بناءً على طبيعة الاختبار – يدويًا أو آليًا أو مزيجًا من الاثنين معًا، حالة الاختبار يجب التخطيط للتصميم والمراجعات والتنفيذ. يجب أيضًا أن يكون اختبار الضغط على النظام واختبار نقطة الانهيار وما إلى ذلك جزءًا من خطة الاختبار. يحدد اختبار الضغط على النظام نقطة التوقف في التطبيق.
  • تقدير الاختبار – قدِّم تقديرًا للمدة التي سيستغرقها إكمال مرحلة الاختبار. وينبغي تحليله على أساس عدد المختبرين المشاركين وعدد دورات الاختبار المطلوبة.
  • تحليل المخاطر - تحليل الخطر واتخاذ الإجراء المناسب للوقاية منه. تحديد أولويات حالات الاختبار وفقًا لعامل الخطر وتحديد المخاطر والمشكلات التالية التي قد يطورها المختبر أثناء اختبار التحمل.
  • هل سيظل الأداء ثابتًا مع مرور الوقت؟
  • هل هناك مشكلات ثانوية أخرى لم يتم اكتشافها بعد؟
  • هل هناك تدخلات خارجية لم تتم معالجتها؟
  • جدول الاختبار - تحديد الميزانية والتسليمات ضمن الأطر الزمنية. مثل اختبار التحمل يطبق ترتيب حمل ضخم ولكن طبيعي للمعاملات على النظام/التطبيق لفترة زمنية متواصلة.

مثال على اختبار التحمل

بينما اختبار الإجهاد يأخذ النظام الذي تم اختباره إلى أقصى حدوده، اختبار التحمل يأخذ التطبيق إلى الحد الأقصى مع مرور الوقت.

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

أدوات اختبار التحمل

  • تحميل الويب
  • LoadComplete
  • Apache JMeter
  • بي.
  • تقدم
  • تحميلUI
  • أوبنستا
  • Rational Performance Tester

مزايا اختبار التحمل

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

عيوب اختبار التحمل

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

كيف يتناسب هذا الاختبار مع عائلة اختبارات الأداء

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

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

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

المؤشرات الرئيسية التي يجب جمعها أثناء الاختبار

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

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

اقرأ المتوسط ​​والنسبة المئوية معًا. يُشير متوسط ​​800 مللي ثانية مع نسبة مئوية 95 تبلغ 900 مللي ثانية إلى نظام مستقر. أما المتوسط ​​نفسه مع نسبة مئوية 95 تبلغ 9 ثوانٍ فيعني أن مستخدمًا واحدًا من بين كل عشرين مستخدمًا يُعاني من مشاكل، وأن المتوسط ​​يُخفي هذه المشاكل.

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

اختبار التحمل: أهم النقاط

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

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

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

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

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

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

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

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