迈斯云服java_HomeWork3

Homework3

7.Using the following methodprintPrimes()for questions a-d below

/*******************************************************

* 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)Draw the control flow graph for theprintPrimes()method.

Answer:

d75b66a5f20ae0a9fc4ccb2d5a971bf0.png

(b) Consider test cases t1=(n=3) and t2=(n=5). Although these tour the same prime paths in ptinrPrimes(), they do not necessarily find the same faults. Design a simple fault that t2 would be more likely to discover than t1 would.

Answer:

当MAXPRIMES = 3 、4时, t2=(n=5) 会溢出 ,t1=(n=3) 不会溢出。

(c) For printPrimes(), find a test case such that the corresponding test path visits the edge that connects the beginning of thewhilestatement to theforstatementwithtoutgoing through the body of the while loop.

Answer:

当n=1的时候,测试用例会通过边对(2,12)。

(d) Enumerate the test requirements for node coverage, edge coverage, amd prime path coverage for the graph fpr printPrime().

Answer:

1)     Node Coverage

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

2)     Edge Coverage

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

(9,10), (9,11), (10,11), (11,2), (12,13), (13,14), (13,16), (14,15), (15,13)};

3)     Prime Path Coverage

TR = {[1,2,3,4,5,6,7], [1,2,3,4,5,6,8,9,10,11], [1,2,3,4,5,6,8,9,11], [1,2,3,4,5,9,10,11],

[1,2,12,13,14,15], [1,2,12,13,16],

[2,3,4,5,6,8,9,10,11,2], [3,4,5,6,8,9,10,11,2,3], [4,5,6,8,9,10,11,2,3,4], [5,6,8,9,10,11,2,3,4,5],

[6,8,9,10,11,2,3,4,5,6], [8,9,10,11,2,3,4,5,6,8], [9,10,11,2,3,4,5,6,8,9], [10,11,2,3,4,5,6,8,9,10],

[11,2,3,4,5,6,8,9,10,11],

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

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

[2,3,4,5,9,10,11,2], [3,4,5,9,10,11,2,3], [4,5,9,10,11,2,3,4], [5,9,10,11,2,3,4,5],

[9,10,11,2,3,4,5,9], [10,11,2,3,4,5,9,10], [11,2,3,4,5,9,10,11],

[2,3,4,5,9,11,2], [3,4,5,9,11,2,3], [4,5,9,11,2,3,4], [5,9,11,2,3,4,5], [9,11,2,3,4,5,9],

[11,2,3,4,5,9,11],

[13,14,15,13], [14,15,13,14], [15,13,14,15],

[5,6,7,5], [6,7,5,6], [7,5,6,7],

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

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

[3,4,5,9,11,2,12,13,14,15], [3,4,5,9,10,11,2,12,13,14,15], [3,4,5,6,8,9,11,2,12,13,14,15],

[3,4,5,6,8,9,10,11,2,12,13,14,15],

[6,7,5,9,11,2,3,4], [6,7,5,9,10,11,2,3,4], [6,7,5,9,11,2,12,13,14,15], [6,7,5,9,10,11,2,12,13,14,15],

[6,7,5,9,11,2,12,13,16], [6,7,5,9,10,11,2,12,13,16],

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

[7,5,6,8,9,10,11,2,12,13,14,15], [7,5,6,8,9,11,2,12,13,16], [7,5,6,8,9,10,11,2,12,13,16],

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

[14,15,13,16]  };

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

项目结构:

43d5dcd850a1022f41c2fe94bcc78004.png

项目源代码:

PrintPrime.java

1 packagecn.tju.hw3;2

3 public classPrintPrime {4

5 private static final int MAXPRIMES = 100000000;6 public static String printPrimes(intn) {7 String ResultString = "";8 int curPrime; //Value currently considered for primeness

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

10 boolean isPrime; //Is curPrime prime?

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

13 //Initialize 2 into the list of primes.

14 primes[0] = 2;15 numPrimes = 1;16 curPrime = 2;17 while (numPrimes

19 isPrime = true;20 for (int i = 0; i <= numPrimes - 1; i++) { //for each previous prime.

21 if (curPrime % primes[i] == 0) { //Found a divisor, curPrime is not prime.

22 isPrime = false;23 break; //out of loop through primes.

24 }25 }26 if (isPrime) { //save it!

27 primes[numPrimes] =curPrime;28 numPrimes++;29 }30 } //End while31

32 //Print all the primes out.

33 for (int i = 0; i <= numPrimes - 1; i++) {34 ResultString = ResultString + primes[i] + " ";35 }36 returnResultString;37 } //end printPrimes

38

39 }

PrintPrimeTest.java

1 packagecn.tju.hw3;2

3 import static org.junit.Assert.*;4 importjava.util.Collection;5

6 importorg.junit.Before;7 importorg.junit.Test;8 importorg.junit.runner.RunWith;9 importorg.junit.runners.Parameterized;10 importorg.junit.runners.Parameterized.Parameters;11 importjava.util.Arrays;12

13 @RunWith(Parameterized.class)14 public classPrintPrimeTest {15 private String expected = "";16 private intn;17 privatePrintPrime pp;18

19 public PrintPrimeTest(intnum, String expec) {20 n =num;21 expected =expec;22 }23

24 @Before25 public voidsetUp() {26 pp = newPrintPrime();27 }28

29 @Test30 public voidtest() {31 assertEquals(this.expected, pp.printPrimes(this.n));32 }33

34 @Parameters35 public static CollectiongetData() {36 return Arrays.asList(new Object[][] { { 6, "2 3 5 7 11 13 "} });37 //return Arrays.asList(new Object[][] {{ 2, "2 3 " } });

38 }39 }

运行结果:

739693499a66bf7c732314d384bac625.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值