实验二白盒测试:
1.1功能说明:
首先,初始化三角形的三条边,然后,判断输入的边值是否满足三角形的定义,再然后,检查三角形的类型(包括:非法三角形、常规三角形、不等边三角形、等腰三角形)。
1.2*源程序:
public class Triangle {
protected long lborderA = 0;
protected long lborderB = 0;
protected long lborderC = 0;
// Constructor
public Triangle(long lborderA,long lborderB,long lborderC) {
this.lborderA =lborderA;
this.lborderB =lborderB;
this.lborderC =lborderC;
}
/**
*检查是否这是一个三角形
*
*@return真为三角形和假
*/
public boolean isTriangle(Triangletriangle) {
boolean isTriangle =false;
// 检查边界
if ((triangle.lborderA > 0 &&triangle.lborderA <= Long.MAX_VALUE)
&& (triangle.lborderB > 0 &&triangle.lborderB <= Long.MAX_VALUE)
&& (triangle.lborderC > 0 &&triangle.lborderC <= Long.MAX_VALUE)) {
// 检测两边之和大于第三边
if (diffOfBorders(triangle.lborderA,triangle.lborderB) <triangle.lborderC
&& diffOfBorders(triangle.lborderB,triangle.lborderC) <triangle.lborderA
&& diffOfBorders(triangle.lborderC,triangle.lborderA) <triangle.lborderB) {
isTriangle = true;
}
}
return isTriangle;
}
/**
* 检查三角形的类型
* 包括:非法三角形、常规三角形、不等边三角形、等腰三角形
*
*/
public String getType(Triangletriangle) {
String strType ="Illegal";
if (isTriangle(triangle)) {
// 是常规三角形
if (triangle.lborderA ==triangle.lborderB
&& triangle.lborderB ==triangle.lborderC) {
strType = "Regular";
}
// 如果,是不等边三角形
else if ((triangle.lborderA !=triangle.lborderB)
&& (triangle.lborderB !=triangle.lborderC)
&& (triangle.lborderA !=triangle.lborderC)) {
strType = "Scalene";
}
// 如果,是等腰三角形
else {
strType = "Isosceles";
}
}
return strType;
}
/**
* 计算边界之间的差异
*
* */
public long diffOfBorders(long a,long b) {
return (a >b) ? (a -b) : (b -a);
}
/**
* 获取边的长度
*/
public long[] getBorders() {
long[]borders = new long[3];
borders[0] = this.lborderA;
borders[1] = this.lborderB;
borders[2] = this.lborderC;
return borders;
}
}
3.1配置环境:Windows操作系统、eclipse、jdk、JUnit4。
3.2需求:需要测试的源代码。
3.3:流程:依据需要测试的源代码,编写测试代码。
3.4使用JUnit4运行测试代码,查看测试结果。
3.5*junit测试代码:
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
public class TriangleTest {
Triangle a =new Triangle(1, 2, 2);
Triangle b =new Triangle(1, 1, 2);
Triangle c =new Triangle(2, 2, 2);
Triangle d =new Triangle(2, 3, 4);
Triangle e = new Triangle(0, 1, 2);
long[]s = {1,2,2};
@Test
public void testIsTriangle() {
assertEquals(false,b.isTriangle(b));
assertEquals(true,a.isTriangle(a));
assertEquals(false,e.isTriangle(e));
}
@Test
public void testGetType() {
assertEquals("Illegal",b.getType(b));
assertEquals("Isosceles",a.getType(a));
assertEquals("Regular",c.getType(c));
assertEquals("Scalene",d.getType(d));
}
@Ignore
public void testGetBorders() {
assertEquals(s,a.getBorders());
}
}
5.总结
此次,白盒测试总共设置了32个用例,其中,分支覆盖率为100%,语句覆盖率为100%,主要路径覆盖率57.14%;至此,通过此次白盒测试实践,让我更加理解了“白盒测试”的基本原理,并逐渐明白了“白盒测试”对于软件测试是多么的重要。