实验二
实验的目的和要求:
目的:
(1)掌握等价类划分方法的步骤;
(2)扩宽测试思维;
要求:能够用等价类划分的思想设计测试用例
实验内容:
问题陈述:
简单版本:三角形问题接受三个整数 a、b 和 c 作为输入,
用作三角形的边。程序的输出是由这三条边确定的三角形类
型:等边三角形、等腰三角形、不等边三角形或非三角形。
改进版本:三角形问题接受三个整数 a、b 和 c 作为输入,
用作三角形的边。整数 a、b 和 c 必须满足以下条件:
c1:1<=a<=200 c4: a<b+c
c2: 1<=b<=200 c5: b<a+c
c3: 1<=c<=200 c6: c<a+b
实验步骤:
一、分析问题,得出等价类列表,分析三角形问题中给
出和隐含的对输入条件的要求: (1)整数 (2)三个数
(3)非零数 (4)正数 (5)两边之和大于第三边 (6)
等腰 (7)等边 ,如果 a 、 b 、 c 满足条件( 1 ) ~
( 4 ),则输出下列四种情况之一:如果不满足条件(5),
则程序输出为 “ 非三角形 ” 。如果三条边相等即满足条件
(7),则程序输出为 “ 等边三角形 ” 。如果只有两条边相
等、即满足条件(6),则程序输出为 “ 等腰三角形 ” 。如
果三条边都不相等,则程序输出为 “ 一般三角形 ”。
序号 有效等价类 无效等价类
a 不为整数(8)
b 不为整数(9)
有一边不为整
数
c 不为整数(10)
a、b 不为整数(11)
a、c 不为整数(12)
有两边不为整
数
b、c 不为整数(13)
(1)
整数
三边均不为整
数
a、b、c 均不为整数
(14)
只给 a 和 b 两个(15)
只给 a 和 c 两个(16)只有两个数
只给 b 和 c 两个(17)
只给 a 一个数(18)
只给 b 一个数(19)只有一个数
只给 c 一个数(20)
(2)
三个数
三个数以上 给出三个数以上(21)
a 为零(22)(3)
非零数 一个数为零
b 为零(23)
c 为零(24)
a、b 为零(25)
a、c 为零(26)两个数为零
b、c 为零(27)
三个数为零 a、b、c 都为零(28)
a 不为正数(29)
b 不为正数(30)
一个数不为正
数
c 不为正数(31)
a、b 不为正数(32)
a、c 不为正数(33)
两个数不为正
数
b、c 不为正数(34)
(4)
正数
(a>0,b>0,c>0)
三个数不为正
数
a、b、c 均不为正数
(35)
a+b<c(36)
a+c<b(37)
两边之和小于
第三边
b+c<a(38)
a+c=b(39)
a+b=c(40)
(5)
两边之和大于第
三边
两边之和等于
第三边
b+c=a(41)
a<>b 且 b<>c (42)(6) 等腰
(a=b,b=c,a=c) a<>c 且 c<>b (43)
b<>a 且 a<>c (44)
(7) 等边
(a=b=c)
a<>b<>c (45)
二、设计测试用例
输入数据 预期结果 实际结果 覆盖条件
3 、4、 5
输出一般三角
形
输出一般三角
形
1、2、3、4、5
3、3、4
输出等腰三角
形
输出等腰三角
形
1、2、3、4、5、6
3、3、3
输出等边三角
形
输 出 等 边 三
角形
1、2、3、4、5、6、
7
、4 、5
输出一般三
角形
输出一般三角
形
8
4、 、5
输出一般三
角形
输出一般三角
形
9
5、4、
输出一般三角
形
输出一般三角
形
10
、、3
输出一般三角
形
输出一般三角
形
11
、3、
输出一般三角
形
输出一般三角
形
12
3、、 输出一般三角 输出一般三角 13
形 形
、、
输出一般三角
形
输出一般三角
形
import .*;
class sanj{
public static int a,b,c;
public static void main(String arg[]) throws IOException{
try{
BufferedReader stdin=new BufferedReader(new
InputStreamReader()); //接收键值
("输入三边值,每个值输入后回车");
("请输入:");
a=(());
b=(());
c=(());
}catch(IOException e){
("出现异常!");
(0);
}
if(a+b<c || a+c<b || b+c<a){
("你输入的不能构成三角形");
}
if(a==b || a==c || b==c)
{
if(a==b && b==c) ("等边三角形");
else ("等腰三角形");
}
else ("一般三角形");
}
}