您的位置:首页 > 其它

(2016春) 作业8:单元测试练习(个人练习)

2016-05-09 21:07 351 查看

单元测试练习

0. 时间要求

截止日期:2016-5-17

1. 目的

单元测试训练 (Junit框架应用)

测试用例的设计方法

2. 要求

[必做题1] 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例,写到博客中。(10分)

测试用例
序号 测试输入:三条边(a,b,c) 测试预言(Oracle:直角、等腰、等边三角形)
1 输入(1,1,1) 等边三角形
2 输入(****) ***
Ps:设计测试用例时,注意不要遗漏、也要避免冗余.

[必做题2] 模仿附录2给出的三角形判断Junit测试代码,设计单元测试脚本,测试 [必做题1]设计得到的测试用例。注意测试脚本中测试用例出现顺序与[必做题1]表格所列顺序一致。运行所得的测试脚本,截运行结果图,写到博客中,同时将源代码commit到你自己的github。(20分)

[必做题3] 心得体会。写下本次练习你收获的知识点(PS:测试用例设计方法和步骤;测试脚本设计步骤或主要内容)。(10分)

附录

附录1: 三角形类别判断程序

public class Triangle {
// 定义三角形的三边

protected long lborderA = 0;

protected long lborderB = 0;

protected long lborderC = 0;

// 构造函数
public Triangle(long lborderA, long lborderB, long lborderC) {

this.lborderA = lborderA;

this.lborderB = lborderB;

this.lborderC = lborderC;

}

/**
* 判断是否是三角形
*
* 是返回true;不是返回false
*/
public boolean isTriangle(Triangle triangle) {
boolean isTriangle = false;

// 判断边界,大于0 小于或等于Long.MAX_VALUE,出界返回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(Triangle triangle) {
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 = "Isoceles";
}
}

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:三角形类别判断的单元测试脚本示例:

import static org.junit.Assert.*;

import org.junit.Test;

public class TestTriangle{

@Test
public void testIsTriangle1(){
Triangle t = new Triangle(-1,10,2);
assertFalse(t.isTriangle(t));
}

@Test
public void testIsTriangle2(){
// according to the mutant, this test case should fail
Triangle t = new Triangle(3,2,1);
assertFalse(t.isTriangle(t));
}

@Test
public void testIsTriangle3(){
Triangle t = new Triangle(3,1,2);
assertFalse(t.isTriangle(t));
}
// 下面是添加你设计的测试用例
// *****

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: