软件测试——第三次作业

printPrime()代码:

复制代码
/******************************************************* 
     * Finds and prints n prime integers 
     * Jeff Offutt, Spring 2003 
     ******************************************************/ 
    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)control flow graph

b)

first condition:   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.

second condition:  MAXPRIMES = 4, array out of bounds

c)

n=1

d)

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]

      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]

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

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

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

 

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

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

if we want to test the printPrime(), we shoule use method assertEquals(), so I changed the  return type from

void to String, here is the changed text.

复制代码
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  }
复制代码

 

test code

复制代码
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)); } }
复制代码

the coverage is 100%!

 

转载于:https://www.cnblogs.com/jinteng/p/8647965.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值