基于风险的等价类
• 考虑这些用例,它们配对成测试等价类吗?
- 如果你测试 你是否会测 51+52 52+53 53+54 54+55 55+56 56+57 57+58 58+59 59+60 60+61 61+62 62+63 63+64 64+65 65+66 66+67 67+68 68+69 |
•给出下列潜在的缺陷
这些用例即使存在也不会触发缺陷 |
这些用例会触发缺陷 |
|
|
|
|
|
|
|
|
|
|
|
|
另一个例子:无明确的边界
字符 ASCII码 / 47 下边界 0 48 1 49 2 50 3 51 参考 4 52 计算机软件测试 5 53 9-11页 6 54 7 55 8 56 9 57 上边界 : 58 A 65 a 97 |
• 仍是那个99+99的程序
• 输入第一个值
• 等待几秒
• 输入第二个值
• 假设我们的客户端在输入延迟600秒以上超时。这对你如何测试是否产生影响?
• 假设客户端从服务上接收数据,客户端没有超时,同时,服务器端延迟超过300秒就表示超时
- 你应用的路径分析中是否覆盖到这种超时呢?
- 你要测什么样的边界值呢?在哪个域中?
总结:等价类和代表值
如果你期待两个测试有相同的结果(通过/失败),那这两个测试属于同一个等价类。根据定义来看,测试统一等价类的多个成员,是重复测试。
在一个有序集中,边界标志着一个等价类向另一个转换的点或者区间。程序更可能在边界点失败,所以,这些都是(简洁,数字化的)等价类应用的最好部分。
更普遍的是,你期待将一个可能测试空间细分为若干相关的类然后运行其中部分用例。你想从每个类中选择最有力的测试。我们乘这些最有利的测试为每个类的最佳代表。
外部参考:分层抽样:http://www.wikipedia.org/wiki/Stratified_sampling
一个新的边界和等价类表
变量 |
风险(潜在失败) |
应该不会触发失败的类 |
会触发失败的类 |
测试用例(最佳代表) |
备注 |
第一个输入 |
在范围之外的数值上失败 |
-99到99 |
最小-100,最大100 |
-100,100 |
|
|
未能将范围内外划分清楚 |
|
|
-100,-99,100,99 |
|
|
数字误分类 |
非数字 |
0到9 |
0(ASCII 48) 9(ASCII 57) |
|
|
非数字误分类 |
数字0-9 |
48-57之外的其他ASCII |
/(ASCII 47) ;(ASCII 58) |
|
注意,我们已经摒弃了“有效”和“无效”的问题。这使得我们无需考虑“有效”概念,对划分策略一概而论。
- 举例来说,打印机等价类(讨论设备兼容性测试,见Kaner et al,第八章)