黑盒测试法——等价类划分法
实验目的:1.掌握等价类划分的方法
- 掌握按等价类方法设计测试用例
实验内容:
1、请用等价类划分法为三角形问题划分等价类,并设计相应的测试用例,测试下面三角形问题程序,找出缺陷并改正,给出缺陷报告。
2、三角形问题:输入3个整数a、b、c,分别作为三角形的3条边,通过程序判断由3条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形或者3条边不构成三角形。
3、方案设计
输入三条边a、b、c必须满足以下条件:
条件1: 1≤a≤100
条件2: 1≤b≤100
条件3: 1≤c≤100
条件4: a<b+c
条件5: b<a+c
条件6: c<a+b
如果输入值a、b、c满足条件1、2、3,则输出下列四种情况之一:
(1)如果不同时满足条件4、5、6,则程序输出“不构成三角形”。
(2)如果3条边相等,则程序输出为“等边三角形”。
(3)如果恰好有2条边相等,则程序输出为“等腰三角形”。
(4)如果3条边都不相等,则程序输出为“一般三角形”。
(5)对于不满足条件1、2、3的情况,应给出具体提示:“超出范围”
(6)对于输入数据不满足要求的,应给出具体提示“请输入3个非零正整数”
等价类划分
有效等价类 |
号码 |
无效等价类 |
号码 |
|
输入三个整数 |
整数 |
1 |
a为非整数 一边为非整数 b为非整数 c为非整数 a,b为非整数 两边为非整数 b,c为非整数 a,c为非整数 三边a,b,c均为非整数 |
12 13 14 15 16 17 18 |
三个数 |
2 |
只给a 只给一边 只给b 只给c 只给a,b 只给两边 只给b,c 只给a,c 给出三个以上 |
19 20 21 22 23 24 25 |
|
非零数 |
3 |
a为0 一边为零 b为0 c为0 a,b为0 两边为零 b,c为0 a,c为0 三边a,b,c均为0 |
26 27 28 29 30 31 32 |
|
正数 |
4 |
a<0 一边<0 b<0 c<0 a<0且b<0 二边<0 a<0且c<0 b<0且c<0 三边均<0:a<0且b<0且c<0 |
33 34 35 36 37 38 39 |
|
构成一般三角形 |
a+b>c
b+c>a
a+c>b |
5
6
7 |
a+b<c a+b=c b+c<a b+c=a a+c<b a+c=b |
40 41 42 43 44 45 |
构成等腰三角形 |
a=b 且两边之 b=c 和大于 a=c 第三边 |
8 9 10 |
|
|
构成等边三角形 |
a=b=c |
11 |
|
测试用例编号 |
(a,b,c) |
覆盖等价类 |
预期输出 |
实际输出 |
结果 |
T01 |
(3,4,5) |
1-7 |
一般三角形 |
一般三角形 |
|
T02 |
(3,3,5) |
1-7,8 |
等腰三角形 |
等腰三角形 |
|
T03 |
(3,5,5) |
1-7,9 |
等腰三角形 |
等腰三角形 |
|
T04 |
(3,5,3) |
1-7,10 |
等腰三角形 |
等腰三角形 |
|
T05 |
(1,1,1) |
1-7,11 |
等边三角形 |
等边三角形 |
|
T06 |
(2.3,4,5) |
12 |
请输入三个非零正整数 |
不构成三角形 |
|
T07 |
(2,3.3,4) |
13 |
请输入三个非零正整数 |
不构成三角形 |
|
T08 |
(2,3,4.4) |
14 |
请输入三个非零正整数 |
不构成三角形 |
|
T09 |
(2.2,2.2,3) |
15 |
请输入三个非零正整数 |
不构成三角形 |
|
T10 |
(2,3.3,3.3) |
16 |
请输入三个非零正整数 |
不构成三角形 |
|
T11 |
(2.2,3,2.2) |
17 |
请输入三个非零正整数 |
不构成三角形 |
|
T12 |
(2.2,2.2,2.2) |
18 |
请输入三个非零正整数 |
不构成三角形 |
|
T13 |
(3,,) |
19 |
超出范围 |
不构成三角形 |
|
T14 |
(,3,) |
20 |
超出范围 |
不构成三角形 |
|
T15 |
(,,3) |
21 |
超出范围 |
不构成三角形 |
|
T16 |
(3,3,) |
22 |
超出范围 |
不构成三角形 |
|
T17 |
(,3,3) |
23 |
超出范围 |
不构成三角形 |
|
T18 |
(3 , 3) |
24 |
超出范围 |
不构成三角形 |
|
T19 |
|||||
T20 |
(0,1,2) |
26 |
超出范围 |
不构成三角形 |
|
T21 |
(1,0,2) |
27 |
超出范围 |
不构成三角形 |
|
T22 |
(1,2,0) |
28 |
超出范围 |
不构成三角形 |
|
T23 |
(0,0,1) |
29 |
超出范围 |
不构成三角形 |
|
T24 |
(0,1,0) |
30 |
超出范围 |
不构成三角形 |
|
T25 |
(1,0,0) |
31 |
超出范围 |
不构成三角形 |
|
T26 |
(0,0,0) |
32 |
超出范围 |
不构成三角形 |
|
T27 |
(2,-1,3) |
33 |
超出范围 |
不构成三角形 |
|
T28 |
(2,1,-3) |
34 |
超出范围 |
不构成三角形 |
|
T29 |
(-2,1,3) |
35 |
超出范围 |
不构成三角形 |
|
T30 |
(-2,-1,3) |
36 |
超出范围 |
不构成三角形 |
|
T31 |
(-2,1,-3) |
37 |
超出范围 |
不构成三角形 |
|
T32 |
(2,-1,-3) |
38 |
超出范围 |
不构成三角形 |
|
T33 |
(-2,-1,-3) |
39 |
超出范围 |
不构成三角形 |
|
T34 |
(3,1,5) |
40 |
不构成三角形 |
不构成三角形 |
|
T35 |
(3,2,5) |
41 |
不构成三角形 |
不构成三角形 |
|
T36 |
(3,1,1) |
42 |
不构成三角形 |
不构成三角形 |
|
T37 |
(3,2,1) |
43 |
不构成三角形 |
不构成三角形 |
|
T38 |
(1,4,2) |
44 |
不构成三角形 |
不构成三角形 |
|
T39 |
(3,4,1) |
45 |
不构成三角形 |
不构成三角形 |
测试用例:
1、覆盖有效等价类的测试用例
用例ID |
a b c |
预期输出 |
覆盖等价类号码 |
1 2 3 4 5 |
3 4 5 4 4 5 4 5 5 5 4 5 4 4 4 |
一般三角形 等腰三角形 等腰三角形 等腰三角形 等边三角形 |
1—7 1—7,8 1—7,9 1—7,10 1—7,11 |
2、覆盖无效等价类的测试用例
用例ID |
a b c |
覆盖等价类号码 |
预期输出 |
用例ID |
a b c |
覆盖等 价类号码 |
预期输出
|
6 7 8 |
2.5 4 5 3 4.5 5 3 4 5.5 |
12 13 14
|
无效输入 无效输入 无效输入 |
23 24 25 26 |
0 0 5 3 0 0 0 4 0 0 0 0 |
29 30 31 32 |
无效输入 无效输入 无效输入 无效输入 |
9 10 11 12 |
3.5 4.5 5 3 4.5 5.5 3.5 4 5.5 3.5 4.5 5.5 |
15 16 17 18 |
无效输入 无效输入 无效输入 无效输入 |
27 28 29 |
-3 4 5 3 -4 5 3 4 -5 |
33 34 35 |
无效输入 无效输入 无效输入 |
13 14 15 |
3 4 5 |
19 20 21 |
无效输入 无效输入 无效输入 |
30 31 32 33 |
-3 -4 5 -3 4 -5 3 -4 -5 -3 -4 -5 |
36 37 38 39 |
无效输入 无效输入 无效输入 无效输入 |
16 17 18 19 |
3 4 4 5 3 5 3 4 5 6 |
22 23 24 25 |
无效输入 无效输入 无效输入 无效输入 |
34 35 36 37 |
3 1 5 3 2 5 3 1 1 3 2 1 |
40 41 42 43 |
非三角形 非三角形 非三角形 非三角形 |
20 21 22 |
0 4 5 3 0 5 3 4 0 |
26 27 28 |
无效输入 无效输入 无效输入 |
38 39 |
1 4 2 3 4 1 |
44 45 |
非三角形 非三角形 |
缺陷报告:
缺陷编号 |
1 |
用例编号 |
40 |
缺陷类型 |
代码错误 |
||||||||
严重级别 |
严重 |
优先级 |
优先 |
缺陷状态 |
New |
||||||||
测试阶段 |
√单元 □ 集成 □ 系统 □ 验收 □ 其它( ) |
可重现性 |
√是 □否 |
||||||||||
BUG原因 |
□需求分析√ 基本设计□ 详细设计□ 设计式样理解□ 编程 □数据库设计 □ 环境配置□ 其它 ( ) |
||||||||||||
缺陷描述 |
程序无法正常执行 |
||||||||||||
预期结果 |
程序能运行,并且有运行的结果 |
||||||||||||
重现步骤 |
备注 |
||||||||||||
打开vc++6.0,运行以下源代码。 #include "iostream.h" void main(){ int a,b,c; cout<<"请输入三角形的三条边(界于1-100之间)"<<endl; cin>>a>>b>>c; if(a<=1||a>=100)cout<<"a的值超过允许的范围!"; if(b<=1||b>=100)cout<<"b的值超过允许的范围!"; if(c<=1||c>=100)cout<<"c的值超过允许的范围!"; if(a+b>c||a+c>b||b+c>a)cout<<"a,b,c的值不能构成三角形!"; if(a==b&&b==c)cout<<"是等边三角形!"; if(a==b||b==c||a==c)cout<<"是等边三角形!"; if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!"; } 发现错误,无法执行。 |
|||||||||||||
以下部分由BUG修改人填写 |
|||||||||||||
缺陷修改描述 |
|||||||||||||
将if语句的“<>”改成“!=” |
|||||||||||||
测试人 |
修正人 |
确认人 |
修正日期 |
年 月 日 |
|||||||||