اختبار الإجهاد (البرمجيات)
اختبار الإجهاد هو نشاط لاختبار البرمجيات يهدف إلى تحديد مدى متانة البرنامج من خلال اختباره خارج نطاق التشغيل العادي. يُعد اختبار الإجهاد بالغ الأهمية للبرمجيات " الحساسة للغاية "، ولكنه يُستخدم لجميع أنواع البرمجيات. عادةً ما يركز اختبار الإجهاد بشكل أكبر على المتانة والتوافر ومعالجة الأخطاء تحت ضغط عالٍ، مقارنةً بالتركيز على السلوك الصحيح في الظروف العادية.
يشير اختبار إجهاد النظام إلى الاختبارات التي تركز بشكل أكبر على المتانة والتوافر ومعالجة الأخطاء تحت ضغط عالٍ، بدلاً من التركيز على السلوك الصحيح في الظروف العادية. وعلى وجه الخصوص، قد تهدف هذه الاختبارات إلى ضمان عدم تعطل البرنامج في حالات نقص الموارد الحاسوبية (مثل الذاكرة أو مساحة القرص )، أو في حالات التزامن العالي غير المعتاد ، أو في حالات هجمات حجب الخدمة .
أمثلة:
- قد يخضع خادم الويب لاختبارات تحمل الضغط باستخدام البرامج النصية والروبوتات وأدوات هجمات حجب الخدمة المختلفة لمراقبة أداء الموقع الإلكتروني خلال فترات ذروة الاستخدام. وعادةً ما تستغرق هذه الهجمات أقل من ساعة، أو حتى يتم اكتشاف حد أقصى لكمية البيانات التي يمكن لخادم الويب تحملها.
يمكن مقارنة اختبار الإجهاد باختبار الحمل:
- يفحص اختبار التحميل البيئة وقاعدة البيانات بأكملها، مع قياس وقت الاستجابة، بينما يركز اختبار الإجهاد على المعاملات المحددة، ويدفع إلى مستوى يؤدي إلى تعطيل المعاملات أو الأنظمة.
- أثناء اختبارات الضغط، إذا تم اختبار بعض المعاملات بشكل انتقائي، فقد لا تتعرض قاعدة البيانات لحمل كبير، ولكن المعاملات نفسها تتعرض لضغط شديد. من ناحية أخرى، أثناء اختبارات التحميل، تتعرض قاعدة البيانات لحمل كبير، بينما قد لا تتعرض بعض المعاملات للضغط.
- اختبار إجهاد النظام، المعروف أيضًا باسم اختبار الإجهاد، هو تحميل المستخدمين المتزامنين بما يتجاوز المستوى الذي يمكن للنظام التعامل معه، بحيث ينهار عند أضعف حلقة في النظام بأكمله.
الخبرة الميدانية
قد تكون حالات الفشل مرتبطة بما يلي:
- خصائص بيئات غير إنتاجية، مثل قواعد بيانات اختبار صغيرة.
- انعدام تام لاختبارات التحميل أو الإجهاد
الأساس المنطقي
تشمل أسباب إجراء اختبارات الإجهاد ما يلي:
- البرنامج الذي يتم اختباره "حرج للغاية"، أي أن فشل البرنامج (مثل حدوث عطل ) سيكون له عواقب وخيمة.
- عادة ما يكون مقدار الوقت والموارد المخصصة للاختبار غير كافٍ، باستخدام أساليب الاختبار التقليدية، لاختبار جميع المواقف التي سيتم فيها استخدام البرنامج عند إصداره.
- حتى مع توفر الوقت والموارد الكافية لكتابة الاختبارات، قد لا يكون من الممكن تحديد جميع الطرق المختلفة التي سيُستخدم بها البرنامج مسبقًا. وينطبق هذا بشكل خاص على أنظمة التشغيل والبرمجيات الوسيطة ، التي ستُستخدم في نهاية المطاف بواسطة برامج لم تكن موجودة حتى وقت الاختبار.
- قد يستخدم العملاء البرنامج على أجهزة كمبيوتر ذات موارد حسابية أقل بكثير (مثل الذاكرة أو مساحة القرص ) من أجهزة الكمبيوتر المستخدمة للاختبار.
- لا يمكن ضمان سلامة بيانات الإدخال . بيانات الإدخال شاملة لجميع أجزاء البرنامج: قد تكون ملفات بيانات، أو تدفقات بيانات، أو مخازن مؤقتة في الذاكرة، بالإضافة إلى الوسائط والخيارات المُعطاة لملف تنفيذي في سطر الأوامر، أو مدخلات المستخدم التي تُفعّل إجراءات في تطبيق بواجهة رسومية. يمكن استخدام أساليب الفحص العشوائي واختبارات المحاكاة لاكتشاف المشاكل الناتجة عن تلف البيانات أو عدم اتساقها.
- يُعد اختبار التزامن صعباً للغاية باستخدام أساليب الاختبار التقليدية. وقد يكون اختبار الإجهاد ضرورياً لاكتشاف حالات التزامن المتنافس وحالات الجمود .
- قد تتعرض البرامج مثل خوادم الويب التي يمكن الوصول إليها عبر الإنترنت لهجمات حجب الخدمة .
- في الظروف العادية، قد تكون بعض أنواع الأخطاء البرمجية ، مثل تسرب الذاكرة ، غير ضارة نسبيًا ويصعب اكتشافها خلال فترات الاختبار القصيرة. مع ذلك، قد تكون هذه الأخطاء خطيرة. بمعنى آخر، يمكن اعتبار اختبار الضغط لفترة قصيرة نسبيًا بمثابة محاكاة للتشغيل الطبيعي لفترة أطول.
العلاقة بتغطية الفروع
تغطية الفروع (نوع محدد من تغطية الكود ) هي مقياس لعدد الفروع التي تم تنفيذها أثناء الاختبار، حيث تعني "تغطية فروع بنسبة 100%" أن كل فرع في البرنامج قد تم تنفيذه مرة واحدة على الأقل في أحد الاختبارات. تُعد تغطية الفروع من أهم مقاييس اختبار البرمجيات؛ فالبرمجيات التي تكون تغطية فروعها منخفضة لا تُعتبر عمومًا مختبرة بشكل شامل. تجدر الإشارة إلى أنمقاييس تغطية الكود هي خاصية لاختبارات البرنامج، وليست خاصة بالبرنامج نفسه.
يتطلب تحقيق تغطية عالية للفروع غالبًا كتابة اختبارات سلبية ، أي اختبارات يُفترض أن يفشل فيها البرنامج بطريقة ما، بالإضافة إلى الاختبارات الإيجابية المعتادة التي تختبر الاستخدام المقصود. مثال على الاختبار السلبي هو استدعاء دالة بمعاملات غير صالحة. مع ذلك، هناك حد لتغطية الفروع التي يمكن تحقيقها حتى مع الاختبارات السلبية، حيث قد تُستخدم بعض الفروع فقط لمعالجة الأخطاء الخارجة عن سيطرة الاختبار. على سبيل المثال، لا يتحكم الاختبار عادةً في تخصيص الذاكرة، لذا يصعب اختبار الفروع التي تعالج خطأ "نفاد الذاكرة".
يمكن لاختبارات الإجهاد تحقيق تغطية أفضل للفروع من خلال تهيئة الظروف التي يتم في ظلها اتباع فروع معينة لمعالجة الأخطاء. ويمكن تحسين التغطية بشكل أكبر باستخدام حقن الأعطال .
أمثلة
- يمكن اختبار خادم الويب تحت الضغط باستخدام البرامج النصية والروبوتات وأدوات حجب الخدمة المختلفة لمراقبة أداء موقع الويب أثناء ذروة الأحمال.
اختبار التحميل مقابل اختبار الإجهاد
يتضمن اختبار الإجهاد عادةً إجراء اختبارات تتجاوز حدودًا محددة لتحديد نقاط الفشل واختبار استعادة النظام بعد الفشل. [ 1 ] [ 2 ]
يشير اختبار التحميل إلى بيئة مضبوطة تنتقل من أحمال منخفضة إلى أحمال عالية. أما اختبار الإجهاد فيركز على أحداث عشوائية وفوضوية وغير متوقعة. باستخدام تطبيق ويب كمثال، إليك بعض الطرق التي يمكن من خلالها إدخال الإجهاد: [ 1 ]
- ضاعف العدد الأساسي للمستخدمين المتزامنين / اتصالات HTTP
- إيقاف وإعادة تشغيل المنافذ بشكل عشوائي على محولات/أجهزة توجيه الشبكة التي تربط الخوادم (عبر أوامر SNMP على سبيل المثال)
- قم بإيقاف تشغيل قاعدة البيانات، ثم أعد تشغيلها
- أعد بناء مصفوفة RAID أثناء تشغيل النظام
- تشغيل العمليات التي تستهلك الموارد (وحدة المعالجة المركزية، الذاكرة، القرص، الشبكة) على خوادم الويب وقواعد البيانات
- راقب كيف يتفاعل النظام مع الأعطال وكيف يتعافى.
- هل يقوم بحفظ حالته؟
- هل يتوقف التطبيق عن العمل ويتجمد أم أنه يفشل بسلاسة؟
- هل يستطيع النظام استعادة حالته الجيدة السابقة عند إعادة التشغيل؟
- هل يُخرج النظام رسائل خطأ ذات معنى للمستخدم وللسجلات؟
- هل تعرض أمن النظام للخطر بسبب أعطال غير متوقعة؟
مصداقية
يناقش بحثٌ بعنوان "إطار عمل لاختبار البرمجيات قائم على الأنماط لتقييم قابلية استغلال ثغرات تلف البيانات الوصفية"، من تطوير دينغ فنغلي، ووانغ جيان، وتشانغ بين، وفينغ تشاو، وجيانغ تشيوان، وسو يونفي، تزايد الاهتمام بضمان جودة البرمجيات وحمايتها. مع ذلك، لا تزال البرمجيات الحالية، للأسف، غير محمية من الهجمات الإلكترونية، لا سيما في ظل وجود تنظيم غير آمن لبيانات وصفية الذاكرة. يهدف الباحثون إلى استكشاف إمكانية تلف بيانات وصفية الذاكرة واستغلالها من قِبل المهاجمين الإلكترونيين، ويقترحون "ريلاي"، وهو إطار عمل لاختبار البرمجيات يحاكي سلوك الاستغلال البشري لتلف البيانات الوصفية على مستوى الجهاز. كما يستفيد "ريلاي" من الموارد الأقل استهلاكًا لحل مشكلة التخطيط وفقًا لنمط الاستغلال، ويُنشئ الاستغلال النهائي.
منهجية لتحديد مستوى تفصيل وحدات التعلم، من تطوير بينيتي وفابياني باريتو فافاسوري. يناقش المؤلفان أولًا كيف أصبحت وحدات التعلم أحد أهم مواضيع البحث في مجال التعلم الإلكتروني في السنوات الأخيرة، وكيف يُعدّ مستوى التفصيل عاملًا أساسيًا لإعادة استخدامها. ثم يعرضان منهجية لتحديد مستوى تفصيل وحدات التعلم في مجال الحوسبة، بالإضافة إلى دراسة حالة في اختبار البرمجيات. لاحقًا، يُجري المؤلفان خمس تجارب لتقييم إمكانات التعلم من وحدات التعلم المُنتجة، ولإثبات إمكانية إعادة استخدامها. كما تُعرض نتائج التجربة في المقال، والتي تُظهر أن وحدات التعلم تُعزز فهم المفاهيم وتطبيقها.
أحدثت مقالة حديثة بعنوان "التحقق من موثوقية البرمجيات القائمة على الخدمات السحابية" نقلة نوعية، إذ تناولت حاجة صناعة البرمجيات إلى طريقة لقياس موثوقية كل مكون من مكوناتها. واقترحت المقالة طريقة للتحقق من الضمانات تعتمد على الخدمات السحابية . بدأت المقالة بمناقشة كيفية تحديد موثوقية كل مكون من خلال التحقق من ضمانات خدمات المكونات. ثمّ عرّفت المقالة نموذجًا فعالًا للمكونات، واستنادًا إلى هذا النموذج، تمّ توضيح عملية التحقق من خدمة المكون من خلال مثال تطبيقي.
انظر أيضاً
- اختبار البرمجيات
- تتناول هذه المقالة اختبار موثوقية البرمجيات في ظل أحمال عمل غير متوقعة أو نادرة (أحمال عمل مُجهدة). انظر أيضًا إلى ما يلي ذي الصلة الوثيقة:
- اختبار قابلية التوسع
- اختبار التحميل
- قائمة أدوات البرمجيات لاختبار التحميل في اختبار التحميل#أدوات اختبار التحميل
- اختبار الإجهاد لمناقشة عامة
- اختبار الصندوق الأسود
- اختبار أداء البرمجيات
- تحليل السيناريوهات
- محاكاة
- اختبار الصندوق الأبيض
- Technischer Überwachungsverein (TÜV) - اختبار المنتج وإصدار الشهادات
- اختبار التزامن باستخدام مدقق نموذج CHESS
- كانت شركة Jinx (التي توقفت عن العمل بسبب الاستحواذ وإلغاء المشروع) تقوم بأتمتة اختبارات الإجهاد من خلال الاستكشاف التلقائي لسيناريوهات التنفيذ غير المحتملة.
- اختبار الإجهاد (للأجهزة)
مراجع
- 1 2 جورجيو، جريج (28 فبراير 2005). "اختبار الأداء مقابل اختبار الحمل مقابل اختبار الإجهاد" . اختبار أجايل . تم الاسترجاع في 25 فبراير 2013 .
- ↑ تشان، إتش أنتوني (2004). "اختبار الإجهاد المُعجّل للأجهزة والبرامج" (ملف PDF) . الندوة السنوية للموثوقية والصيانة، 2004 - RAMS . لوس أنجلوس، كاليفورنيا: IEEE. الصفحات 346-351 . doi : 10.1109/RAMS.2004.1324530 . ISBN 0-7803-8215-3تم الاطلاع عليه بتاريخ 19-10-2020 .
- اختبار البرمجيات
