文章目录
- Input partitioning
Input partitioning
input partitioning 的目的
-
在之前的章节中提到 input domain 是 program / function 的所有可能的输入
-
但是这些输入中有一些是没有意义的,而且如果全部测量的话也是非常耗时的
-
因此如何筛选出一部分 input test cases 能够又快又好地找出
failures
就是 testing 中关注的重点 -
这部分 input partitioning
- 我们可以将很多 test case 划分成相同的类别 (equivalence class 等价类) 从而用一个 test case 就能代替一群,这样也可以提高 test 效率而且还有助于更快发现 failure
-
使用 input partitioning 相当于使用一个分类器,将所有的 input 划分成不同的类别 (input class),每个类别经过相同的代码段和处理
-
这个 D i D_i Di 代表的就是所有 input 切分成多个类别中的第 i i i 个输入类; F i F_i Fi 表示就是这一类的输入经过的都是同一个函数
computational / domain faults
-
上述代码中可以认为分成了两个 F 1 F_1 F1 和 F 2 F_2 F2 其中 F 1 F_1 F1 包含
3, 4, 5, and 7
行, F 2 F_2 F2 包含3, 4, and 7
行 -
根据对程序的这种观点,存在两种可能的故障类型 (types of faults):
-
计算故障:(computational faults) 在选择了正确路径但沿该路径发生了错误计算;以及
-
领域故障:(domain faults): 在每个路径上计算都是正确的,但选择了错误的路径。
-
导致选择错误路径的可能原因有:(1)输入领域执行了错误路径;(2)构成路径选择的决策可能包含故障;以及(3)正确路径(或用于计算所必需的部分路径片段)可能被简单地遗漏。
输入划分的目标是派生测试输入,至少能够执行程序中每个函数一次。在本章中,我们介绍了两种将输入划分为等价类别的方法。
等价类(equivalence classes)
- 例如在前面的 2.1 图中, D i D_i Di 就是第 i i i 个等价类