黑盒测试-等价类划分法与边界值分析法-三角形问题

等价类划分法

等价类划分可以把全部输人数据合理划分为若干等价类,在每一个等价类中取个数据作为测试的输人条件,就可以用少量代表性的测试数据取得较好的测试效果。

有效等价类:指对于程序规格说明来说,由合理的、有意义的输入数据构成的集合。利用它,可以检验程序是否实现了规格说明预先规定的功能和性能。
无效等价类:指对于程序规格说明来说,由不合理的、无意义的输人数据构成的集合。利用它,可以检查程序中功能和性能的实现是否有不符合规格说明要求的地方。
划分等价类的方法有:1.按区间划分;2.按数值划分;3.按数值集合划分;4.按限制条件划分;5.按限制规则划分;6。按处理方式划分。

在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。软件不能只接收合理的数据,还要经受意外的考验,即接收无效的或不合理的数据,这样的软件才能具有较高的可靠性。

边界值分析法

基于边界值分析方法选择测试用例的原则如下:

  1. 如果输人条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据。
  2. 如果输人条件规定了值的个数,则用最大个数、最小个数、比最大个数多1个、比最小个数少1个的数作为测试数据。
  3. 根据规格说明的每一个输出条件,使用规则1和规则2。
  4. 根据规格说明的每一个输出条件,使用规则1和规则2。
  5. 如果程序的规格说明给出的输人域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例。
  6. 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例。
  7. 分析规格说明,找出其他可能的边界条件。

三角形问题的需求规格描述如下:
输入三个整数 a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构 成的三角形的类型为等边三角形、等腰三角形、一般三角形、以及构不成三角形。
现在要求输入三个整数 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 ,程序给出“边的取值超出 允许范围”的信息。
如果输入值 a、b、c 满足条件 1、条件 2 和条件 3,则输出下列四种情况之一:
(1)如果不满足条件 4、条件 5 和条件 6 中的一个,则程序输出为“非三角 形”。
(2)如果三条边相等,则程序输出为“等边三角形”。
(3)如果恰好有两条边相等,则程序输出为“等腰三角形”。
(4)如果三条边都不相等,则程序输出为“一般三角形”。
针对此需求:
1、分析该程序的输出,建立等价类划分表,并根据等价类表设计测试用例;
2、分析输入,根据边界值条件设计测试用例;
3、用所有测试用例对程序进行测试,记录每组测试用例对应的输出结果,并对结果进行分析;(测试用例见附表)
4、确定是否存在 bug,如果存在 bug,分析其原因并调试修复。

该题目的GUI程序:https://download.csdn.net/download/weixin_43845524/12439300
  1. 划分有效等价类和无效等价类
输入条件 有效等价类 无效等价类
是否能构成三角形的三条边 1≤a≤100 (1)
1≤b≤100 (2)
1≤c≤100 (3)
a<b+ c (4)
b<a+ c (5)
c<a+ b (6)
(a<1)(7) (a>100) (21)
(b<1)(8) (b>100) (22)
(c<1)(9) (c>100) (23)
a>=b+ c (10)
b>=a+ c (11)
c>=a+ b (12)
是否为等腰三角形 a=b (13)
b=c (14)
c=a (15)
(a!=b)and(b!=c)and(c!=a) (16)
是否为等边三角形 (a=b)and(b=c)and(c=a) (17) (a!=b) (18)
(b!=c) (19)
(c!=a) (20)
  1. 设计有效等价类的测试用例
序号 测试用例(a,b,c) 预期输出 覆盖等价类 实际输出
1 3,4,5 一般三角形 1,2,3,4,5,6 一般三角形
2 3,3,4 等腰三角形 1,2,3,4,5,6,13 等腰三角形
3 3,4,3 等腰三角形 1,2,3,4,5,6,15 等腰三角形
4 4,3,3 等腰三角形 1,2,3,4,5,6,14 等腰三角形
5 3,3,3 等边三角形 1, 2,3,4,5,6,17 等腰三角形

结论:测试用例第 5 组实际输出与预期不符,推测没对三条边是否同时相等进行判断。

  1. 设计无效等价类的测试用例
序号 测试用例(a,b,c) 预期输出 覆盖等价类 实际输出
1 0,1,2 边的取值超出允许范围 7 越界
2 101,1,2 边的取值超出允许范围 21 越界
3 1,2,0 边的取值超出允许范围 9 越界
4 1,2,101 边的取值超出允许范围 23 越界
5 1,0,2 边的取值超出允许范围 8 越界
6 1,101,2 边的取值超出允许范围 22 越界
7 2,1,1 非三角形 10 等腰三角形
8 1,2,1 非三角形 11 等腰三角形
9 1,1,2 非三角形 12 等腰三角形
10 3,4,5 非等腰三角形 16 一般三角形
11 4,3,3 非等边三角形 18 等腰三角形
12 3,4,3 非等边三角形 19 等腰三角形
13 3,3,4 非等边三角形 20 等腰三角形
14 ,,, 无效等价类 越界
15 1,2, 无效等价类 越界
16 1,, 无效等价类 越界
17 @,1,2 无效等价类 越界
18 S,1,2 无效等价类 越界

结论:测试用例第 7,8,9 组实际输出与预期不符,推测没对两边之和要小于第三边进行判断。

  1. 边界值分析
序号 测试用例(a,b,c) 预期输出 覆盖等价类 实际输出
1 0,1,2 边的取值超出允许范围 7 越界
2 101,1,2 边的取值超出允许范围 21 越界
3 1,2,0 边的取值超出允许范围 9 越界
4 1,2,101 边的取值超出允许范围 23 越界
5 1,0,2 边的取值超出允许范围 8 越界
6 1,101,2 边的取值超出允许范围 22 越界
7 1,100,100 等腰三角形 1,2,3 等腰三角形
8 2,100,99 一般三角形 2 一般三角形
9 3,3,1 等腰三角形 3 等腰三角形

结论:所有测试用例组符合预期,暂时没有问题。

综上,目前检测出两条 bug:

  1. 推测没对三条边是否同时相等进行判断
  2. 推测没对两边之和要小于第三边进行判断。

建议:问题严重性较低,不至于重构,适当添加卫语句即可。

猜你喜欢

转载自blog.csdn.net/weixin_43845524/article/details/106218860