ST-Graph Coverage 2.3 第七题
/******************************************************* 2 * Finds and prints n prime integers 3 * Jeff Offutt, Spring 2003 4 ******************************************************/ 5 public static void printPrimes (int n) 6 { 7 int curPrime; // Value currently considered for primeness 8 int numPrimes; // Number of primes found so far. 9 boolean isPrime; // Is curPrime prime? 10 int [] primes = new int [MAXPRIMES]; // The list of prime numbers. 11 12 // Initialize 2 into the list of primes. 13 primes [0] = 2; 14 numPrimes = 1; 15 curPrime = 2; 16 while (numPrimes < n) 17 { 18 curPrime++; // next number to consider ... 19 isPrime = true; 20 for (int i = 0; i <= numPrimes-1; i++) 21 { // for each previous prime. 22 if (curPrime%primes[i]==0) 23 { // Found a divisor, curPrime is not prime. 24 isPrime = false; 25 break; // out of loop through primes. 26 } 27 } 28 if (isPrime) 29 { // save it! 30 primes[numPrimes] = curPrime; 31 numPrimes++; 32 } 33 } // End while 34 35 // Print all the primes out. 36 for (int i = 0; i <= numPrimes-1; i++) 37 { 38 System.out.println ("Prime: " + primes[i]); 39 } 40 } // end printPrimes
a).画出控制流图
(b) 设计一个测试用例t2比t1更有可能找到的错误
只要将数组primes的MAXPRIMES 设置为4, 那么t2 就会比t1 更能找到错误
(c) 不会进入while的内部语句块直接到for循环的测试用例:
测试用例:t3= (n = 1).
(d) TR for
Node coverage: TR= {Z, A, B, C, E, F, G, H, I, J, K, L}
Test path: [Z, A, B, C, D, B, C, H, E, F, G, A, I, J, K, J, ]
Edge coverage: TR= {(Z,A), (A,B), (B,C), (C,D), (C,H), (D,B), (B,E), (H,E), (E,F), (E,G), (F,G), (G,A), (A,I), (I,J), (J,K), (K,J), (J,L)}
Test path: [Z,A,B,C,D,B,C,H,E,G,A,B,C,D,B,E,F,G,A,I,J,K,J,L]
prime path coverage: TR={[Z,A,B,C,D]
[Z,A,B,C,H,E,G]
[Z,A,B,C,H,E,F,G]
[Z,A,B,E,G]
[Z,A,B,E,F,G]
[Z,A,I,J,K]
[Z,A,I,J,L]
[J,K,J]
[K,J,K]
[K,J,L]
[B,C,D,B]
[D,B,C,D]
[A,B,E,G,A]
[A,B,C,H,E,G,A]
[A,B,C,H,E,F,G,A]
[A,B,E,F,G,A]
[G,A,B,E,G]
[G,A,B,C,H,E,G]
[G,A,B,C,H,E,F,G]
[G,A,B,E,F,G]
[D,B,E,G]
[D,B,E,F,G]
[D,B,C,H,E,G]
[D,B,C,H,E,F,G]
[G,A,I,J,L]
[G,A,I,J,K]}
2.基于Junit及Eclemma(jacoco)实现一个主路径覆盖的测试。
采用软件测试Lab1(判断三角形的函数)的测试用例,如下测试用例可以满足主路径覆盖。
{3,4,7,"Not Triangle"};
{5,5,5,"equilateral"};
{7,4,4,"Not Triangle"};
{2,3,4,"isosceles"}.
这五个测试用例满足了主路径覆盖