Code coverage <-> Statement coverage
כיסוי משפטים (statement coverage) – זה אחוז המשפטים שהתבצעו בפועל על ידי סדרת בדיקות מתוך כלל משפטים בתוכנה. כלומר יש לחלק מספר המשפטים שהורצו במספר המשפטים שיש בקוד.
Code coverage is:
בדיקה עד כמה כוסו (בוצעו) חלקי התוכנה על-ידי בדיקות.
לדוגמה: אם נעשים BREAK-POINT בשורה 23 אז על-ידי הרצת קומפיילר אנו נבדוק את השורות …15, 16..22, 23 וכך הלאה ככל שנבדוק יותר שורות בקוד (סגמנטים בקוד) כך CODE COVERAGE יהיה גדול יותר.
נניח שבקוד יש 16-30 שורות ⇐ 15 שורות ונניח שבדקנו שורות 22-25: 4 שורות.
לכן Code coverage: 4/15*100=~26%
עוד דוגמה:
1 TEST SET
Test 1: x=2,y=3
ב-TEST 1 יוצא ש Z=8 לכן יש כיסוי של השורות 1-5
2 TEST SET
Test 2: x=0,y=25
ב-TEST 2 יוצא ש Z=50 לכן יש כיסוי של השורות 1-5
3 TEST SET
Test 3: x=47,y=1
ב-TEST 3 יוצא ש Z=49 לכן יש כיסוי של השורות 1-5
אם נבצע רק את 1 TEST SET אז בצענו רק 5 שורות מתוך 6 לכן 5/6*100=~83%
מקרה אחר:
4 TEST SET
Test 1 x=20,y=25
אז מספיק רק TEST SET 4 כדי לכסות כל השורות כלומר Z=70 לכן ביצענו כל 6 השורות ולכן זה 100% של כיסוי משפטים (statement coverage).
Decisions Coverage
דוגמה:
TEST SET 1
Test 1_1: x=20, y=15
אז Z=-10 ולכן יש כיסוי של כל 6 שורות שזה אומר שיש 100% כיסוי משפטים (statement coverage).
אבל בשביל שיהיה גם 100% כיסוי של החלטות (decisions coverage) יש להתחשב גם בהחלטה שיהיה Z גדול מ-0 לכן בואו נצייר control flow diagram:
לפי control flow diagram ניתן לראות ש Test 1 לא מכסה ב-100% כל כיסוי של החלטות (decisions coverage) ולכן אם נוסיף: Test 2: x=10, y=2 אז נקבל Z=6 ובכך נקבל 100% כיסוי של החלטות (decisions coverage).
לסיכום: אם ל-Decision coverage יש כיסוי של 100% אז גם ל- statement coverage יש כיסוי של 100%. אבל כיסוי של 100% statement coverage לא אומר שיש כיסוי 100% של Decision coverage.