Question a(control flow graph):
Question b: 令MAXPRIMES=4,这样t2会测试出越界错误,t1不会。
Question c: n=1;
Question d:
- node coverage:
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
- edge coverage
{1,2},{2,3},{2,11},{3,4},{4,5},{5,6},{5,9},{6,7},{6,8},{7,9},{8,5},{9,10},{9,2},{10,2},{11,12},{12,13},{12,14},{13,14}。
- prime path coverage:
{1,2,3,4,5,6,7,9,10},{1,2,3,4,5,9,10},{1,2,3,4,5,6,8},{1,2,11,12,13,14},{1,2,11,12,14},{2,3,4,5,9,2},{2,3,4,5,6,7,9,2},{2,3,4,5,9,10,2},{2,3,4,5,6,7,9,10,2},{3,4,5,9,2,11,12,13,14},{3,4,5,9,2,11,12,14},{3,4,5,6,7,9,2,11,12,14},{3,4,5,6,7,9,2,11,12,13,14},{3,4,5,9,10,2,11,12,13,14},{3,4,5,9,10,2,11,12,14},{3,4,5,6,7,9,10,2,11,12,13,14},{3,4,5,6,7,9,10,2,11,12,14},{5,6,8,5},{6,8,5,9,2,11,12,13,14},{6,8,5,9,2,11,12,14},{6,8,5,9,10,2,11,12,13,14},{6,8,5,9,10,2,11,12,14},{6,8,5,9,2,3,4,5,6}
实现主路径覆盖的例子:
Triangle.java
package triangletest; public class Triangle { private int a=0; private int b=0; private int c=0; private String s; public Triangle() { this.a=0; this.b=0; this.c=0; } public Triangle(int x, int y, int z ) { this.a=x; this.b=y; this.c=z; } public void calculate() { if ((a+b>c)&(a+c>b)&(b+c>a)) { if ((a==b)&(b==c)) {s="equilateral";} else if ((a==b)|(b==c)|(a==c)) {s="isosceles";} else {s="scalene";} } else { s="not a triangle"; } } public String getresult() { return s; } }
TriangleTest.java
package test; import triangletest.*; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class TriangleTest { public Triangle t; @Before public void setUp() throws Exception { System.out.println("start!"); t=new Triangle(); } @After public void tearDown() throws Exception { System.out.println("end!"); } @Test public void testCalculate() { t = new Triangle(1,1,1); t.calculate(); assertEquals("equilateral",t.getresult()); t = new Triangle(1,2,2); t.calculate(); assertEquals("isosceles",t.getresult()); t = new Triangle(2,1,2); t.calculate(); assertEquals("isosceles",t.getresult()); t = new Triangle(2,2,1); t.calculate(); assertEquals("isosceles",t.getresult()); t = new Triangle(3,2,1); t.calculate(); assertEquals("not a triangle",t.getresult()); t = new Triangle(2,3,1); t.calculate(); assertEquals("not a triangle",t.getresult()); t = new Triangle(1,2,3); t.calculate(); assertEquals("not a triangle",t.getresult()); t = new Triangle(3,4,5); t.calculate(); assertEquals("scalene",t.getresult()); } }
运行结果截图: