白盒测试与黑盒测试及其常用测试方法概念

一、白盒测试

白盒测试是对程序内部的逻辑结构进行检查,从中获取测试数据。

白盒测试主要包含如下测试方法:

1.语句覆盖

语句覆盖要求必须编写足够多的测试用例,使得每一个可执行的语句都至少被执行一次,语句覆盖常常被称为“最弱的覆盖”,因为它只考虑了可执行语句,但是无法测试隐式分支(比如:if判断中没有写出来的else),也没有考虑各个分支的组合。

2.判定(分支)覆盖

判定覆盖要求每个判断都必须有“true”和“false”两个结果,并且每条语句都至少被执行一次。判定覆盖弥补了语句覆盖的缺点,即隐式分支可以被测试到,这样,判定覆盖将所有的判断的每种可能的结果的至少执行一次。但是判定覆盖仍然存在问题,判定覆盖只强调了判断的结果,而忽略了判断的具体条件,所以依然可能遗漏部分的测试路径。

3.条件覆盖

条件覆盖要求编写足够多的测试用例以确保将每个判断中的每个条件的所有可能的结果都至少执行一次,弥补了判定覆盖的缺点。但是却有可能无法让每条语句都被执行到。

4.判定/条件覆盖

判定/条件覆盖综合了判定覆盖和条件覆盖的优缺点,判定/条件覆盖要求设计出足够多的测试用例,将每个判断中的每个条件的所有可能结果至少执行一次,将每个判断的所有可能的结果至少执行一次。但是仍然存在缺点,判定/条件覆盖没有考虑条件的组合情况,有些特定的条件会屏蔽掉其他的条件。

5.多重条件覆盖

多重条件覆盖能解决判定/条件覆盖中条件组合的问题,多重条件覆盖要求编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合至少执行一次

二、黑盒测试

黑盒测试将程序看成是一个黑盒子,不涉及程序内部的逻辑结构,而是通过规格说明对程序功能进行检查,从中获取测试数据。

黑盒测试主要包含如下测试方法:

1.等价类划分

由于对程序是不可能进行穷举输入测试的,所以我们可以去寻找最小子集以覆盖尽可能多的输入情况。等价类划分要求每个测试用例都要尽可能多的体现不同的输入情况,以减少测试用例的数量,同时需要将输入范围进行划分,划分为有限数量的等价类。使用等价类划分有两个步骤:

  1. 确定等价类:确定等价类是选取每一个输入条件并将其划分成两个或者更多的组。我们通常是确定两个等价类:有效等价类和无效等价类。有效等价类代表有效输入,无效等价类代表无效输入。
  2. 生成测试用例:使用等价类来生成测试用例,可以为每个等价类设置一个编号以方便记录。在编写测试用例时,需要尽可能多的去覆盖还没有覆盖过的有效等价类,直到所有的有效等价类都被覆盖。而对于无效等价类,则需要为每一个无效等价类都编写一个测试用例,因为如果一个测试用例覆盖了多个无效等价类,那么有些无效等价类的错误可能会被屏蔽掉。

2.边界值分析

经验证明,考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。边界值分析其实是对等价类划分进行了补充,因为在等价类划分中,并没有考虑到边界值,然而有很多错误都会出现在边界值附近。

边界值的概念可以想象成高等数学中极限,输入值就在边界值的附近,但是和极限不同的是,输入值可以等于边界值本身。例如:规定密码为1到6为纯数字组成,那么它有一个有效等价类为:1到6个数字,两个无效等价类为:0个数字,6个以上数字。这里的边界值为1和6,根据边界值分析,我们可以选取0,1,2,5,6,7个数字来设置测试用例。

综上:边界值分析考察正处于等价类划分边界或者边界附近的状态。

3.因果图分析

由于等价类划分和边界值分析都是着重考虑输入条件的罗列,但是却没有考虑输入条件的组合,这是等价类划分和边界值分析的缺点。而因果图弥补了这一缺点,因果图有助于用一个系统的方法选择出高效的测试用例集,它还有一个额外的好处,就是可以指出规格说明的不完整性和不明确之处。

因果图是一种形式语言,有点像简化版的逻辑电路,我们可以将规格说明转化为可视化的因果图,然后通过系统的方法的出测试用例集。

4.错误猜测

错误猜测是指在测试人员接到具体程序后,利用直觉和经验猜测出错的可能类型,然后编写测试用例来暴露这些错误。

错误猜测的基本思想是列举出可能犯的错误或错误易发情况的清单,然后依据清单来编写测试用例。

三、总结

以上所有的测试方法都无法在单独使用的情况下找到一个合理完整的测试用例集,因此,可以将这些测试方法进行组合,形成一个合理的策略。具体策略如下:

  1. 如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。
  2. 在任何情况下都应使用边界值分析方法。当然,有些条件可以被整合到因果图分析中。
  3. 应为输入和输出确定有效和无效等价类,在必要的情况下对上面已确认的测试用例进行补充。
  4. 使用错误猜测技术增加更多的测试用例。
  5. 针对上述测试用例集检查程序的逻辑结构(这里使用到白盒测试的测试方法)。

:参考来自《软件测试的艺术》(原书第3版)

发布了49 篇原创文章 · 获赞 10 · 访问量 9260

猜你喜欢

转载自blog.csdn.net/heibuliuqiu_gk/article/details/102139102