版权声明:知识共享-署名-相同方式共享(CC-BY-SA) https://blog.csdn.net/engrossment/article/details/90343156
- 软件测试的艺术,第三版。
- 豆瓣读书:https://book.douban.com/subject/10549782/
测试用例设计的基调
首先,“完全的测试是不可能的”,意思是我们不可能设计出全部的测试用例来对软件进行测试。正确的方法是,在所有可能的测试用例中,找出有可能发现最多错误的那个用例子集。
这就需要用的一定的测试策略,包括黑盒测试和白盒测试两大类。对于白盒测试,主要就是从覆盖程序的逻辑结构出发设计测试用例。而黑盒测试包括等价类划分、边界值分析、因果图分析、错误猜测几类。
组合的测试策略:
- 如果规格说明中包含输入条件的组合情况,应首先使用因果图分析方法。
- 在任何情况下都使用边界值分析方法。
- 注意同时考虑有效等价类和无效等价类。
- 用错误猜测技术增加更多的测试用例。
- 使用白盒测试的覆盖分析方法针对上述测试用例集的覆盖情况进行检查。
白盒测试
白盒测试的逻辑覆盖的几个层次:
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定/条件覆盖
- 多重条件覆盖
最后的多重条件覆盖是覆盖情况最好的,对于前面几个的覆盖情况也是包含的关系。其用例设计方法为:
- 将每个判断的所有结果都至少执行一次。
- 将每个判断的所有可能的条件结果的组合都至少执行一次。
- 将所有的程序入口都至少调用一次。
黑盒测试
等价划分
等价类:如果等价类的某个测试用例发现了某个错误,该等价类的其他测试用例也应该能发现这个错误。相反,如果该测试用例没能发现错误,那么其他测试用例也不能发现错误。当然了,这是一个理想状态下的划分。
有效等价类与无效等价类:有效等价类代表对程序的有效输入,而无效等价类代表的是其他任何可能的输入条件。
根据给定的输入规则和外部条件确定等价类:
- 如果输入条件规定了一个取值范围,确定一个处于范围的有效等价类,两个在范围两端之外的无效等价类。
- 如果输入条件规定了取值的个数,确定一个符合个数规定的有效等价类,一个没有输入的、一个超出个数的无效等价类。
- 如果输入条件规定了一个输入值的集合,确定集合里每一个元素一个有效等价类,一个集合之外的值的无效等价类。
- 如果存在输入条件规定了“必须是”的情况,确定一个满足的有效等价类,一个不满足的无效等价类。
然后就可以根据确定好等价类进行用例设计了。原则是:
- 设计测试用例,尽量覆盖多个还没被用例覆盖的有效等价类,直到全部覆盖。
- 设计测试用例,一次只覆盖一个无效等价类,直到全部覆盖。
边界值分析
所谓边界条件,是指输入和输出的可能情况中那些恰好处于边界、超过边界、在边界以下的情况。这与等价类是有点相似,不同点在于:
- 等价类没那么关注刚好处于边界值的情况。
- 等价类没那么关注输出的边界情况。
分析指南:
- 如果输入条件规定了一个取值范围,应当设计两个边界值、两个边界值之外取值的共 4 个用例。
- 如果输入条件规定了输入值的数量,应当设计一个 0 个、一个最小数量、一个最大数量、一个超出范围共 4 个用例。
- 对每个输出条件应用指南 1 。
- 对每个输出条件应用指南 2 。
- 如果输出或输出是一个有序序列,需要特别注意覆盖序列的第一个和最后一个元素。
因果图分析
前面的等价类划分和边界值分析只关注与软件的输入和输出规格,对于更多的规格说明,可以对应整理出因果图进行进一步的逻辑分析,从一个不同的视角,或者说更系统性的视角来设计测试用例。其分析设计过程如下:
- 将规格说明分解为可执行的片段。
- 确定规格说明中的因果关系。
- 分析规格说明的语义内容,将其转换为连接因果关系的布尔图。
- 给图加上输出输出的约束关系说明等注解符号。
- 跟踪因果图的状态变化,转换为一个判定表。
- 将判定表中的列转换为测试用例。
错误猜测
错误猜测不算是什么测试用例设计的策略。其实就是设计人员的潜意识和直觉。不过也是有其特点:
- 根据经验列出可能犯的错误和容易犯错误的地方,然后针对设计用例。
- 针对规格说明书中未明确说明,程序员认为显而易见的或包含程序员“假设”的地方进行用例设计。
廖杰良 - 2019-05-19