测试用例的设计
在所有可能的测试用例中,哪个子集最有可能发现最多的错误?
先使用黑盒测试方法来设计测试用例,然后视情况需要使用白盒测试方法来设计补充的测试用例。
4.1、白盒测试
白盒测试关注的是测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度
1、逻辑覆盖测试
语句覆盖
判定覆盖或分支覆盖使得每一个判断都至少有一个为真和为假的输出结果,也就是每条分支路径都必须至少遍历一次。
条件覆盖将一个判断中的每个条件的所有可能的结果至少执行一次。
判定/条件覆盖条件覆盖或判定/条件覆盖准则不易的那个会发现逻辑表达式中的错误。
多重条件覆盖将每个判断中的所有可能的条件结果的组合以及所有的入口点都至少执行一次。
2、等价划分
1、严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量。
2、它覆盖了大部分其他可能的测试用例,也就是说,它会告诉我们,使用或不适用这个特定的输入集合,哪些错误会被发现,哪些会被遗漏掉。
设计步骤:
1、 确定等价类
1、选取每一个输入条件(通常是规格说明中的一个句子或短语)并将其划分为两个或更多的组。
2、如果输入条件规定了一个取值范围(例如,“数量可以是从1到999”),那么就应确定出一个有效等价类(1<数量<999),以及两个无效等价类(数量<1,数量>999)。
3、如果输入条件规定了取值的个数(例如,“汽车可登记一至六名车主”),那么就应确定出一个有效等价类和两个无效等价类(没有车主,车主多于六个)。
4、如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同处理(例如,“交通工具的类型必须是公共汽车、卡车、出租车、火车和摩托车”),那么就应为每个输入住确定一个有效等价类和一个无效等价类(例如,“拖车”)。
5、如果存在输入条件规定了“必须是”的情况(例如,“标识符的第一个字符必须是字母”),那么就应确定出一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母)。
如果有任何理由可以认为程序并未等同地处理等价类中的元素,那么应该将这个等价类再划分为小一些的等价类。
2、生成测试用例
1、为每个等价类设置一个不同的编号
2、编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,直到所有的有效等价类被测试用例所覆盖。
3、编写新的用例,覆盖一个且仅一个尚未被涵盖的无效等价类,直到所有的无效等价类被测试用例所覆盖。
3、一个范例
4、边界值分析
经验证明,考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。
所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
1、与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。
2、与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例。
设计指南:
1、如果输入条件规定了一个输入值范围,那么应针对范围的边界值设计测试用例,针对刚刚越界的情况设计无效输入测试用例。
2、如果输入条件规定了一个输入值的数量,那么应针对最小数量输入值、最大数量输入值,以及比最小数量少一个、比最大数量多一个的情况设计测试用例。
3、对每个输出条件应用指南1。
4、对每个输出条件应用指南2
5、如果程序的输入或输出是一个有序序列(例如顺序的文件,线性列表或表格),则应特别注意该序列的第一个和最后一个元素。
6、此外,发挥聪明才智找出其他的边界条件。
边界值分析方法和等价划分之间的重要区别是,边界值分析考察正处于等价划分边界或在边界附近的状态。
5、因果图
因果图有助于用一个系统的方法选择出高效的测试用例集,它还有一个额外的好处,就是可以指出规格说明的不完整性和不明确之处。
因果图是一种形式语言,用自然语言描述的规格说明可以转换为因果图,因果图实际上是一种数字逻辑电路(一个组合的逻辑电路),但没有使用标准的电子学符号,而是使用了稍微简单点的符号。
生成测试用例过程:
1、将规格说明分解为可执行的片段,这是必须的步骤,因为因果图不善于处理较大的规格说明。
2、确定规格说明中的因果关系。所谓“因”,是指一个明确的输入条件或输入条件的等价类。所谓“果”,是指一个输出条件或系统转换(输入对程序或系统状态的延续影响)。因果关系一旦确定下来,每个“因”和“果”都被赋予一个唯一的编号。
3、分析规格说明的语义内容,并将其转换为连接因果关系的布尔图,这就是所谓的因果图。
4、给图加上注解符号,说明由于语法或环境的限制而不能联系起来的“因”“果”。
5、通过仔细地跟踪图中的状态变化情况,将因果图转换成一个有限项的判定表,表中的每一列代表一个测试用例。
6、将判定表中的列转换成测试用例。
因果图方法是一个根据条件的组合而生成测试用例的系统性的方法,可以替代这种方法的是特殊选取的条件组合,但会有遗漏。
4.2、错误猜测
4.3、测试策略
1、如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。
2、在任何情况下都应使用边界值分析方法。
3、应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充。
4、使用错误猜测技术增加更多的测试用例。
5、针对上述测试用例集检查程序的逻辑结构,应使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则。