السيناريوهات السلبية الشائعة في اختبار البرمجيات

السيناريوهات السلبية الشائعة في اختبار البرمجيات

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

تشير السيناريوهات السلبية (negative scenarios) في اختبار البرمجيات إلى اختبار ما يحدث عندما يقوم المستخدمون بأمور غير متوقعة أثناء استخدام البرمجيات. إذا لم تُختبَر هذه السيناريوهات بشكل صحيح، فقد يؤدّي ذلك إلى عواقب وخيمة وقد تتراكم تكلفة إصلاح مشاكل الجودة بعد إصدار البرنامج مع مرور الوقت.

أهمية اختبار السيناريوهات السلبية

اختبار السيناريوهات السلبية هو جزء لا يتجزّأ من اختبار البرمجيات لعدّة أسباب:

  • يمنع تلف البيانات (Prevents Data Corruption): قد تُسبّب المدخلات الخاطئة تلفًا لقواعد البيانات إذا لم تُعالَج بشكل صحيح.
  • يُحسّن الأمان (Improves Security): تبدأ العديد من خروقات الأمان بمُدخلات غير متوقعة تستغل الثغرات الأمنية. في عام 2024 وحدَهُ وقع 1.35 مليار شخص ضحيّة لاختراقات البيانات.
  • يُحسّن تجربة المستخدم (Enhances User Experience): لا شيء يُحبط المستخدمين أكثر من الأعطال الغامضة أو رسائل الخطأ.
  • يُقلّل تكاليف الدعم (Reduces Support Costs): انخفاض الأخطاء يعني انخفاضًا في مكالمات خدمة العملاء وتذاكر الدعم.
  • يحمي سُمْعَتك (Protects Your Reputation): البرامج التي تتعطّل بسهولة تُلحِق الضرر بصورة شركتك.

إن أخطر حالات فشل البرامج غالبًا لا تأتي من الفشل في تنفيذ الميزات (features) بشكل صحيح، بل من الفشل في التعامل مع المواقف غير المتوقعة.

السيناريوهات السلبية الشائعة في اختبار البرمجيات

دعونا نستكشف السيناريوهات السلبية الأكثر أهمية التي يجب عليك اختبارها:

الحالات الحدّية (Edge Cases)

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

  • المستخدمون الذين تبلغ أعمارهم 18 عامًا بالضبط.
  • المستخدمون الذين تبلغ أعمارهم 100 عام بالضبط.
  • المستخدمون الذين تقل أعمارهم عن 18 عامًا.
  • المستخدمون الذين تزيد أعمارهم على 100 عام.

يمكن للحالات الحدّية أن تكشف عن افتراضات في الكود الخاص بك لم تكن واضحة أثناء الاختبار العادي (regular testing). أيضًا بالنسبة لمختبري البرمجيات، يتطلّب اختبار الحالات الحدّية خيالًا. يجب عليك تحديد جميع الحدود القصوى المحتملة للمُدخلات واختبارها بدقة ويتضمّن ذلك الحد الأدنى والحد الأقصى للقِيَم والحالات الفارغة (empty states) والقيود على الموارد (resource limitations) وسلوكيات المستخدم غير المعتادة التي قد تحدث نادرًا ولكنها قد تتسبّب في مشكلات كبيرة عند حدوثها.

أعطال التحقق من صحّة المُدخلات (Input Validation)

تحدث أعطال التحقق من صحّة المُدخلات عندما يقبل برنامجك البيانات بينما لا ينبغي له ذلك. يحدث هذا عندما لا يتحقق البرنامج بشكل صحيح مما يُدخِله المستخدمون في الحقول أو النماذج أو حتى الملفات المُحمّلة. على سبيل المثال، قد يُدخِل المستخدم نصًا في حقل يقبل أرقام فقط أو يُلصِق نصًا برمجيًا (script) في حقل تعليقات (comments) أو يُحمّل ملفًا تنفيذيًا (executable) مُمَوّهًا على شكل صورة.

قد تُسبّب هذه الأعطال توقفَ البرنامج أو تلف البيانات أو السلوك غير المتوقع (unexpected behavior). من بين مشاكل التحقق من صحة المدخلات الشائعة قبول الأرقام السالبة بينما يُفترض السماح فقط بالأرقام الموجبة أو السماح بإضافة أحرف خاصة إلى حقول اسم المستخدم.

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

يتأكّد التحقق الجيّد من صحّة الإدخال من التنسيق (format) وهل هو النوع الصحيح (the right type)؟ والمحتوى (هل القيمة معقولة؟) لجميع المُدخلات التي يقدّمها المستخدم قبل معالجتها.

الثغرات الأمنية (Security Vulnerabilities)

الثغرات الأمنية هي نقاط ضعف تسمح للمهاجمين باختراق بيانات أو وظائف البرنامج. غالبًا ما تنتُج هذه الثغرات عن ثغرات في الاختبارات السلبية (negative testing) حيث لم يتم مراعاة كيفية إساءة استخدام المستخدمين الضارّين للنظام من قبل المطوّرين.

تشمل الثغرات الأمنية الشائعة الأخرى الأمثلة التالية:

  • Injecting Malicious Code (e.g., SQL injection) في حقول الإدخال.
  • Cross-site Scripting (XSS)
  • Broken Authentication
  • Sensitive Data Exposure
  • Insecure Deserialization

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

تأمين نقاط الضعف في البرنامج

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

* المصدر: https://www.softwaretestingmagazine.com/knowledge/common-negative-scenarios-in-software-testing

** الصورة من موقع: https://www.bairesdev.com/blog

لا توجد تعليقات

شاركني رأيك