1. 白盒测试:对程序内部代码结构的测试
黑盒测试:对程序外部表现出来的行为的测试
用于检查代码的功能,不关心内部实现细节。
即检查程序是否符合规约。
下面介绍用例设计的两种方法:
等价类划分与边界值分析。
2. 等价类划分
定义:基于等价类划分的测试,将被测函数的输入域划分为等价类,从等价类中导出测试用例。
针对每个输入数据需要满足的约束条件,划分等价类
每个等价类代表着对输入约束加以满足/违反的有效/无效数据的集合 。
基于的假设:相似的输入,将会展示相似的行为,故从每个等价类中选一个代表作为测试用例即可。
实例:
对BigInteger.multiply()进行等价类划分测试:
每个BigInteger可划分为七部分:
从7部分中自由选择a,b,出现的等价类有49个
对max()进行等价类划分测试:
max:int X int ->int
而划分只有三种:
因此划分如下:
只需每个等价类中选取一个用例:
3. 边界值分析
大量的错误发生在输入域的“边界”而非中央,
而边界值分析方法是对等价类划分方法的补充。
边界可能发现:
程序员经常犯一些大小差1的错误
某些边界值是“特殊情况”,需要特殊处理
程序的行为在边界的地方可能发生“突变”。
在进行边界值分析时,不仅要考虑边界,还要考虑边界的两侧。
等价类划分与边界值分析的差异:
例如上面的max(),进行边界值划分:
若全覆盖,就要在多个划分维度上多个取值进行组合,每个组合都要有一个用例。
需要3X5X5=75个用例。
若覆盖每个取值,至少覆盖一次即可,我们就可以选取5个用例: