软件验证与确认实验报告 (白盒测试)

时间:2022-11-04 10:16:20

                            实验二白盒测试

1.软件单元描述

   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;

}

}

2.单元结构

软件验证与确认实验报告 (白盒测试)软件验证与确认实验报告 (白盒测试)


3.试过程

3.1配置环境:Windows操作系统、eclipsejdkJUnit4

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());

}

}

4.测试结果

4.1JUnit4运行结果

软件验证与确认实验报告 (白盒测试)


5.总结

  此次,白盒测试总共设置了32个用例,其中,分支覆盖率为100%,语句覆盖率为100%主要路径覆盖率57.14%;至此,通过此次白盒测试实践,让我更加理解了“白盒测试”的基本原理,并逐渐明白了“白盒测试”对于软件测试是多么的重要。