CSC 307 Lecture Notes Week 10
Introduction to Code Coverage
public static int f(int i, int j) { int k; if (i > j) { i++; j++; } k = g(i,j); if ((k > 0) && (i < 100)) { i++; j++; } else { i++; } return i+j+k; } static int g(int i, int j) { return i-j+1; }
k > 0 | i < 100 | (k > 0) && (i < 100) | i | j | Remarks |
0 | 0 | 0 | 1 | 2 | i < j means k <= 0 |
0 | 1 | 0 | 100 | 101 | i < j means k <= 0 |
1 | 0 | 0 | 100 | 100 | i >= j mean k > 0 |
1 | 1 | 1 | 2 | 1 | i >= j mean k > 0 |
toreturn i+j+k;
return i+j-k;
toassertEquals(-2, ce.f(-2,-1));
assertEquals(-2, ce.f(2,-1));
toassertEquals(-2, ce.f(2,-1));
assertEquals(-2, ce.f(-2,1));
"Test coverage and post-verification defects: A multiple case study"
by Audris Mockus, Nachiappan Nagappan, Trung T. Dinh-Trong,
Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement,
October 2009