合肥工业大学 软件学院 软件质量保证与测试 第十章 黑盒测试

第十章 黑盒测试

1. 黑盒测试的作用

黑盒测试试图发现以下类型的错误:

  • 功能错误或遗漏
  • 界面错误
  • 数据结构或外部数据库访问错误
  • 性能错误
  • 初始化或终止错误

在这里插入图片描述

2. 等价类划分

  • 等价类划分法是一种黑盒测试的技术,不考虑程序的内部结构,是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。

  • 该方法是一种重要的,常用的黑盒测试用例设计方法。

2.1 等价类分类

  • 有效等价类
    • 指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合
    • 利用有效等价类可以检验程序是否实现了规格说明中所规定的功能和性能
  • 无效等价类
    • 与有效等价类的定义相反,不符合需求规格说明书

2.2 划分等价类的方法

六条划分等价类的原则

  • 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类

在这里插入图片描述

  • 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类

  • 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类

  • 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类

  • 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

  • 在确知己划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类

2.3 设计测试用例

先根据输入条件确定有效等价类和无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例。

  • 每一个等价类规定一个唯一的编号
  • 设计一个新的测试用例,使其尽可能多地覆盖尚末被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止
  • 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止

2.4 测试用例的完整性种类

2.4.1 弱一般等价类划分

遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值

在这里插入图片描述

2.4.2 弱健壮等价类划分

在弱一般等价类的基础上,增加取值为无效值的情况。“健壮”意味着程序要有容错性,取到无效值也要正确识别出来。对于有效输入,使用每个有效值类的一个值。对于无效输入,测试用例将拥有一个无效值,并保持其余的值是有效的

在这里插入图片描述

2.4.3 强一般等价类划分

遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值。例如变量X有3个等价类,变量Y有2个等价类,那么应设计3*2共6个用例。要覆盖所有的有效等价类组合

在这里插入图片描述

2.4.4 强健壮等价类划分

在强一般等价类的基础上,增加取值为无效值的情况。(不仅取单个无效值,也要取多个无效值)

在这里插入图片描述

2.4.5 例题

网页例题:https://zhuanlan.zhihu.com/p/112810758

老师例题请参见第十章PPT内的全部联系和例题讲解

此部分强烈建议联系以上例题进行理解

3.边界值分析法

3.1 边界条件

  • 如果在悬崖峭壁边可以自信地安全行走,平地就不在话下了
    • 如果软件在能力达到极限时能够运行,那么在正常情况下一般也就不会有什么问题
  • 边界条件是特殊情况,因为编程从根本上说不怀疑边界有问题
    • 奇怪的是,程序在处理大量中问数值时都是对的,但是可能在边界处出现错误

3.2 次边界条件

在这里插入图片描述

3.3 其他一些边界条件

  • 另一种看起来很明显的软件缺陷来源是当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,只按了Enter键。

    • 这种情况在产品说明书中常常被忽视,程序员也可能经常遗忘,但是在实际使用中却时有发生。

    • 程序员总会习惯性地认为用户要么输入信息,不管是看起来合法的或非法的信息,要么就会选择Cancel键放弃输入,如果没有对空值进行好的处理的话,恐怕程序员自己都不知道程序会引向何方

  • 正确的软件通常应该将输入内容默认为合法边界内的最小值,或者合法区间内的某个合理值,否则,返回错误提示信息

    • 因为这些值通常在软件中进行特殊处理,所以不要把它们与合法情况和非法情況混在一起,而要建立单独的等价区间

3.4 边界值的选择方法

  • 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据
  • 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
  • 根据规格说明的每个输出条件,使用前面的原则①
  • 根据规格说明的每个输出条件,应用前面的原则②
  • 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
  • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例
  • 分析规格说明,找出其他可能的边界条件

4. 补充

4.1 基于决策表的测试

在这里插入图片描述

4.2 因果图(鱼骨图法)

因果图 (Cause-effect diagram)法,是从用自然语言书写的程序规格说明的描述中找出原因(输入条件)和结果(输出或程序状态的改变),通过因果图转换为判定表

在这里插入图片描述

5. 因果图法

5.1 因果图设计方法

  • 分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类,而结果是输出条件
  • 分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”
  • 标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个标准的符号标明约束条
  • 把因果图转换成判定表
  • 为判定表中每一列表示的情况设计测试用例

5.2 因果图的基本图形符号

  • ①恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现。

  • ②非(~):若原因出现,则结果不出现;若原因不出现,则结果出现。

  • ③或(v):若几个原因中有1个出现,则结果出现;若几个原因都不出;现,则结果不出现。

  • ④与(^):若几个原因都出现,结果才出现。若其中有1个原因不出现,则结果不出现。

在这里插入图片描述

5.3 因果图的约束符号

  • E(互斥):表示a、b两个原因不会同时成立,两个中最多有一个可能成立。

  • I(包含):表示a、b、c这3个原因中至少有一个必须成立。

  • O(惟一):表示a和b当中必须有一个,且仅有一个成立。

  • R(要求):表示当a出现时,b必须也出现。a出现时不可能b不出现。

  • M(屏蔽):表示当a是1时,b必须是0。而当a为0时,b的值不定。

在这里插入图片描述

5.4 例题

测试用例

在这里插入图片描述
在这里插入图片描述

因果图

在这里插入图片描述

判定表

在这里插入图片描述

6. 功能图法

  • 一个程序的功能说明通常由动态说明和静态说明组成。

    • 动态说明描述了输入数据的次序或转移的次序。

    • 静态说明描述了输入条件与输出条件之间的对应关系。

  • 对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的,必须用动态说明来补充功能说明。

6.1 功能图设计方法

  • 功能图方法是用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。

  • 功能图模型由状态迁移图和逻辑功能模型构成。

    • 状态迁移图用于表示输入数据序列以及相应的输出数据。在状态迁移图中,由输入数据和当前状态決定输出数据和后续状态。

    • 逻辑功能模型用于表示在状态中输入条件和输出条件三间的对应关系。逻辑功能横型只适用于描述静态说明,输出数据仅由输入数据决定。测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成。

  • 功能图方法实际上是一种黑盒、白盒混合用例设计方法。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.2 功能图法生成测试用例

从功能图生成测试用例的过程如下。

  • 生成局部测试用例
    • 在每个状态中,从因果图生成局部测试用例。局部测试库由原因值(输入数据)组合与对应的结果值 (输出数据或状态)
      构成。
  • 测试路径生成
    • 利用上面的规则生成从初始状态到最后状态的测试路径。
  • 测试用例合成
    • 合成测试路径与功能图中每个状态的局部测试用例。结果是视状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据组合。
  • 测试用例的合成算法
    • 采用条件构造树。

7. 黑盒测试方法的比较与选择

在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陆离_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值