测试是无法全尽的,无法遍历的。
但是我们可以通过一定的测试方法,设计测试用例,用较少的测试用例覆盖最大的范围,发现最多的bug。
黑盒测试(等价类划分法,边界值分析法)和白盒测试 (语句覆盖,判定覆盖,条件覆盖 ,基本路径覆盖,等等)都是从不同的角度来思考如何用较少的测试用例覆盖最大的范围。
在实际测试当中,通常为了提高覆盖,我们需要组合使用这些测试方法,并不一定只采用一个。
边界值分析法:
如果输入了条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个边界范围的值作为测试输入数据;
如果输入条件规定了值的个数,则用最大个数、最小个数、比最大多1、比最小小1的数作为测试输入数据;
根据规格说明的每个输出条件,使用前面的原则;
如果程序的规格说明给出的输入输出域是有序集合,则应选取集合的每一个元素和最后一个元素作为测试用列;
如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试案例;
分析规格说明,找出其他可能的边界条件。
边界条件是指软件计划的操作界限所在的边缘条件。
等价类划分法:
如果输入条件决定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。
如果输入条件规定了输入值的集合,或者规定了“必须如何”的条件,此时可确立一个有效等价类和一个无效等价类;
如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类;
如果规定了输入数据的一组值,而且程序对每个输入值分别进行处理,此时可为每一个输入值确立一个有效等价类,此外,针对这组值确立一个无效等价类,它是所有不允许输入值的集合;
如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)。
如果确知,已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
基本路径覆盖:在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行路径的集合,然后据此设计测试用例。设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次。
条件判定组合覆盖:设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。