一、白盒测试:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖
1、白盒判定覆盖的准则是:将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次
2、多重条件覆盖准则:将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次
3、总的来说,对于包含每个判断只存在一种条件的程序,最简单的测试准则就是设计出足够数量的测试用例,实现:
(1)、将每个判断的所有结果都至少执行一次
(2)、将所有的程序入口都至少调用一次,以确保全部的语句都至少执行一次
而对于包含多重条件判断的程序,最简单的测试准则是设计出足够数量的测试用例,将每个判断的所有可能的条件结果的组合,以及所有的入口点都至少执行一次
二、黑盒测试:等价类划分、边界值分析、因果图分析、错误猜测
1、等价划分设计测试用例主要有两个步骤:1)确定等价类 2)生成测试用例
1)确定等价类
确定等价类是选取每一个输入条件(通常是规格说明中的一个句子或短语)并将其划分为两个或更多的组。可以使用下图表格来划分。
外部条件 | 有效等价类 | 无效等价类 |
---|---|---|
有效等价类代表对程序的有效输入,而无效等价类代表的则是其它任何可能的输入条件(即不正确的输入值)。
等价类的指导原则为:
a)如果输入条件规定了一个取值范围(例如,“数量可以是从1到999”),那么就应该确定出一个有效等价类(1<数量<999),以及两个无效等价类(数量<1,数量>999)
b)如果输入条件规定了取值的个数(例如,“汽车可登记一至六名车主”),那么就应确定出一个有效等价类和两个无效等价类(没有车主,或车主多于6个)
c)如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同处理(例如,“交通工具的类型必须是公共汽车、卡车、出租车、火车或摩托车”),那么就应该为每个输入值确定一个有效等价类和一个无效等价类(例如,“拖车”)
d)如果存在输入条件规定了“必须是”的情况,例如“标识符的第一个字符必须是字母”,那么就应确定一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母)
2)生成测试用例
a)为每个等价类设置一个不同的编号
b)编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,直到所有的有效等价类都被测试用例所覆盖(包含进去)
c)编写新的用例,覆盖一个且仅一个尚未被涵盖的无效等价类,直到所有的无效等价类都被测试用例所覆盖
2、边界值分析
边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
边界值分析法与等价划分存在两方面不同:
1)与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试
2)与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例
3、因果图
因果图有助于用一个系统的方法选择出高效的测试用例集。太还有一个好处,就是可以指出规格说明的不完整性和不明确之处。
因果图是一种形式语言,用自然语言描述的规格说明可以转换为因果图。因果图实际上是一种数字逻辑电路(一个组合的逻辑网络),但没有使用标准的电子学符号,而是使用了稍微简单点的符号。
4、错误猜测
错误猜测主要是一项依赖于直觉的非正规的过程,因此很难描述出这种方法的规程。
三、测试策略总结
1、如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法
2、在任何情况下都应使用边界值分析法
3、应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充
4、使用错误猜测技术增加更多的测试用例
5、针对上述测试用例集检查程序的逻辑结构