2017软件测试第三次作业

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

(a)  printPrimes() 控制流图

(b)考虑测试用例t1=(n=3)和t2=(n=5)。即使这些测试用例游历printPrimes()方法中相同的主路径,他们不一定找出相同的错误。设计一个简单的错误,使得t2比t1更容易发现。

答:将while(numPrimes<n)改成(while(numPrimes<4)使其越界。

 

(c)针对printPrimes(),找到一个测试用例,使用相同的测试路径访问连接while语句开始到for语句的边,而不能通过while循环体。

答:t3=(n=1);

 

(d)针对printPrimes()的图例举每个节点覆盖,边覆盖和主路径覆盖的测试需求。

答:

1:节点覆盖:TR={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}

2:边覆盖:TR={(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(5,7),(7,4),(7,8),(8,9),(7,9),(9,2),(9,15),(2,10),(10,11),(10,12),(11,13),(12,14),(13,14),(14,15)}

,

3:主路径覆盖:TR={[4,5,7,4],[5,7,4,5],[7,4,5,7],[4,5,6,7,4],

[5,6,7,4,5],[7,4,5,6,7],[6,7,4,5,6],[2,3,4,5,6,7,8,9,2],[2,3,4,5,6,7,9,2],[2,3,4,5,7,8,9,2],[2,3,4,5,7,9,2],[3,4,5,6,7,8,9,2,3],[3,4,5,6,7,9,2,3],[3,4,5,7,8,9,2,3],[3,4,5,7,9,2,3],[4,5,6,7,8,9,2,3,4],[4,5,6,7,9,2,3,4],

[4,5,7,8,9,2,3,4],[4,5,7,9,2,3,4],[5,6,7,8,9,2,3,4,5],[5,7,8,9,2,3,4,5],[5,6,7,9,2,3,4,5],[5,7,9,2,3,4,5],[6,7,8,9,2,3,4,5,6],[6,7,9,2,3,4,5,6],

[7,8,9,2,3,4,5,6,7],[7,9,2,3,4,5,6,7],[7,8,9,2,3,4,5,7],[7,9,2,3,4,5,7],

[8,9,2,3,4,5,6,7,8],[8,9,2,3,4,5,7,8],[9,2,3,4,5,6,7,8,9],[9,2,3,4,5,7,8,9],[9,2,3,4,5,7,9],[9,2,3,4,5,7,9][1,2,3,4,5,6,7,8,9,15],

[1,2,3,4,5,7,8,9,15],[1,2,3,4,5,6,7,9,15],[1,2,3,4,5,7,9,15],

[1,2,10,11,12,14,15],

[1,2,10,11,13,14,15],

 

基于Junit及Eclemma(jacoco)实现一个主路径覆盖的测试。(代码及测试结果)

package java1;
 
public class Switch {
    public static String printPrimes (int n) 
    { 
        int MAXPRIMES = 10;
        int curPrime; 
        int numPrimes; 
        boolean isPrime; 
        int [] primes = new int [MAXPRIMES]; 
       
        primes [0] = 2; 
        numPrimes = 1; 
        curPrime = 2; 
        while (numPrimes < n) 
        { 
            curPrime++;
            isPrime = true; 
            for (int i = 0; i <= numPrimes-1; i++) 
            { 
                if (curPrime%primes[i]==0) 
                { 
                    isPrime = false; 
                    break; 
                } 
            } 
            if (isPrime) 
            { 
                primes[numPrimes] = curPrime; 
                numPrimes++; 
            } 
        } 
        
        String s = null;
        for (int i = 0; i <= numPrimes-1; i++) 
        { 
            System.out.println ("Prime: " + primes[i]); 
            s += primes[i];
        } 
        return s;
    } 
    
}
package java1;

import static org.junit.Assert.*;


import org.junit.Before;
import org.junit.Test;
import java1.Switch;

import org.junit.Test;

public class SwitchTest {

	 public Switch prime;
	    
	    @Before
	    public void setUp(){
	        prime = new Switch();
	    }
	    
	    @Test
	    public void testCase(){
	        
	        assertEquals("null235711", prime.printPrimes(5));
	    }
}

  

posted on 2017-03-14 21:25  月影霜岚  阅读(235)  评论(0编辑  收藏  举报

导航