البرنامج التعليمي لتغطية الكود: اختبار الفرع والبيان والقرار

ما هي تغطية الكود؟

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

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

لماذا نستخدم اختبار تغطية الكود؟

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

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

طرق تغطية الكود

فيما يلي طرق تغطية التعليمات البرمجية الرئيسية

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

تغطية البيان

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

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

تغطية البيان

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

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

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

سيناريو لحساب تغطية البيان لكود المصدر المحدد. نحن هنا نتخذ سيناريوهين مختلفين للتحقق من النسبة المئوية لتغطية كشف الحساب لكل سيناريو.

كود المصدر:

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

تغطية البيان

العبارات المميزة باللون الأصفر هي تلك التي يتم تنفيذها وفقًا للسيناريو

عدد العبارات المنفذة = 5، إجمالي عدد العبارات = 7

تغطية البيان: 5/7 = 71%

تغطية البيان

وبالمثل سوف نرى السيناريو 2،

السيناريو شنومكس:

إذا كان أ = -3، ب = -9

تغطية البيان

العبارات المميزة باللون الأصفر هي تلك التي يتم تنفيذها وفقًا للسيناريو.

عدد العبارات المنفذة = 6

إجمالي عدد البيانات = 7

تغطية البيان

تغطية البيان: 6/7 = 85%

تغطية البيان

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

تغطية البيان

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

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

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

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

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

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

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

خذ بعين الاعتبار الكود التالي-

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

السيناريو شنومكس:

قيمة a هي 2

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

سيتم تنفيذ الكود المميز باللون الأصفر. هنا يتم تحديد نتيجة "لا" للقرار إذا كانت (a>5).

تغطية القرار = 50%

السيناريو شنومكس:

قيمة a هي 6

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

سيتم تنفيذ الكود المميز باللون الأصفر. هنا تكون نتيجة القرار "نعم" إذا تم تحديد (أ> 5).

تغطية القرار = 50%

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

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

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

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

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

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

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

لمعرفة تغطية الفروع، دعونا نفكر في نفس المثال المستخدم سابقًا

خذ بعين الاعتبار الكود التالي-

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

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

ستأخذ تغطية الفرع بعين الاعتبار الفرع غير المشروط أيضًا

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

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

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

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

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

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

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

لا توفر تغطية الحالة ضمانًا بشأن التغطية الكاملة للقرار.

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

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

على سبيل المثال:

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

بالنسبة للتعبير أعلاه، لدينا 4 مجموعات محتملة

  • TT
  • FF
  • TF
  • FT

ضع في اعتبارك المدخلات التالية

X = 3

Y = 4

(x الحقيقة تغطية الحالة ¼ = 25%
A = 3

B = 4

(أ>ب) خاطئة

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

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

أي نوع من تغطية التعليمات البرمجية للاختيار

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

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

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

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

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

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

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

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

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

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

ملخص

  • تغطية الكود هي مقياس يصف درجة اختبار الكود المصدري للبرنامج
  • يساعدك على قياس كفاءة تنفيذ الاختبار
  • خمس طرق لتغطية الرمز هي 1.) تغطية البيان 2.) تغطية الحالة 3) تغطية الفرع 4) Togglه التغطية 5) تغطية ولايات ميكرونيزيا الموحدة
  • تتضمن تغطية البيان تنفيذ كافة البيانات القابلة للتنفيذ في الكود المصدري مرة واحدة على الأقل
  • تشير تغطية القرار إلى النتائج الصحيحة أو الخاطئة لكل تعبير منطقي
  • في تغطية الفرع، يتم اختبار كل نتيجة من وحدة التعليمات البرمجية
  • سوف تكشف الشرطية كيفية تقييم المتغيرات أو التعبيرات الفرعية في العبارة الشرطية
  • إن تغطية آلة الحالة المحدودة هي بالتأكيد النوع الأكثر تعقيدًا من طرق تغطية التعليمات البرمجية
  • من أجل تحديد طريقة التغطية، يحتاج القائم بالاختبار إلى التحقق من تكلفة العقوبة المحتملة، والسمعة المفقودة، والبيع المفقود، وما إلى ذلك.
  • تخبرك تغطية الكود بمدى جودة استخدام الكود المصدري من خلال منصة الاختبار الخاصة بك بينما تقيس التغطية الوظيفية مدى جودة تغطية وظائف التصميم
  • Cobertura، JTest، Clover، Emma، Kalistick هي أدوات قليلة مهمة لتغطية التعليمات البرمجية
  • تسمح لك تغطية الكود بإنشاء حالات اختبار إضافية لزيادة التغطية
  • لا تساعدك "تغطية التعليمات البرمجية" في تحديد ما إذا كنا قد اختبرنا جميع القيم الممكنة لميزة ما

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