作业要求:
a.为printPrimes()画控制流图;
b.考虑测试用例t1=(n=3)和t2=(n=5)。即使这些测试用例游历printPrimes()方法中相同的主路径,它们不一定找出相同的错误,设计一个简单的错误,使得t2比t1更容易发现;c.针对printPrimes(),找到一个测试用例,使得响应的测试路径访问连接while语句开始到for语句的边,而不用通过while循环体;
d. 针对printPrimes()的图例列举每个节点覆盖,边覆盖和主路径覆盖的测试需求;
-基于junit和Eclemma实现一个主路径覆盖测试;
B.N=5 测试范围要比N=2大,所以程序对N的改动N=5的容错率要大一些。
C.令N=1即可
D.
节点覆盖
TR{1,2,3,4,5,6,7,8,9,10,11,12,13,14};
边覆盖:
{(1,2),(2,4),(4,5),(5,7),(7,10),(5,6),(6,8),(6,9),(9,10),(9,10),(10,11),(10,12),(11,13),(12,13),(13,1),(2,3),(3,14)};
主路径覆盖:
TR={(1,2,4,5,7,10,11,13,14),(1,2,4,5,7,10,12,13,14),(1,2,4,5,6,8,10,11,13,14),(1,2,4,5,6,8,10,12,13,14),(1,2,4,5,6,9,10,12,13,14),(1,2,4,5,6,9,10,11,13,14),(1,2,3,14),(6,9,6),(9,6,9),(2,4,5,7,10,11,13,1),(2,4,5,7,10,11,12,1),(5,7,10),(5,6,8,10),(5,6,9,10),(2,4,5,7,10,11),(2,4,5,7,10,12),(9,6,8,10,11,13,14),(9,6,8,10,12,13),(9,6,9,10,11,13),(9,6,9,10,12,13)。
Junit代码:
package com.prime; import static org.junit.Assert.*; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.junit.Before; import org.junit.Test; public class PrimeTest { Prime prime; ByteArrayOutputStream baos; @Before public void start() { system.out.println("program begins"); } @Test public void test() { String outcome = new String("Prime: 2 Prime: 3 Prime: 5 Prime: 7 Prime: 11 "); prime.printPrimes(5); assertEquals(outcome, baos.toString()); } }