Code coverage

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.

דילוג לתוכן