您的位置:首页 > 其它

【读书笔记】软件测试的艺术第4章

2015-07-17 16:58 267 查看

第4章 测试用例的设计

黑盒测试:等价类划分、边界值分析、因果图分析、错误猜测

白盒测试:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖

推荐步骤:先使用黑盒测试方法来设计测试用例,然后视情况需要使用白盒测试方法来设计补充的测试用例。

白盒测试

白盒测试:关注的是测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。

1.逻辑覆盖测试

语句覆盖是白盒测试中较弱的准则,通常没有什么用处。判定覆盖或分支覆盖式较强的一些逻辑覆盖准则。该准则要求必须编写足够的测试用例,使得每一个判断都至少有一个为真和为假的输出结果。换句话说,每条分支路径都必须至少遍历一次。分支或判定语句的例子包括switch、do-while和if-else语句。

判定覆盖通常可以满足语句覆盖。判定覆盖是一种比语句覆盖更强的准则,但仍然相当不足。

比判定覆盖更强一些的准则是条件覆盖。在条件覆盖的情况下,要编写足够的测试用例以确保将一个判断中的每个条件的所有可能的结果至少执行一次。

判定/条件覆盖准则要求设计出充足的测试用例,将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次。

判定/条件覆盖准则的一个缺点是尽管看上去所有条件的所有结果似乎都执行到了,但由于有些特定的条件会屏蔽掉其他的条件,常常并不能全部执行到。举例来说,如果“与”表达式中有个条件为“假”,那么就无需计算该表达式中的后续条件。同样,如果“或”表达式中有个条件为“真”,那么后续条件也无需计算。因此,条件覆盖或判定/条件覆盖准则不一定会发现逻辑表达式中的错误。

多重条件覆盖准则能够部分解决这个问题。该准则要求编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。

在存在循环的情况下,多重条件覆盖准则所需要的测试用力的数量通常会远远小于其路径的数量。

总的来说,对于包含每个判断只存在一种条件的语句,最简单的测试准则就是设计出足够数量的测试用例,实现1)将每个判断的所有结果都至少执行一次;2)将所有的程序入口都至少调用一次,以确保全部的语句都至少执行一次。

而对于包多重条件判断的程序,最简单的测试准则是设计出足够数量的测试用例,将每个判断的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。

2.等价划分

1)严格控制测试用例的增加,减少未达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量。

2)它覆盖了大部分其他可能的测试用例。也就是说,它会告诉我们,使用或不使用这个特定的输入集合,哪些错误会被发现,哪些会被遗漏掉。

确定等价类

需要确定两类等价类:有效等价类代表对程序的有效输入,而无效等价类代表的则是其他任何可能的输入条件。

3.边界值分析

考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。边界值分析方法与等价划分方法存在两方面的不同:

1)与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类得每个边界都经过一次测试。

2)与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例。

4.因果图

边界值分析和等价划分的一个弱点是未对输入条件的组合进行分析。因果图有助于用一个系统的方法选择出高效的测试用例集。它还有一个额外的好处,就是可以指出规格说明的不完整性和不明确之处。因果图是一种形式语言,用自然语言描述的规格说明可以转换为因果图。因果图实际上是一种数字逻辑电路,但没有使用标准的电子学符号,而是使用了稍微简单的符号。除了了解布尔逻辑之外,不需要掌握电子学方面的知识。

错误猜测

错误猜测主要是一项依赖于直觉的非正规的过程,因此很难描述出这种方法的规程。其基本思想是列举出可能犯的错误或错误易发情况的清单,然后依据清单来编写测试用例。

测试策略

一组合理的策略如下:

如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。

在任何情况下都应使用边界值分析方法。应记住,这是对输入和输出边界进行的分析。边界值分析可以产生一系列补充的测试条件,但是,也正如“因果图分析”一节所述,多数甚至全部条件都可以被整合到因果图分析中。

应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充。

使用错误猜测技术增加更多的测试用例。

针对上述测试用例检查程序的逻辑结构。应使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则(最后的一个最为完整)。如果覆盖准则未能被前四个步骤中确定的测试用例所满足,并且满足准则也并非不可能,那么增加足够数量的测试用例,以使覆盖准则得到满足。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: