一.
a.控制流图:
b.设置错误在 if(isDivisible(primes[i],curPrime)),即可使t2比t1更容易发现
c.n = 1
d.
Node Coverage Test Paths:
[1,2,3,4,5,6,7,5,9,10,11,2,12,13,14,15,13,16]
[1,2,3,4,5,6,8,9,10,11,2,12,13,14,15,13,16]
Edge Coverage Test Paths:
[1,2,3,4,5,6,7,8,9,10,11,2,12,13,14,15,13,16]
[1,2,3,4,5,6,8,9,11,2,12,13,16]
Prime Path Coverage Test Paths:
[5,6,7,5]
[13,14,15,13]
[1,2,3,4,5,6,7,8,9,10,11,2,12,13,14,15,13,16]
[1,2,3,4,5,6,8,9,11,2,12,13,16]
[1,2,3,4,5,6,7,8,9,10,11]
[2,3,4,5,6,7,8,9,10,11,2]
[2,3,4,5,6,8,9,11,2]
[2,3,4,5,6,7]
[2,12,13,14,15]
[2,12,13,16]
[1,2,12,13,14,15]
[1,2,12,13,16]
二.实现一个主路径覆盖:
package junit; public class triangle { private static int equilateral = 1; private static int isosceles = 2; private static int scalene = 3; private static int error = 4; public int getEquilateral() { return equilateral; } public int getIsosceles() { return isosceles; } public int getScalene() { return scalene; } public int getError() { return error; } public int type(int a, int b, int c) { if(a<=0||b<=0||c<=0) { return error; } else if(a+b<=c||a+c<=b||b+c<=a) { return error; } else if(a!=b&&b!=c&&a!=c) { return scalene; } else if(a==b&&b==c) { return equilateral; } else { return isosceles; } } }
测试类用例:
package junit;
import org.junit.Test;
import static org.junit.Assert.*;
public class triangletest {
private triangle triangle = new triangle();
@Test
public void testNottriangel(){
assertEquals(triangle.getError(),triangle.type(0, 1, 2));
}
@Test
public void testScalene(){
assertEquals(triangle.getScalene(),triangle.type(2, 4, 3));
}
@Test
public void testIsosceles(){
assertEquals(triangle.getIsosceles(),triangle.type(3, 2, 3));
}
@Test
public void testEquilateral(){
assertEquals(triangle.getEquilateral(),triangle.type(3, 3, 3));
}
@Test
public void testNottriangel1(){
assertEquals(triangle.getError(),triangle.type(1, 1, 2));}
}
实现的主路径覆盖: