6.4 佣金问题的等价类测试用例
6.4.1输入等价类
有效等价类:
L1={枪机数量:1≤lock≤70}
L2={枪机数量:-1}
S1={枪托数量:1≤stock≤80}
B1={枪管数量:1≤barrel≤90}
无效等价类:
L4={枪机数量:>70}
S3={枪托数量:>80}
B2={枪托数量:<1}
B3={枪托数量:>90}
(1)WN
(2)SR
"立方体"的"一个角"
枪机 | 枪托 | 枪管 | 预期输出 | |
SR1 | -2 | 30 | 30 | 输入超出范围 |
SR2 | 35 | -1 | 30 | 输入超出范围 |
SR3 | 35 | 40 | -1 | 输入超出范围 |
SR4 | -2 | -1 | 30 | 输入超出范围 |
SR5 | -2 | 40 | -1 | 输入超出范围 |
SR6 | 30 | -1 | -1 | 输入超出范围 |
SR7 | -2 | -1 | -1 | 输入超出范围 |
6.4.2输出等价类测试用例
该例子的每一个输入有一个合理的等价类,二个无效等价类,通过有效等价类很难确定程序没有问题,通过对输出值域定义等价类会有一定的帮助。
销售额= 45×lock + 30×stock + 25×barrel
可以根据佣金值域定义三个变量的等价类:
S1 = {<lock,stock,barrel>,销售额≤1000}
S2 = {<lock,stock,barrel>,1000<销售额≤1800}
S3 = {<lock,stock,barrel>,销售额>1800}
可以参照第5章立方体来理解
用例标识 | 枪机 | 枪托 | 枪管 | 销售额 | 预期输出 |
OR1 | 5 | 5 | 5 | 500 | 50 |
OR2 | 15 | 15 | 15 | 1500 | 175 |
OR3 | 25 | 25 | 25 | 2500 | 360 |
扩展:
(1)与弱健壮性测试用例结合在一起,可得到相当不错的测试
(2)再增加一些边界检查,保证从1000、1800附近边界的转移是正确的。
(3)这并不是特别容易,因为我们只能选择枪机、枪托和枪管,碰巧这个例子中的约束设计使三元组的数据"搭配合适"
6.5指导方针和观察
(1)显然,等价类测试的弱形式不如强对应的强形式测试全面
(2)如果实现语言是强类型,则没必要使用强壮性测试
(3)如果错误条件非常重要,则进行健壮性测试是合适的
(4)如果输入数据以离散区间和集合定义,则等价类测试是合适的,也适用于如果变量值越界系统就会出现故障的系统
(5)通过结合边界值测试,等价类测试可得到加强
(6)如果程序函数很复杂,则等价类测试是被指示的
(7)强等价类测试假设变量是独立,相应的测试用例相乘会引起冗余问题。如果存在依赖关系,则常常会产生错误的测试用例
(8)在发现"合适"的等价关系之前,可能需要进行多次尝试,在有些情况下,如果不能肯定,最好对任何合理的实现进行再次预测
(9)强和弱形式的等价类之间的差别,有助于区分累进测试和回归测试
------------第6章结束--------------