P64
(a)
(b) when MAXPRIMES = 4, array will out of bound
(c) n = 1
(d) node coverage:
TR = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
Test Paths: [1,2,3,4,5,6,7,8,5,9,10,11,12,2,13,14,15,16]
edge coverage:
TR = {(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(6,8),(7,8),(8,5),(5,9),(9,10),(10,11),(11,12),(10,12),(12,2),(2,13),(13,14),(14,15),(15,14),(14,16)}
prime path coverage:
TR = {[1,2,13,14,16],[1,2,13,14,15],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,8],[1,2,3,4,5,9,10,11,12],[1,2,3,4,5,9,10,12],[2,
最后,设计主路径测试覆盖的用例。以上次的三角形为例:
软件结构如下:
Triangle的内容:
判断三角形的形状的代码如下:
public String type(Triangle tri){ if(isTriangle(tri)){ if(isIsosceles(tri)){ return "isoscele"; } if(isScalene(tri)){ return "equilateral"; } return "scalene"; } return "not a triangle"; }
TriangleTest的内容如下:
package cn.tjuscs.st; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) public class TriangleTest { private Triangle tri; private int input1; private int input2; private int input3; private String expected; public TriangleTest(int input1, int input2, int input3, String expected){ this.input1 = input1; this.input2 = input2; this.input3 = input3; this.expected = expected; } @Before public void setUp(){ tri = new Triangle(input1, input2, input3); } @Parameterized.Parameters public static Collection<Object[]> getData(){ return Arrays.asList(new Object[][]{ {2,2,2,"equilateral"}, {2,4,3,"scalene"}, {2,3,3,"isoscele"}, {2,9,2,"not a triangle"} }); } @Test public void testTriangle() throws Exception{ assertEquals(this.expected, tri.type(tri)); } }
覆盖率97.6%
//原来的程序打不开了。。所以用这个代替覆盖率的截图