【软件测试】白盒测试

题目

Java写一个判断三角形形状的程序,要求能判断是否是等边三角形,等腰三角形,直角三角形,利用Junit进行白盒测试。

实现代码

Triangle

package test;

public class Triangle {
protected long A = 0;
protected long B = 0;
protected long C = 0;
// Constructor
public Triangle(long A,long B,long C) {

	this.A =A;
	this.B =B;
	this.C =C;
}
/**
 *检查是否是一个三角形
 *
*/
public boolean isTriangle(Triangle triangle) {
	boolean isTriangle =false;
// 检查三条边是否合法
	if ((triangle.A > 0 &&triangle.A <= 200)
			&& (triangle.B > 0 &&triangle.B <= 200)
			&& (triangle.C > 0 &&triangle.C <= 200)) {
// 检测两边之和大于第三边
	if (((triangle.A+triangle.B)>triangle.C)&&
			((triangle.A+triangle.C)>triangle.B)&&
			((triangle.B+triangle.C)>triangle.A)){
			isTriangle = true;
		}
	}
	return isTriangle;
}
/**
 * 检查三角形的类型
 * 包括:非法三角形、等边三角形、不等边三角形、等腰三角形
*/
public String getType(Triangle triangle) {
	String strType ="不能组成三角形";
	if (isTriangle(triangle)) {
		// 是等边三角形
		if (triangle.A ==triangle.B
				&& triangle.B ==triangle.C) {
			strType = "等边三角形";
		}
		// 如果,是等要三角形
		else if (((triangle.A==triangle.B)&&(triangle.B!=triangle.C))|| 
				((triangle.A==triangle.C)&&(triangle.B!=triangle.C))||
				((triangle.C==triangle.B)&&(triangle.B!=triangle.A))) {
				strType = "等腰三角形";
}
// 如果,是直角三角形
		else if((triangle.A*triangle.A+triangle.B*triangle.B==triangle.C*triangle.C)||
				(triangle.B*triangle.B+triangle.C*triangle.C==triangle.A*triangle.A)||
				(triangle.A*triangle.A+triangle.C*triangle.C==triangle.B*triangle.B)){
			strType = "直角三角形";
		}
		else{
			strType = "一般三角形";
		}
	}
	return strType;
 }
}

TriangleTest

package test;
import static org.junit.Assert.*;
import org.junit.Test;
public class TriangleTest {
Triangle a =new Triangle(201, 2, 2);
Triangle b =new Triangle(1, 1, 2);
Triangle c =new Triangle(2, 2, 2);
Triangle d =new Triangle(3, 4, 5);
Triangle e =new Triangle(7, 8, 9);
Triangle f =new Triangle(7, 7, 9);
@Test
public void testIsTriangle() {
assertEquals(false,b.isTriangle(b));
assertEquals(false,a.isTriangle(a));
assertEquals(true,e.isTriangle(e));
assertEquals(true,c.isTriangle(c));
assertEquals(true,d.isTriangle(d));
assertEquals(true,f.isTriangle(f));
}

@Test
public void testGetType() {
assertEquals("不能组成三角形",b.getType(b));
assertEquals("不能组成三角形",a.getType(a));
assertEquals("等边三角形",c.getType(c));
assertEquals("等腰三角形",f.getType(f));
assertEquals("直角三角形",d.getType(d));
assertEquals("一般三角形",e.getType(e));
}
}

控制流图

1开始输入三边长度

2判断数据是否合法

3不是合法三角形

4判断任意两边之和是否大于第三边

5不是三角形

6判断三边是否相等

7是等边三角形

8结束

9判断是否是等腰三角形

10是等腰三角形

11判断是否是直角三角形

12是直角三角形

13是普通三角形

测试用例

路径A:1-2-3-8

路径B:1-2-4-5-8

路径C:1-2-4-6-7-8

路径D:1-2-4-6-9-10-8

路径E:1-2-4-6-9-11-12-8

路径F:1-2-4-6-9-11-13-8

用例

输入

输出

路径

是否通过

备注

1

201,2,2

不能组成三角形

A

通过

 

2

1,1,2

不能组成三角形

B

通过

 

3

2,2,2

等边三角形

C

通过

 

4

7,7,9

等腰三角形

D

通过

 

5

3,4,5

直角三角形

E

通过

 

6

7,8,9

一般是三角形

F

通过

 


你可能感兴趣的:(软件测试)