软件测试hw3

printPrime()代码:

    public static void printPrimes (int n)

    {

        int curPrime; // Value currently considered for primeness

        int numPrimes; // Number of primes found so far.

        boolean isPrime; // Is curPrime prime?

        int [] primes = new int [MAXPRIMES]; // The list of prime numbers.

 

        // Initialize 2 into the list of primes.

        primes [0] = 2;

        numPrimes = 1;

        curPrime = 2;

        while (numPrimes < n)

        {

            curPrime++; // next number to consider ...

            isPrime = true;

            for (int i = 0; i <= numPrimes-1; i++)

            { // for each previous prime.

                if (curPrime%primes[i]==0)

                { // Found a divisor, curPrime is not prime.

                    isPrime = false;

                    break; // out of loop through primes.

                }

            }

            if (isPrime)

            { // save it!

                primes[numPrimes] = curPrime;

                numPrimes++;

            }

        } // End while

       

        // Print all the primes out.

        for (int i = 0; i <= numPrimes-1; i++)

        {

            System.out.println ("Prime: " + primes[i]);

        }

    } // end printPrimes

 

a.

 

b.

第一种情况if test case (n = 5) finds the error first, if should execute the error code first. So if in node 7

isPrime = false became isPrime = true, t2(n=5) will find it first.

第二种情况MAXPRIMES = 4, array out of bounds

 

c.

n=1

 

d.

Node Coverage

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

Edge Coverage

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

Prime Path Coverage

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]}

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

package printPrime;
 
public class printPrimePro {
 
    private static final int MAXPRIMES = 1000;
 
     
    public static String printPrimes (int n) 
    { 
        int curPrime; // Value currently considered for primeness 
        int numPrimes; // Number of primes found so far. 
        boolean isPrime; // Is curPrime prime? 
        String str = "";
        int [] primes = new int [MAXPRIMES]; // The list of prime numbers. 
 
        // Initialize 2 into the list of primes. 
        primes [0] = 2; 
        numPrimes = 1; 
        curPrime = 2; 
        
        while (numPrimes < n) 
        { 
            curPrime++; // next number to consider ... 
            isPrime = true; 
            for (int i = 0; i <= numPrimes-1; i++) 
            { // for each previous prime. 
                if (curPrime%primes[i]==0) 
                { // Found a divisor, curPrime is not prime. 
                    isPrime = false; 
                    break; // out of loop through primes. 
                } 
            } 
            if (isPrime) 
            { // save it! 
                primes[numPrimes] = curPrime; 
                numPrimes++; 
            } 
        } // End while 
        // Print all the primes out. 
        for (int i = 0; i <= numPrimes-1; i++) 
        { 
            str += primes[i]+" ";
        }
        return str;
    } // end printPrimes
}

 

测试代码:

package printPrime;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
 
 public class printPrimeTest {
     public printPrimePro testPrime = new printPrimePro();
     @Before
     public void setUp() throws Exception {    
     }
     @Test
     public void testPrintPrimes() {
         assertEquals("2 3 5 ", testPrime.printPrimes(3));
     }
 }

 

截图如下:

 

 

覆盖率为100%

posted @ 2017-03-15 00:04  谭智元  阅读(222)  评论(0编辑  收藏  举报