1、黑盒测试用例设计方法例子 一、等价类划分 问:某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。) 解: 分析题目中给出和隐含的对输入条件的要求: (1)整数 (2)三个数 (3)非零数 (4)正数 (5)两边之和大于第三边 (6)等腰 (7)等边 如果 a 、 b 、 c 满足
2、条件( 1 ) ~ ( 4 ),则输出下列四种情况之一: 1)如果不满足条件(5),则程序输出为 " 非三角形 " 。 2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。 3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。 4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。 列出等价类表并编号 覆盖有效等价类的测试用例: a b c 覆盖等价类号码 3 4 5 (1
3、7) 4 4 5 (1)--(7),(8) 4 5 5 (1)--(7),(9) 5 4 5 (1)--(7),(10) 4 4 4 (1)--(7),(11) 覆盖无效等价类的测试用例: 测试用例 a b c 预期输出 1 3 4 5 一般三角形 2 4 4 5 等腰三角形 3 4 5 5 等腰三角形 4 5
4、 4 5 等腰三角形 5 4 4 4 等边三角形 6 2.5 4 5 a不是整数 7 3 4.5 5 b不是整数 8 3 4 5.5 c不是整数 9 3.5 4.5 5 a、b不是整数 10 3 4.5 5.5 b、c不是整数 11 3.5 4 5.5 a、c不是整数 12 4.5 4.5 5.5 a、b、c均不是整数 13 3 b、c为空 14 4 a、c为空 15 5 a、b为空 16 3 4 c为空 17 4 5 a为空 18 3
5、 5 b为空 19 3 4 5 输入多于3个 20 0 4 5 a为0 21 3 0 5 b为0 22 3 4 0 c为0 23 0 0 5 a、b为0 24 3 0 0 b、c为0 25 0 4 0 a、c为0 26 0 0 0 a、b、c均为0 27 -3 4 5 a为负数 28 3 -4 5 b为负数 29 3 4 -5 c为负数 30 -3 -4 5 a、b为负数 31 -3 4 -5 a、c为负数 32 3 -4 -5 b、c为负
6、数
33
-3
-4
-5
a、b、c均为负数
34
3
1
5
a+b 7、输出
Test1
Test2
Test3
Test4
Test5
Test6
Test7
6
6
6
6
6
6
6
15
15
15
15
15
15
15
1911
1912
1913
1975
2049
2050
2051
1911.6.16
1912.6.16
1913.6.16
1975.6.16
2049.6.16
2050.6.16
2051.6.16
Test8
Test9
Test10
Test11
Test12
Test13
6
6
6
6
6
6
-1
1
2
30
3 8、1
32
2001
2001
2001
2001
2001
2001
day超出[1…31]
2001.6.2
2001.6.3
2001.7.1
输入日期超界
day超出[1…31]
Test14
Test15
Test16
Test17
Test18
Test19
-1
1
2
11
12
13
15
15
15
15
15
15
2001
2001
2001
2001
2001
2001
Mouth超出[1…12]
2001.1.16
2001.2.16
2001.11.16
2001.12.16
Mo 9、uth超出[1…12]
三、判定表驱动分析方法
问题要求:”……对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理……” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。请建立判定表。
解答:
①确定规则的个数:这里有3个条件,每个条件有两个取值Yes/No,故应有2*2*2=8种规则。
②列出所有的条件茬和动作桩:
③填入条件项。
④填入动作桩和动作项。这样便得到形如图的初始判定表。
1
2
3
4
5
6
7
8
条
件
功率大于50马力吗?
Y
Y
Y
Y
N
N
10、N
N
维修记录不全吗?
Y
Y
N
N
Y
Y
N
N
运行超过10年吗?
Y
N
Y
N
Y
N
Y
N
动
作
进行优先处理
√
√
√
√
√
作其他处理
√
√
√
⑤化简。合并相似规则后得到图。
1
2
3
4
5
条
件
功率大于50马力吗?
Y
Y
Y
N
N
维修记录不全吗?
Y
N
N
-
-
运行超过10年吗?
-
Y
N
Y
N
动
作
进行优先处理
√
√
√
作其他处理
11、
√
√
测试用例
功率
维修记录
运行时间
预期输出
Test1
Test2
Test3
Test4
Test5
100
100
100
25
25
不全
全
全
不全
全
5
15
5
15
5
优先处理
优先处理
其他处理
优先处理
其他处理
四、因果图法
有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送 12、出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
1) 分析这一段说明,列出原因和结果
原因:
1.售货机有零钱找
2.投入1元硬币
3.投入5角硬币
4.押下橙汁按钮
5.押下啤酒按钮
结果:
21.售货机〖零钱找完〗灯亮
22.退还1元硬币
23.退还5角硬币
24.送出橙汁饮料
25.送出啤酒饮料
2)画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:
11. 投入1元硬币且押下饮料按钮
12. 押下〖橙汁〗或〖啤酒〗的按钮
13. 应当找5角零钱并且售货机有零钱找
14. 钱已付清
3)转换成判定表:
五、错误推测法
测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:
I. 输入的线性表为空表;
II. 表中只含有一个元素;
III. 输入表中所有元素已排好序;
IV. 输入表已按逆序排好;
V. 输入表中部分或全部元素相同。






