软件测试homework3
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%
//原来的程序打不开了。。所以用这个代替覆盖率的截图
