ما هو اختبار الحلقة؟ المنهجية، مثال

⚡ ملخص ذكي

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

  • 🔘 فريف: تقنية هيكل التحكم ذات الصندوق الأبيض تهدف إلى صحة الحلقة، وليس إلى الشاشات.
  • 🔁 أربع فئات: تتطلب الحلقات البسيطة والمتداخلة والمتسلسلة وغير المنظمة استراتيجية خاصة بها.
  • 📍 ثلاث نقاط تفتيش: الدخول إلى الحلقة، والسلوك أثناء التنفيذ، وشرط الخروج.
  • 🧪 تمريرات حدودية: صفر، واحد، اثنان، عدد نموذجي، ثم تكرارات b-1، b و b+1.
  • 🪜 ترتيب متداخل: ابدأ من الحلقة الداخلية، واحرص على إبقاء الحلقات الخارجية عند الحد الأدنى، ثم اعمل للخارج.
  • 🐞 العيوب التي تم العثور عليها: حدود الخطأ بمقدار واحد، عدادات غير مهيأة، حلقات لا نهائية، واختناقات في السعة.
  • ⚠️ على سبيل الحصر: تكمن أخطاء الحلقات في التعليمات البرمجية منخفضة المستوى، ونادراً ما تكون خفية بمجرد الوصول إليها.

منهجية اختبار الحلقات، وأنواع الحلقات، وحالات الاختبار النموذجية

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

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

اختبار الحلقة هو أ اختبار الصندوق الأبيض تُطبَّق هذه التقنية من قِبَل شخصٍ قادرٍ على قراءة شفرة المصدر وفهم شرط الحلقة، والعداد، ومسار الخروج. لا يعتمد المُختبِر على تخمين السلوك من واجهة المستخدم؛ فالحلقة نفسها هي الكائن قيد الاختبار.

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

اختبار الحلقة يظهر كفرع من اختبار بنية التحكم

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

قبل اختيار استراتيجية، حدد أيًّا من فئات الحلقات الأربع التي تبحث عنها. ومن أمثلة أنواع الحلقات التي يتم اختبارها:

  • حلقة بسيطة — حلقة واحدة ذات مدخل واحد ومخرج واحد، مثل حلقة مستوية لـ, في حين or افعل اثناء بناء.
  • حلقة متداخلة — حلقة واحدة موضوعة داخل أخرى، بحيث تعمل الحلقة الداخلية حتى اكتمالها في كل دورة من الحلقة الخارجية.
  • حلقة متسلسلة — حلقتان أو أكثر تعملان واحدة تلو الأخرى بالتسلسل.
  • حلقة غير منظمة — مزيج غير مخطط له من الحلقات المتداخلة والمتسلسلة، وعادة ما يكون نتيجة للقفزات داخل أو خارج جسم الحلقة.

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

لماذا اختبار الحلقة؟

يتم إجراء اختبار الحلقة للأسباب التالية

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

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

كيفية إجراء اختبار الحلقة: المنهجية الكاملة

أثناء اختبار حلقة تكرارية، يجب فحصها على ثلاثة مستويات مختلفة:

  • عند الدخول إلى الحلقة
  • أثناء تنفيذها، و
  • عندما يتم ترك الحلقة

تتمثل استراتيجية الاختبار لجميع هذه الحلقات فيما يلي.

حلقة بسيطة

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

مخطط انسيابي بسيط ذو حلقة واحدة بنقطة دخول واحدة وشرط خروج واحد

يتم اختبار حلقة بسيطة بالطريقة التالية:

  1. تخطي الحلقة بأكملها
  2. قم بإجراء دورة واحدة عبر الحلقة
  3. قم بتمريرة واحدة عبر الحلقة
  4. الماركة a يمر عبر الحلقة حيث a < bهذا عدد تكرارات نموذجي متوسط ​​المدى
  5. الماركة b, b-1 و bيمر الرقم +1 عبر الحلقة حيث b يمثل الحد الأقصى لعدد مرات المرور المسموح بها عبر الحلقة.

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

حلقة متداخلة

تؤدي الحلقة المتداخلة إلى مضاعفة عدد تركيبات التكرار الممكنة، لذلك يتم اختبارها من الداخل إلى الخارج بدلاً من اختبارها دفعة واحدة.

مخطط انسيابي ذو حلقة متداخلة، حيث تكون الحلقة الداخلية محاطة بحلقة خارجية.

لإنشاء حلقة متداخلة، عليك اتباع الخطوات التالية.

  1. اضبط جميع الحلقات الأخرى على قيمتها الدنيا وابدأ من الحلقة الداخلية.
  2. بالنسبة للحلقة الأعمق، قم بإجراء اختبار حلقة بسيط واحتفظ بالحلقات الخارجية عند أدنى قيمة لمعلمة التكرار الخاصة بها
  3. قم بإجراء الاختبار للحلقة التالية واتجه للخارج
  4. استمر حتى يتم اختبار الحلقة الخارجية.

حلقات متسلسلة

تتواجد الحلقات المتسلسلة واحدة تلو الأخرى في نفس مسار التنفيذ، كما يوضح الرسم التخطيطي.

مخطط انسيابي لحلقات متسلسلة يوضح حلقتين يتم تنفيذهما بالتتابع

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

ومع ذلك، إذا تم استخدام عداد الحلقة لإحدى الحلقات كقيمة أولية للحلقة الأخرى، فإن الحلقتين لا تعتبران مستقلتين.

حلقات غير منظمة

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

مخطط انسيابي غير منظم لحلقة تحكم مع وصلة تحكمping داخل وخارج جسم الحلقة

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

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

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

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

حالة اختبار قيمة n تم تنفيذ التمريرات ما يثبته ذلك
TC01 0 0 (تم تخطي الحلقة) يتم تقييم شرط الخروج قبل تشغيل البرنامج، وتبقى النتيجة عند قيمتها الأولية 1.
TC02 1 1 تؤدي عملية تمرير واحدة إلى النتيجة الصحيحة ويزداد العداد مرة واحدة.
TC03 2 2 يحتفظ المُجمِّع بقيمة بين عمليتي مرور متتاليتين.
TC04 5 5 يُظهر العد المتوسط ​​النموذجي النتيجة المتوقعة وهي 120، مما يؤكد السلوك الطبيعي.
TC05 11 11 لا يزال المرور الذي يقل عن الحد الأقصى يكتمل بشكل طبيعي (b-1).
TC06 12 12 يتم قبول الحد الأقصى المعلن وتنتهي الحلقة (b).
TC07 13 رفض يتم رفض أي تمريرة تتجاوز الحد الأقصى بدلاً من السماح بتجاوز الحد المسموح به بصمت (b+ 1).

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

العيوب الشائعة التي تم اكتشافها من خلال اختبار الحلقة

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

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

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

اختبار الحلقة مقابل تقنيات اختبار بنية التحكم الأخرى

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

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

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

القيود في اختبار الحلقة

لهذه التقنية حدود حقيقية، ومعرفة هذه الحدود تمنع الإفراط في الاستثمار.

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

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

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

يقرأ النموذج شرط الحلقة ويقترح تلقائيًا عدد التكرارات الصفرية والواحدة والنموذجية والحدودية، بما في ذلك حالة تجاوز السعة. ويؤكد المراجع أن كل نتيجة متوقعة تتطابق مع المواصفات.

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

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

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

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

لا. يتم استيفاء تغطية الفروع بمجرد دخول حلقة والخروج منها مرة واحدة. يتطلب اختبار الحلقة أيضًا المرور المتجاوز وعدد الحدود، وهو ما لا تفرضه تغطية الفروع وحدها.

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

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