اختبار الصندوق الأبيض

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

يمكن تطبيق اختبار الصندوق الأبيض على مستويات الوحدة والتكامل والنظام في عملية اختبار البرمجيات. على الرغم من أن المختبرين التقليديين كانوا يميلون إلى اعتبار اختبار الصندوق الأبيض اختبارًا على مستوى الوحدة، إلا أنه يُستخدم اليوم بشكل أكثر شيوعًا لاختبار التكامل والنظام. فهو يختبر المسارات داخل الوحدة، والمسارات بين الوحدات أثناء التكامل، وبين الأنظمة الفرعية أثناء اختبار النظام. مع أن هذه الطريقة في تصميم الاختبار قادرة على كشف العديد من الأخطاء أو المشكلات، إلا أنها قد تغفل أجزاءً غير مُنفذة من المواصفات أو متطلبات مفقودة. عندما يكون اختبار الصندوق الأبيض مُوجهًا بالتصميم، [ 1 ] أي مُوجهًا حصريًا بالمواصفات المتفق عليها لكيفية عمل كل مكون من مكونات البرنامج (كما في عمليات DO-178C و ISO 26262 )، فإن تقنيات اختبار الصندوق الأبيض قادرة على تقييم المتطلبات غير المُنفذة أو المفقودة.

تتضمن تقنيات تصميم اختبار الصندوق الأبيض معايير تغطية التعليمات البرمجية التالية :

ملخص

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

المستويات

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

الإجراء الأساسي

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

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

المزايا

  1. إن معرفة شفرة المصدر مفيدة لإجراء اختبار شامل.
  2. يصبح تحسين الكود سهلاً مع الكشف عن نقاط الضعف غير الواضحة.
  3. يمنح ذلك المبرمج فرصة للتأمل الذاتي لأن المطورين يصفون بعناية أي تطبيق جديد.
  4. يوفر إمكانية تتبع الاختبارات من المصدر، مما يسمح برصد التغييرات المستقبلية التي تطرأ على المصدر بسهولة في الاختبارات المضافة أو المعدلة حديثًا. [ 3 ]
  5. سهل الأتمتة. [ 4 ]
  6. يُقدّم قواعد واضحة ومبنية على أسس هندسية لتحديد متى يجب إيقاف الاختبار. [ 5 ] [ 4 ]

العيوب

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

النظرة الحديثة

يُشير منظورٌ حديثٌ إلى أن التمييز بين اختبار الصندوق الأبيض واختبار الصندوق الأسود قد تلاشى وأصبح أقل أهمية. فبينما كان مصطلح "الصندوق الأبيض" يُشير في الأصل إلى استخدام شفرة المصدر، و"الصندوق الأسود" إلى استخدام المتطلبات، تُستمد الاختبارات الآن من وثائق متعددة بمستويات تجريد مختلفة. يكمن جوهر الأمر في أن الاختبارات تُصمم عادةً انطلاقًا من بنية مجردة، مثل فضاء الإدخال، أو الرسم البياني، أو المسندات المنطقية، والسؤال المطروح هو: ما هو مستوى التجريد الذي نستمد منه هذه البنية المجردة؟ [ 4 ] قد يكون ذلك شفرة المصدر، أو المتطلبات، أو أوصاف فضاء الإدخال، أو أحد عشرات أنواع نماذج التصميم. لذا، فإن التمييز بين "الصندوق الأبيض/الصندوق الأسود" أقل أهمية، والمصطلحات أقل ملاءمة.

القرصنة

في اختبار الاختراق ، يشير اختبار الصندوق الأبيض إلى أسلوب يمتلك فيه مخترق ذو خبرة (مختص بالاختراق الأخلاقي) معرفة كاملة بالنظام المستهدف. [ 6 ] يهدف اختبار الاختراق ذو الصندوق الأبيض إلى محاكاة موظف داخلي خبيث لديه معرفة بالنظام المستهدف، وربما بيانات اعتماد أساسية له. في هذا النوع من اختبارات الاختراق، تُمنح عادةً بيانات اعتماد إدارية لتحليل كيفية تأثير الهجمات على الحسابات ذات الصلاحيات العالية، أو تحديد أنواع هذه الهجمات. [ 7 ] يمكن إتاحة شفرة المصدر لاستخدامها كمرجع للمختبِر. عندما تكون الشفرة هدفًا بحد ذاتها، لا يُعد هذا اختبار اختراق فحسب، بل تدقيقًا أمنيًا لشفرة المصدر (أو مراجعة أمنية). [ 8 ]

انظر أيضاً

مراجع

  1. ستايسي نيلسون (يونيو 2003)، NASA/CR–2003-212806 عمليات اعتماد برامج الفضاء الجوي ذات الأهمية البالغة للسلامة والمهام (ملف PDF) ، مركز أبحاث أميس ، ص  25، [مسرد المصطلحات] اختبار الصندوق الأبيض: اختبار قائم على التصميم حيث يفحص المهندسون العمليات الداخلية للبرنامج
  2. 1 2 3 4 5 ويليامز، لوري . "اختبار الصندوق الأبيض" (ملف PDF) . الصفحات 60-61 ، 69. مؤرشف من الأصل (ملف PDF) في 3 مارس 2016. تم الاطلاع عليه في 13 فبراير 2013 . 
  3. بايندر، بوب (2000). اختبار الأنظمة الموجهة للكائنات . شركة أديسون-ويسلي للنشر. رقم ISBN 9780201809381.
  4. 1 2 3 أمان، بول؛ أوفوت، جيف (2008). مقدمة في اختبار البرمجيات . مطبعة جامعة كامبريدج. ISBN 978-0-521-88038-1.
  5. مايرز، جلينفورد (1979). فن اختبار البرمجيات . جون وايلي وأولاده. ISBN 9780471043287.
  6. "نموذج اختبار الاختراق" (ملف PDF) . المكتب الاتحادي لأمن المعلومات (BSI).
  7. باران، إيويلينا (20 فبراير 2023). "أنواع اختبار الاختراق" . شركة بليز لأمن المعلومات المحدودة . تم الاطلاع عليه بتاريخ 12 سبتمبر 2024 .
  8. سوليفان، جيمس. "ما هو تدقيق الكود: فهم غرضه وعمليته" . 17 Web Dev, LLC . تم الاسترجاع في 12 سبتمبر 2024 .