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

ما هي تفاصيل 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
العبارات المحددة باللون الأصفر هي تلك التي تم تنفيذها وفقًا للسيناريو. عدد العبارات المنفذة = 5، إجمالي عدد العبارات = 7، لذا فإن تغطية العبارات = 5/7 = 71%.
السيناريو شنومكس: إذا كان أ = -3، ب = -9
العبارات المحددة باللون الأصفر هي تلك التي تم تنفيذها وفقًا للسيناريو. عدد العبارات المنفذة = 6، إجمالي عدد العبارات = 7، لذا فإن تغطية العبارات = 6/7 = 85%.
لكن بشكل عام، إذا نظرنا، نجد أن جميع العبارات مشمولة في كلا السيناريوهين. لذا يمكننا أن نستنتج أن التغطية الإجمالية للعبارات هي 100%.
ما الذي تغطيه تغطية البيان؟
- البيانات غير المستخدمة
- في ذمة الله تعالى Code
- الفروع غير المستخدمة
- البيانات المفقودة
اختبار تغطية القرار
تغطية القرار هي تقنية اختبار الصندوق الأبيض التي تُبلغ عن النتائج الصحيحة أو الخاطئة لكل تعبير منطقي في شفرة المصدر. يهدف اختبار تغطية القرار إلى تغطية جميع أجزاء شفرة المصدر المتاحة والتحقق من صحتها، وذلك من خلال فحص كل فرع من فروع كل نقطة قرار محتملة والتأكد من تنفيذه مرة واحدة على الأقل.
في هذا النوع من التغطية، قد تصبح التعبيرات معقدة، مما يجعل تحقيق تغطية بنسبة 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 لا يحدد مستوى التغطية مدى جودة تغطيتك لمنطقك. |






