Software testing hw3 -- printPrimes()

7. Use the following method printPrimes () for questions a-d

 1 /******************************************************* 
 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)Draw a flow chart for the printPrimes () method.

 

(b)Consider test cases t1 = (n = 3) and t2 = (n = 5). Even if these test cases tour the same main path in the printPrimes () method, they do not necessarily find the same error. Design a simple mistake, making t2 easier to find than t1.

      Since int [] primes = new int [MAXPRIMES]; defines an array of size MAXPRIMES, so if MAXPRIMES = 4, then t2 is easier to find the array bounds problems than t1.

(c) For printPrimes (), find a test case, so that the corresponding test path to connect to the while statement to the edge of the statement, rather than through the while loop body.

      We through numPrimes <n this judgment can get the test case, because the initial condition numPrimes = 1, so we take n = 1 to meet the requirements.

(d)For the graph of printPrimes (), list the test requirements for each node coverage, edge coverage, and prime path coverage.

      1° Node Coverage

      TR = {1,2,3,4,5,6,7,8,9,10,11,12,13}

      Test Paths:[1,2,3,4,5,6,4,5,7,8,9,2,10,11,12,11,13]

      2° Edge Coverage

      TR = {(1,2),(2,3),(2,10),(3,4),(4,5),(4,8),(5,6),(5,7),(6,4),(7,8),(8,2),(8,9),(9,2),(10,11),(11,12),(11,13),(12,11)}

      Test Paths:[1,2,3,4,5,6,4,5,7,8,9,2,10,11,12,11,13],[1,2,3,4,8,2,10,11,13]

      3° Prime Path Coverage

      Len0

     [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13]!

      Len1

      [1,2],[2,3],[2,10],[3,4],[4,5],[4,8],[5,6],[5,7],[6,4],[7,8],[8,2],[8,9],[9,2],[10,11],[11,12],[11,13]!,[12,11]

      Len2

  [1,2,3],[1,2,10],[2,3,4],[2,10,11],[3,4,5],[3,4,8],[4,5,6],[4,5,7],[4,8,2],[4,8,9],[5,6,4],[5,7,8],[6,4,5],[6,4,8],[7,8,2],[7,8,9],[8,2,3],[8,2,10],[8,9,2],[9,2,3],[9,2,10],[10,11,12],[10,11,13]!,[11,12,11]*,[12,11,12]*

      Len3

  [1,2,3,4],[1,2,10,11],[2,3,4,8],[2,3,4,5],[2,10,11,12],[2,10,11,13]!,[3,4,5,6],[3,4,5,7],[3,4,8,2],[3,4,8,9],[4,5,6,4]*,[4,5,7,8],[4,8,9,2],[4,8,2,3],[4,8,2,10],[5,6,4,5]*,[5,6,4,8],[5,7,8,9],[5,7,8,2],[6,4,5,6]*,[6,4,5,7],[6,4,8,2],[6,4,8,9],[7,8,2,3],[7,8,2,10],[7,8,9,2],[8,2,3,4],[8,2,10,11],[8,9,2,3],[8,9,2,10],[9,2,3,4],[9,2,10,11]

      Len4

  [1,2,3,4,5],[1,2,3,4,8],[1,2,10,11,12],[1,2,10,11,13]!,[2,3,4,5,6],[2,3,4,5,7],[2,3,4,8,2]*,[2,3,4,8,9],[3,4,5,7,8],[3,4,8,2,3]*,[3,4,8,2,10],[3,4,8,9,2],[4,5,7,8,2],[4,5,7,8,9],[4,8,2,3,4]*,[4,8,2,10,11],[4,8,9,2,3],[4,8,9,2,10],[5,6,4,8,2],[5,6,4,8,9],[5,7,8,2,3],[5,7,8,2,10],[5,7,8,9,2],[6,4,5,7,8],[6,4,8,9,2],[6,4,8,2,3],[6,4,8,2,10],[7,8,2,3,4],[7,8,2,10,11],[7,8,9,2,3],[7,8,9,2,10],[8,2,3,4,5],[8,2,3,4,8]*,[8,2,10,11,12],[8,2,10,11,13]!,[8,9,2,3,4],[8,9,2,10,11],[9,2,3,4,5],[9,2,3,4,8],[9,2,10,11,12],[9,2,10,11,13]!

      Len5

  [1,2,3,4,5,6],[1,2,3,4,5,7],[1,2,3,4,8,9],[2,3,4,5,7,8],[2,3,4,8,9,2]*,[3,4,5,7,8,9],[3,4,5,7,8,2],[3,4,8,9,2,3]*,[3,4,8,9,2,10],[3,4,8,2,10,11],[4,5,7,8,2,3],[4,5,7,8,2,10],[4,5,7,8,9,2],[4,8,9,2,3,4]*,[4,8,9,2,10,11],[4,8,2,10,11,12],[4,8,2,10,11,13]!,[5,6,4,8,9,2],[5,6,4,8,2,3],[5,6,4,8,2,10],[5,7,8,2,3,4],[5,7,8,2,10,11],[5,7,8,9,2,3],[5,7,8,9,2,10],[6,4,5,7,8,2],[6,4,5,7,8,9],[6,4,8,2,10,11],[6,4,8,9,2,3],[6,4,8,9,2,10],[7,8,9,2,3,4],[7,8,9,2,10,11],[7,8,2,3,4,5],[7,8,2,10,11,12],[7,8,2,10,11,13]!,[7,8,9,2,3,4],[7,8,9,2,10,11],[8,2,3,4,5,6],[8,2,3,4,5,7],[8,9,2,3,4,5],[8,9,2,3,4,8]*,[8,9,2,10,11,12],[8,9,2,10,11,13]!,[9,2,3,4,5,6],[9,2,3,4,5,7],[9,2,3,4,8,9]*

      Len6

  [1,2,3,4,5,7,8],[2,3,4,5,7,8,2]*,[2,3,4,5,7,8,9],[3,4,5,7,8,2,3]*,[3,4,5,7,8,2,10],[3,4,5,7,8,9,2],[4,5,7,8,9,2,3],[4,5,7,8,9,2,10],[4,5,7,8,2,3,4]*,[4,5,7,8,2,10,11],[5,6,4,8,2,10,11],[5,6,4,8,9,2,3],[5,7,8,9,2,3,4],[5,7,8,9,2,10,11],[5,7,8,2,3,4,5]*,[5,7,8,2,10,11,12],[5,7,8,2,10,11,13]!,[6,4,5,7,8,2,3],[6,4,5,7,8,2,10],[6,4,5,7,8,9,2],[6,4,8,9,2,10,11],[6,4,8,2,10,11,12],[6,4,8,2,10,11,13]!,[7,8,2,3,4,5,6],[7,8,2,3,4,5,7]*,[7,8,9,2,3,4,5][7,8,9,2,10,11,12],[7,8,9,2,10,11,13]!,[7,8,9,2,3,4,5],[8,2,3,4,5,7,8]*,[8,9,2,3,4,5,6],[8,9,2,3,4,5,7],[9,2,3,4,5,7,8]

      Len7

  [1,2,3,4,5,7,8,9],[2,3,4,5,7,8,9,2]*,[3,4,5,7,8,9,2,10],[3,4,5,7,8,2,10,11],[4,5,7,8,2,10,11,12],[4,5,7,8,2,10,11,13]!,[4,5,7,8,9,2,3,4]*,[4,5,7,8,9,2,10,11],[5,6,4,8,2,10,11,12],[5,6,4,8,2,10,11,13]!,[5,6,4,8,9,2,10,11],[5,7,8,9,2,3,4,5]*,[5,7,8,9,2,10,11,12],[5,7,8,9,2,10,11,13]!,[6,4,5,7,8,2,10,11],[6,4,5,7,8,9,2,3],[6,4,5,7,8,9,2,10],[6,4,8,9,2,10,11,12],[6,4,8,9,2,10,11,13]!,[7,8,9,2,3,4,5,6],[7,8,9,2,3,4,5,7]*,[8,9,2,3,4,5,7,8]*.[9,2,3,4,5,7,8,9]*

      Len8

  [3,4,5,7,8,2,10,11,12],[3,4,5,7,8,2,10,11,13]!,[3,4,5,7,8,9,2,10,11],[4,5,7,8,9,2,10,11,12],[4,5,7,8,9,2,10,11,13]!,[5,6,4,8,9,2,10,11,12],[5,6,4,8,9,2,10,11,13]!,[6,4,5,7,8,2,10,11,12],[6,4,5,7,8,2,10,11,13]!,[6,4,5,7,8,9,2,10,11]

      Len9

  [3,4,5,7,8,9,2,10,11,12],[3,4,5,7,8,9,2,10,11,13]!,[6,4,5,7,8,9,2,10,11,12],[6,4,5,7,8,9,2,10,11,13]!

      Note: The red mark is the primary path test requirement.

So, the TR = {[11,12,11],[12,11,12],[4,5,6,4],[5,6,4,5],[6,4,5,6],[1,2,10,11,12],[1,2,10,11,13], [2,3,4,8,2], [3,4,8,2,3], [4,8,2,3,4] ,[8,2,3,4,8],[1,2,3,4,5,6],[1,2,3,4,8,9],[2,3,4,8,9,2],[3,4,8,9,2,3], [4,8,9,2,3,4], [5,6,4,8,2,3],[8,9,2,3,4,8],[9,2,3,4,8,9],[2,3,4,5,7,8,2],[3,4,5,7,8,2,3],[4,5,7,8,2,3,4],[5,6,4,8,9,2,3],[5,7,8,2,3,4,5],[6,4,5,7,8,2,3],[7,8,2,3,4,5,6],[7,8,2,3,4,5,7],[8,2,3,4,5,7,8],[1,2,3,4,5,7,8,9],[2,3,4,5,7,8,9,2], [4,5,7,8,9,2,3,4],[5,6,4,8,2,10,11,12],[5,6,4,8,2,10,11,13],[5,7,8,9,2,3,4,5],[6,4,5,7,8,9,2,3],[7,8,9,2,3,4,5,6],[7,8,9,2,3,4,5,7],[8,9,2,3,4,5,7,8].[9,2,3,4,5,7,8,9],[3,4,5,7,8,2,10,11,12],[3,4,5,7,8,2,10,11,13],[5,6,4,8,9,2,10,11,12],[5,6,4,8,9,2,10,11,13],[6,4,5,7,8,2,10,11,12],[6,4,5,7,8,2,10,11,13],[3,4,5,7,8,9,2,10,11,12],[3,4,5,7,8,9,2,10,11,13],[6,4,5,7,8,9,2,10,11,12],[6,4,5,7,8,9,2,10,11,13]

②基于JunitEclemmajacoco)实现一个主路径覆盖的测试。

       Since the output of the original code is not suitable for testing, we change the output to a string type.The following is the modified code

 1 package stHW3;
 2 public class printPrime {
 3     public String printPrimes (int n) 
 4     { 
 5         final int MAXPRIMES=100;
 6         int curPrime; // Value currently considered for primeness 
 7         int numPrimes; // Number of primes found so far. 
 8         boolean isPrime; // Is curPrime prime? 
 9         String str = "";
10         int [] primes = new int [MAXPRIMES]; // The list of prime numbers.     
11         // Initialize 2 into the list of primes. 
12         primes [0] = 2; 
13         numPrimes = 1; 
14         curPrime = 2; 
15         while (numPrimes < n) 
16         { 
17             curPrime++; // next number to consider ... 
18             isPrime = true; 
19             for (int i = 0; i <= numPrimes-1; i++) 
20             { // for each previous prime. 
21                 if (curPrime%primes[i]==0) 
22                 { // Found a divisor, curPrime is not prime. 
23                     isPrime = false; 
24                     break; // out of loop through primes. 
25                 } 
26             } 
27             if (isPrime) 
28             { // save it! 
29                 primes[numPrimes] = curPrime; 
30                 numPrimes++; 
31             } 
32         } // End while   
33         // Print all the primes out. 
34         for (int i = 0; i <= numPrimes-1; i++) 
35         { 
36             str += primes[i]+" "; 
37         }
38         return str;
39     } // end printPrimes
40 }

The test code of the prime path coverage is as follows:

 1 package stHW3;
 2 
 3 import static org.junit.Assert.*;
 4 import static org.hamcrest.Matchers.*;
 5 import org.junit.After;
 6 import org.junit.Before;
 7 import org.junit.Test;
 8 
 9 public class printPrimeTest {
10     public printPrime tPrime = new printPrime();
11     @Before
12     public void setUp() throws Exception {    
13     }
14     @Test
15     public void testPrintPrimes() {
16         assertEquals("2 3 5 ", tPrime.printPrimes(3));
17         System.out.println(tPrime.printPrimes(3));
18     }
19 }

From the cover map, we can see that the main path coverage is achieved.

 

转载于:https://www.cnblogs.com/zjwjerome/p/6519961.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值