Code أداة التغطية: اختبار العبارات والفروع والقرارات

⚡ ملخص ذكي

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

  • 🎯 فريف: Code يحدد التغطية مقدار الكود المصدري الذي تنفذه اختباراتك فعليًا.
  • 📊 الأساليب: توجد خمس طرق - تغطية العبارة، والقرار، والفرع، والشرط، وآلة الحالة المحدودة.
  • 🧩 بيان مقابل فرع: تتحقق تغطية البيان من الخطوط، بينما تتحقق تغطية الفرع من كل نتيجة قرار.
  • 🇧🇷 Code مقابل الوظيفي: Code تم تطبيق إجراءات التغطية على الكود؛ وتم تغطية المتطلبات من خلال إجراءات التغطية الوظيفية.
  • 🛠️ الأدوات: Cobertura, OpenCloverتقوم برامج EMMA و Sonar بأتمتة قياس التغطية.
  • 🤖 مساعدة الذكاء الاصطناعي: تقوم أدوات الذكاء الاصطناعي بإنشاء الاختبارات والكشف عن ثغرات التغطية غير المختبرة وعالية المخاطر تلقائيًا.

Code شرح التغطية

ما هي تفاصيل Code تغطية؟

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

في معظم الحالات، ي��وم نظام تغطية التعليمات البرمجية بجمع معلومات حول البرنامج قيد التشغيل. ثم يدمج هذه المعلومات مع معلومات التعليمات البرمجية المصدرية لإنشاء تقرير حول تغطية التعليمات البرمجية لمجموعة الاختبارات.

لماذا الاستخدام Code اختبار التغطية؟

فيما يلي بعض الأسباب الرئيسية لاستخدام تغطية التعليمات البرمجية:

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

Code أساليب التغطية

فيما يلي أهم طرق تغطية التعليمات البرمجية:

  • تغطية البيان
  • تغطية القرار
  • تغطية الفروع
  • Togglه التغطية
  • تغطية ولايات ميكرونيزيا الموحدة

تغطية البيان

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

تُستخدم تغطية العبارات لاستخلاص السيناريوهات بناءً على بنية الكود قيد الاختبار.

تغطية البيان

في اختبار الصندوق الأبيض، يركز المختبِر على كيفية عمل البرنامج. بعبارة أخرى، يركز المختبِر على آلية عمل الكود المصدري الداخلية فيما يتعلق بمخططات تدفق التحكم أو مخططات التدفق.

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

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

مصدر Code:

Prints (int a, int b) {                       ------------  Printsum is a function
    int result = a + b;
    If (result > 0)
        Print ("Positive", result)
    Else
        Print ("Negative", result)
    }                                        -----------   End of the source code

السيناريو شنومكس: إذا كان أ = 3، ب = 9

سيناريو تغطية البيان 1

العبارات المحددة باللون الأصفر هي تلك التي تم تنفيذها وفقًا للسيناريو. عدد العبارات المنفذة = 5، إجمالي عدد العبارات = 7، لذا فإن تغطية العبارات = 5/7 = 71%.

السيناريو شنومكس: إذا كان أ = -3، ب = -9

سيناريو تغطية البيان 2

العبارات المحددة باللون الأصفر هي تلك التي تم تنفيذها وفقًا للسيناريو. عدد العبارات المنفذة = 6، إجمالي عدد العبارات = 7، لذا فإن تغطية العبارات = 6/7 = 85%.

لكن بشكل عام، إذا نظرنا، نجد أن جميع العبارات مشمولة في كلا السيناريوهين. لذا يمكننا أن نستنتج أن التغطية الإجمالية للعبارات هي 100%.

ما الذي تغطيه تغطية البيان؟

  1. البيانات غير المستخدمة
  2. في ذمة الله تعالى Code
  3. الفروع غير المستخدمة
  4. البيانات المفقودة

اختبار تغطية القرار

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

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

اختبار تغطية القرار

مثال على تغطية القرار

ضع في اعتبارك الكود التالي:

Demo(int a) {
    If (a > 5)
        a = a * 3
    Print (a)
    }

السيناريو شنومكس: قيمة a هي 2. يتم التحقق من نتيجة "لا" للقرار إذا كانت (a>5)، لذا فإن تغطية القرار = 50٪.

السيناريو شنومكس: قيمة a هي 6. يتم التحقق من نتيجة "نعم" للقرار إذا (a>5)، لذا فإن تغطية القرار = 50٪.

حالة الاختبار قيمة أ الناتج تغطية القرار
1 2 2 50%
2 6 18 50%

اختبار تغطية الفروع

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

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

صيغة حساب تغطية الفرع:

صيغة تغطية الفروع

مثال على تغطية الفرع

لفهم تغطية الفروع، استخدم المثال نفسه المستخدم سابقًا. ستأخذ تغطية الفروع الفرع غير المشروط في الاعتبار أيضًا.

حالة الاختبار قيمة أ الناتج تغطية القرار تغطية الفروع
1 2 2 50% 33%
2 6 18 50% 67%

مميزات تغطية الفروع:

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

اختبار تغطية الحالة

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

على سبيل المثال، إذا احتوى تعبير ما على عمليات منطقية مثل AND أو OR أو XOR، فهذا يشير إلى إجمالي الاحتمالات. تغطية الشروط لا تضمن تغطية القرار بالكامل.

صيغة حساب تغطية الحالة:

صيغة تغطية الحالة

بالنسبة لتعبير يحتوي على مُعاملين، توجد أربعة احتمالات: TT، FF، TF، وFT. لنفترض المدخل X=3، Y=4 (x ب) خطأ، مما يعطي تغطية شرطية بنسبة 1/4 = 25٪.

تغطية آلة الدولة المحدودة

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

أي نوع من Code خيارات التغطية المتاحة

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

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

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

Code التغطية مقابل التغطية الوظيفية

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

Code أدوات التغطية

فيما يلي قائمة بأدوات تغطية التعليمات البرمجية المهمة:

اسم الأداة الوصف
Cobertura أداة مفتوحة المصدر لتغطية الكود. تقيس هذه الأداة تغطية الاختبار من خلال تجهيز قاعدة الكود وتحليل أسطر الكود التي يتم تنفيذها وتلك التي لا يتم تنفيذها عن�� تشغيل مجموعة الاختبارات.
نفل البرسيم (OpenCloverكما أنه يقلل من وقت الاختبار عن طريق تشغيل الاختبارات التي تغطي كود التطبيق الذي تم تعديله منذ الإصدار السابق فقط.
شريك التطوير يمكّن DevPartner المطورين من التحليل Java يُقيّم الكود جودة الكود وتعقيده.
إيما يدعم برنامج EMMA تغطية الفئات والأساليب والأسطر والكتل الأساسية، ويتم تجميعها على مستوى ملف المصدر والفئة والأسلوب.
كاليستيك Kalistick هو تطبيق تابع لجهة خارجية يقوم بتحليل الكود من وجهات نظر مختلفة.
كوفيو و كوانت أداة لتغطية التعليمات البرمجية تتضمن المقاييس، وإنشاء كائنات وهمية، وقابلية اختبار التعليمات البرمجية، وتغطية المسار والفروع، والمزيد.
بولس ل C++ BullseyeCoverage هي أداة لتغطية التعليمات البرمجية لـ C++ و C.
السونار سونار هي أداة مفتوحة المصدر لتغطية التعليمات البرمجية تساعدك على إدارة جودة التعليمات البرمجية.

مزايا وعيوب الاستخدام Code تغطية

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

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

تستهدف العديد من الفرق نسبة 70 إلى 80% كهدف عملي. أما الوصول إلى 100% فنادراً ما يكون مجدياً اقتصادياً. لذا، ركّز على تغطية المنطق الحرج عالي المخاطر بدلاً من السعي وراء نسبة واحدة في جميع أجزاء قاعدة البيانات.

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

Code يقيس نطاق التغطية مقدار تنفيذ التعليمات البرمجية المصدرية أثناء الاختبار. أما نطاق تغطية الاختبار فهو أوسع. tracكيف تعالج الاختبارات المتطلبات والميزات والمخاطر؟ Code تُعد التغطية أحد المدخلات في التغطية الإجمالية للاختبار.

لا. يمكنك الوصول إلى تغطية كاملة للعبارات مع ترك بعض الفروع دون اختبار، مثل مسار else مفقود. تغطية الفروع (القرارات) أقوى لأنها تشمل تغطية العبارات وتختبر جميع النتائج.

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

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

OpenClover يقيس تغطية العبارات والفروع والأساليب ويجمع أكثر من 20 مقياسًا. Coberturaإيما، و JaCoCo توجد خيارات مجانية أخرى شائعة الاستخدام لـ Java المشاريع.

يتطلب نظام التغطية المعدلة للشروط/القرارات أن يؤثر كل شرط في القرار بشكل مستقل على النتيجة. وهو أكثر صرامة من تغطية الفروع، ويُشترط تطبيقه على البرامج الحساسة للسلامة، مثل إلكترونيات الطيران، بموجب معيار DO-178C.

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