黑盒测试9种常用方法

黑盒测试9种常用方法包括 等价类划分 边界值分析 BVA 因果图 判定 决策 表 组合覆盖 pairwise 正交表法 OATS 功能图法 场景设计法 错误推测法 其中易考 等价类划分 BVA 和场景法 其中同时属于白盒测试的有 BVA 功能图法

测试用例

  1. 组成
    测试用例 = 输入(测试步骤和测试数据)+输出(期望结果)+ 测试环境(系统环境设置)
  2. 编写时机
    通常在测试设计阶段来写,即在《需求规格说明书》和《测试计划》都已完成之后
  3. 编写标准
    唯一标准:用户需求
  4. 参考资料
    《需求规格说明书》和软件原型。
  5. 作用
    测试过程中的重要参考依据,好的用例被重复使用使得测试过程事半功倍。

黑盒测试

  1. 来由
    任何程序都可以看作是从输入定义域到输出值域的映射,将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。即不关心结构,只关心输入输出。
  2. 定义
    现代黑盒测试是从一种从软件外部对软件实施的测试,也称基于规格说明的测试。
    黑盒测试是从用户观点出发的测试,其目的是尽可能发现软件的外部行为错误。

  3. 检测内容
    检测软件功能能否按照需求规格说明书的规定正常工作,是否有功能遗漏;
    检测是否有人机交互错误,是否有数据结构和外部数据库访问错误,是否能恰当地接收数据并保持外部信息(如数据库或文件)等的完整性;
    检测行为、性能等特性是否满足要求等;
    检测程序初始化和终止方面的错误等。



  4. 优点
    软件实现发生了变化,测试用例仍然可以使用;
    可以和软件实现同时进行,因此可以压缩项目总的开发时间。

下面介绍黑盒测试常用的9种方法。

等价类划分法

  1. 定义
    根据程序规格说明书把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。
  2. 等价类
    等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的
    分为有效等价类和无效等价类
    有效等价类:对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明中所规定的功能和性能。
    无效等价类:与有效等价类的定义恰巧相反。
    设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受异常数
    据的考验。经过正反的测试才能确保软件具有更高的可靠性





  3. 确定等价类的6个原则
    ①输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
    在这里插入图片描述
    ②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
    在这里插入图片描述
    ③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
    在这里插入图片描述
    ④多输入的或关系
    在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
    ⑤多输入的且关系
    在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
    ⑥细分等价类
    在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。











  4. 根据等价类创建测试用例的步骤
    (a) 建立等价类表,列出所有划分出的等价类:
    在这里插入图片描述
    (b) 为每个等价类规定一个唯一的编号;
    © 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
    (d) 重复©,最后使得所有有效等价类均被测试用例所覆盖;
    (e) 设计一个新的测试用例,使其只覆盖一个无效等价类。
    (f) 重复(e)使所有无效等价类均被覆盖。
    tips:有效等价类和无效等价类都要被覆盖,但覆盖原则不同。







  5. 进一步理解等价类划分法
    规格说明往往没有定义无效测试用例期望输出应该是什么样的。因此,测试人员需要花费大量时间来定义这些测试用例的期望输出。
    等价分类的目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。选择了不完全测试,就要冒一定的风险,所以必须仔细选择分类。
    测试同一个复杂程序的两个软件测试人员,可能会指定出两组不同的等价区间。只要审查认为足以覆盖测试对象就可以了。


  6. 小试牛刀(作业)
    在这里插入图片描述
    在这里插入图片描述
    参考答案
    在这里插入图片描述



边界值分析法(BVA)

  1. 来由
    边界值和等价类密切相关,输入等价类和输出等价类的边界是要着重测试的边界情况。在等价类的划分过程中就产生了许多等价类边界。边界是最容易出错的地方,所以,从等价类中选取测试数据时应该关注边界值。
  2. 基本思想
    选取正好等于刚刚大于刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
  3. 边界
    边界是指相对于输入等价类和输出等价类而言,稍高于边界值及稍低于其边界值的一些特定情况。
  1. 实例
    以下实例同时用上了等价类和BVA测试方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    评价:该测试方法的涉及违反了单故障假设,并不好。




背景:当输入之间有了关联,如:约束关系和组合关系,等价类划分和BVA将不再适用,必须考虑使用一种适合于描述对于多种条件的组合,产生多个相应动作的测试方法(指先因果图后判定表)。
在这里插入图片描述

判定表法

  1. 判定表
    判定表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。
    条件(作为输入)和活动(作为输出)两部分组成。
    组成元素
    在这里插入图片描述



  2. 判定表的制定
    在这里插入图片描述
  3. 适合使用判定表设计测试用例的条件
    a. 规则说明以判定表的形式给出,或很容易转换成判定表。
    b. 条件和规则的排列顺序不影响执行哪些操作。
    c. 当某一条规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
    d. 如果某一规则要执行多个操作,这些操作的执行顺序无关紧要。



  4. 示例
    在这里插入图片描述

因果图法

  1. 定义
    借助图形,着重分析输入条件的各种组合,每种组合条件就是“因”,输出的结果就是“果”。
    因果图是一种形式化的图形语言,实质上是使用简化记号表示数字逻辑图,不仅能发现输入、输出中的错误,还能指出程序规范中的不完全性和二义性。

  2. 因果图法生成测试用例的步骤
    在这里插入图片描述
  1. 符号分析
    分为基本符号(即输入和输出之间)和约束符号(即输入之间、输出之间)两大类
    基本符号有:恒等、非、或、与四类,图形都很好记
    约束符号有:
    互斥(Exclusion)
    或(不知道为啥写成I)
    唯一(Only)
    要求(Require)
    屏蔽(Mask)
    在这里插入图片描述
    背景:实际中每个条件不只有“是”“否”两个值,当输入条件的个数和输入条件的取值可能都很多,组合数就是很大的数字,决策表已经无能为力。









组合覆盖法

正交实验法

  1. 确定影响功能的因子与状态
  2. 选择一个合适的正交表
  3. 利用正交表构造测试数据集

对比pairwise和OTDM

共同点
两者使用频率最高的均是两两组合,前提也都是基于“缺陷大部分发生在参数两两组合的情况下,三个参数组合导致的缺陷并不多见”。
两者的父集均是笛卡尔集。
不同点
两者采用的筛选方式稍显不同,配对测试选择的是所有的两两组合所构成的测试用例;
正交表在此基础上做了更进一步的筛选,使得结果更加精炼。
选择建议
在因子水平数比较少的情况下,采用配对测试方法。因为测试组合数更加全面一些,当然在某些因子水平数时,两者最后筛选出的结果可能是一致的。
在因子水平数比较多的情况下,采用正交表测试,因为可以得到更加精炼的测试组合,从而使测试效率得到提升。







因果图、决策表和pairwise选用建议

功能图法(黑白盒混合)

功能图法就是使用功能图形式化地表示程序的功能说明,并机械地生成功能图地测试用例。

功能图的两个组成部分——状态迁移图(state transition diagram STD)和逻辑功能模型(logic function model LFM)。

STD用于表示输入数据序列以及相应的输出数据,由输入和当前地状态决定输出数据和后续状态。

LFM用于表示在状态输入条件和输出条件之间的对应关系。LFM只适合于描述静态说明,输出数据仅由输入数据决定。

后续要用到基本路径覆盖法。

场景设计法

多数软件系统都是用事件触发来控制业务流程,事件触发时的情景便形成了场景,场景的不同触发顺序构成了用例。
特点:测试人员要充分发挥对用户实际业务场景的想象,关心用户做什么,而不是关心产品做什么。
优点:实用性强,有效,设计出来的用例有价值。
缺点:可能使用的场景不一定能对事件系列进行全面的分析,设计出来的用例不完整。


错误推测法

  1. 定义
    测试者根据经验、知识和直觉来发现软件的错误,来推测程序中可能存在的各种错误,从而有针对性地进行测试。
  2. 特点
    没有依据,只能靠测试者自身实力;
  3. 优点
    快速切入体会到程序易用与否;
  4. 缺点
    难以准确知道测试覆盖率。
  5. 地位
    作为辅助方法(不像BVA是必用的黑盒测试方法)
  6. 基本思想
    软件测试的原则5-错误存在集群现象
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176118.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:40
下一篇 2026年3月26日 下午10:40


相关推荐

  • iscsiadm 命令的总结「建议收藏」

    iscsiadm 命令的总结「建议收藏」iscsiadm的命令汇总1.发现iscsi存储:iscsiadm-mdiscovery-tst-pISCSI_IP2.查看iscsi发现记录iscsiadm-mnode3.删除iscsi发现记录iscsiadm-mnode-odelete-TLUN_NAME-pISCSI_IP4.登录iscsi存储…

    2022年8月22日
    10
  • offset宏定义_vba left函数

    offset宏定义_vba left函数最近做某项目撸代码时用到了offsetof宏,第一次使用这个宏,项目结束后对其用法也略知一二,现分享如下。位于stddef.h中的offsetof()宏,是获得struct中某成员相对于struct首地址的偏移量,以byte为单位,用struct首地址加该偏移量获得该成员的实际地址时,要把struct首地址强制转换成以byte为计数单位,地址本身一般都是32位(与芯片架构有关),强制转换的计数单位…

    2022年8月22日
    10
  • 曼彻斯特编码、差分曼彻斯特编码怎么画;曼彻斯特编码、差分曼彻斯特编码的画法

    曼彻斯特编码、差分曼彻斯特编码怎么画;曼彻斯特编码、差分曼彻斯特编码的画法网上看了很多讲解 总感觉不是很全面 在此小结一下 先看个例子 试画出 Ox52B7 的曼彻斯特编码及差分曼彻斯特编码首先 Ox52B7 00111B 曼彻斯特编码画法 差分曼彻斯特编码画法 口诀 0 立即跳变 1 延迟跳变

    2026年3月16日
    2
  • Thinkpad x200 X201拆机换风扇教程 实图

    Thinkpad x200 X201拆机换风扇教程 实图X200机器取下电池后,背面图:上图:背部合计16颗螺丝,规格长度下面8有标注。1.黄色圈—–屏轴螺丝2.蓝色圈—-硬盘螺丝3.黑色圈—-键盘螺丝4.灰色圈—-SIM卡插槽(X200内部有扩充模块插槽这个插槽也可插询盘,X200均预留了WWAN天线在屏里面)5.绿色圈—-掌托/U形框螺丝6.红色方圈—-排水槽(是防水泼而不是防水,想起有个客户向别人炫耀往键盘上…

    2022年6月27日
    112
  • 【机器学习中的数学】多项式分布及其共轭分布

    【机器学习中的数学】多项式分布及其共轭分布多项变量(MultinomialVariables)二元变量是用来描述只有两种可能值的量,而当我们遇到一种离散变量,其可以有K种可能的状态。我们可以使用一个K维的向量x表示,其中只有一维xk为1,其余为0。对应于xk=1的参数为μk,表示xk发生时的概率。其分布可以看做是伯努利分布的一般化。现在我们考虑N个独立的观测D={x1,…,xN},得到其似然函数。如图:

    2022年10月11日
    5
  • python postmessage_postmessage用法详解

    python postmessage_postmessage用法详解postmessage用法关于html5的PostMessage的用法总结大家都知道,网页之间传递数据可以使用ajax请求来完成,今天我总结下我学习的postMessage是如何完成跨页面请求数据的呢?首先,postMessage是html5新增的一个解决跨域的一个方法。那他是如何使用的呢?这里我把一个案例分享出来把。相关视频教程推荐:html视频教程看下面的代码:test.htmlonmessa…

    2022年7月13日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号