【软件测试】第2章 黑盒测试

系列文章目录



前言


【 第2章 黑盒测试 】

  • 黑盒测试:功能测试或数据驱动测试
  • 测试对象:需求规格说明书和用户手册
  • 动态黑盒测试分类:
    • 功能测试:等价类划分、边界值分析、因果图、错误推测、判定表、功能图法
    • 非功能测试:性能测试、强度测试、兼容性测试、配置测试、安全性测试

2.1 等价类划分

  1. 方法简介
  • 根据等价关系对输入数据或输出数据的集合进行划分
  • 对揭露系统中的缺陷来说,子集中的每个输入条件是等效的
  • 从每个子集中选取少数代表性的数据做为测试用例
  • 将集合划分为互不相交(无冗余性)的子集,且这些子集的并是整个集合(完备性)
    在这里插入图片描述
  1. 划分等价类
  • 等价类划分包括两种情况:

    • 有效等价类:是指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合
    • 无效等价类:是指对于程序规格说明来说,是不合理的、无意义的输入数据构成的集合
  • 等价类的划分原则:

    • 按区间划分:如果可能的输入数据属于一个取值范围或规定了取值个数,则可以确定1个有效等价类和2个无效等价类
    • 按数值划分:如果规定了输入数据的一组值,且程序对于每个值分别进行处理,则可为每一个输入值确立1个有效等价类,为这组值确立1个无效等价类
    • 按输入集合划分:如果规定了输入值的集合,则可以确定1个有效等价类和1个无效等价类
    • 按限制条件划分:如果输入条件是一个布尔量时,可确立1个有效等价类和1个无效等价类
    • 按限制规则划分:如果规定了输入数据必须遵守的规则,可确立1个有效等价类和若干个无效等价类
    • 按处理方式划分:在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,应将该等价类进一步划分
  • 确立等价类后,建立等价类表
    在这里插入图片描述

  • 再从划分出的等价类中选择测试用例

  1. 确定测试用例
  • 选择测试用例的原则:
    • 为每一个等价类规定一个唯一的编号
    • 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类;重复这一步骤,直到所有的有效等价类都被覆盖为止
    • 设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这一步骤,直到所有的无效等价类都被覆盖为止
  1. 应用实例PPT

( PASS )

  1. 传统等价类测试存在的问题
  • 规格说明往往没有定义无效测试用例的期望输出应该是什么样的。因此,测试人员需要花费大量时间来定义这些测试用例的期望输出
  • 在“合理分类”基础上,未实现“精心挑选”
  • 强类型语言、图形化用户界面没有必要考虑过多无效输入
  • 适合处理输入条件相互独立的情况,若存在联系则很难描述,且测试效果无法保障
  1. 等价类划分方法分类
  • 弱一般等价类
    • 单缺陷原则:缺陷极少是由两个或多个缺陷的同时发生引起的
    • 遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值
    • 两变量x1, x2的函数
      • a≤x1≤d, 区间 [a, b), [b, c), [c, d]
      • e≤x2≤g, 区间 [e, f), [f, g]
        在这里插入图片描述
  • 强一般等价类
    • 遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的笛卡尔乘积,即所有变量所有取值的所有组合,取值为有效值
    • 两变量x1, x2的函数
      • a≤x1≤d, 区间 [a, b), [b, c), [c, d]
      • e≤x2≤g, 区间 [e, f), [f, g]
        在这里插入图片描述
  • 弱健壮等价类
    • 弱:基于单缺陷假设
    • 健壮:考虑无效值
    • 对有效输入,使用每个有效等价类的一个值
    • 对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的
    • 在弱一般等价类的基础上增加取值为无效值的情况
      在这里插入图片描述
  • 强健壮等价类
    • 强:基于多缺陷假设
    • 健壮:考虑无效值
    • 对有效和无效输入,使用笛卡尔积的每个元素获得测试用例
    • 在强一般等价类的基础上增加取值为无效值的情况
      在这里插入图片描述
  1. 等价类划分方法分类—总结

在这里插入图片描述

  • 举例:NextDate函数、佣金问题

2.2 边界值分析

  1. 方法简介
  • 大量错误是发生在输入或输出范围的边界上,而不是在输入或输出范围的内部
  • 在测试过程中,边界值分析法是通过选择等价类边界的测试用例进行测试
  • 边界值分析方法与等价类划分的区别:
    • 边界值/典型值、任意值
    • 考虑输出域边界
  1. 单变量边界值的选取原则
  • ① 如果输入条件规定了取值范围,或规定了值的个数,测试用例选择方案:
    • 五点法:选择最小值,略高于最小值,正常值,略低于最大值,最大值
    • 七点法:选择略低于最小值,最小值,略高于最小值,正常值,略低于最大值,最大值,略高于最大值
      在这里插入图片描述
  • ② 针对规格说明的每个输出条件使用原则①
  • ③ 如果规格设计中提到的输入输出是个有序的集合(顺序文件、表格等),就应注意选取有序集中的第一个和最后一个元素作为测试用例
  • ④ 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例
  • ⑤ 分析规格说明,找出其他可能的边界条件
  1. 单变量边界值的选取原则-三点法
  • 三点:
    • 上点:边界上的点,闭内开外(闭指域的边界是封闭的,即闭区间;开指域的边界是开放的,即开区间)
    • 离点:离上点最近的点称为离点。开内闭外
    • 内点:域范围内的任意一点
  • 闭区间:上点为可以取值的点,在上点之间任取一点就是内点。而紧邻上点范围之外的第一对点被称为离点(也称为外点)
    在这里插入图片描述
  • 开区间:开区间中,上点与内点的定义仍然不变。而离点就是上点内部范围内紧邻的一对点
    在这里插入图片描述
  • 半开半闭区间:上点与内点的定义不变。离点是开区间一侧上点内部范围内紧邻的点,而在闭区间一侧是上点外部范围内紧邻的点
    在这里插入图片描述

2.3 因果图法

  1. 方法简介
  • 等价类划分法和边界值分析法——输入条件相互独立
  • 如果输入条件之间存在联系,则很难描述,测试效果难以保障
  • 因果图法适合于描述对于多种条件的组合,相应产生多个动作的形式
  • 因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况
  1. 因果图表示方法
  • Ci 表示原因,用 Ei 表示结果,各结点表示状态,可取值 “0”或“1”
    • 原因:输入条件的有效等价类
    • 结果:预期输出
      在这里插入图片描述
  • 输入状态相互之间可能存在某些依赖关系,称为约束
    在这里插入图片描述
  1. 因果图法测试用例的设计步骤
  • 确定软件规格说明中的原因和结果。
    • 并给每个原因和结果赋予一个标识符
  • 确定原因和结果之间的逻辑关系。
    • 分析软件规格说明中的语义
    • 找出原因与结果之间、原因与原因之间对应的关系
    • 根据这些关系画出因果图
  • 在因果图上使用标准的符号标明约束条件
  • 把因果图转换成判定表
  • 为判定表中的每一列设计测试用例
  1. 应用实例

(PASS)

因果图分析法设计要点:

  • 为了实现问题简化,原因只描述输入条件的有效等价类;原因和结果尽可能描述为逻辑值形式
  • 为了确保测试的充分性,复合输入条件需拆分为简单条件
  • 分析思路:从结果入手,分析结果与原因间存在的关系
  • 结果分析顺序:
    • 若结果间不存在递进关系,则一般从最简单的开始分析
    • 若结果间存在递进关系,则必须按顺序进行分析
  • 中间结果的确定:
    • 原本拆分的输入条件,需通过中间结果合并描述其逻辑关系
    • 多个输入条件间存在紧密依赖关系,考虑增加中间结果
    • 一个结果与多个原因间存在关系,不是纯粹的与/或关系,需要增加中间结果
    • 某输出以某输入作为前提条件,为了后续分析的顺利进行,必须增加中间结果
  • 原因间约束的确定:
    • 需从最终用户角度出发,考虑对用户输入的限制
    • 重点关注互斥、包含和唯一关系

要点小结

  • 原因:一般规则、逻辑值(真)、复合条件拆分
  • 结果:一般预期输出
  • 关系:实线、原因/关系之间
  • 约束:虚线
  • 原因间:
    • 互斥(E):至多有一个成立
    • 包含(I):至少有一个成立
    • 位移(O):有且只有一个成立
    • 需求(R)
  • 结果间:屏蔽(M)

2.4 判定表驱动

在这里插入图片描述

  1. 方法简介
  • 判定表是分析和表达多逻辑条件下执行不同操作的情况下的工具
  • 判定表的四部分
    在这里插入图片描述
  • 生成条件表的规则:
    • 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则
    • 化简:就是把有两条或多条具有相同的动作,并且其条件项之间存在着极为相似的关系的规则合并
    • “-”:不关心条目,表示条件无关或者条件不适用,也可通过n/a表示条件不适用
      在这里插入图片描述
  1. 建立判定表的步骤
  • 列出所有的条件桩和动作桩
  • 确定规则的个数,假如有n个条件,每个条件有两个取值,故有2n 种规则
  • 填入条件项和动作项,得到初始判定表
  • 简化,合并相似规则(相同动作)
  • 为判定表中的每一列设计测试用例
  1. 方法实例

【例 2.10】在某系统的注册页面中,规则如下:
① 用户名为必填项,若该项不符合要求,则提示“请输入用户名”;
② 密码长度大于4位小于8位,由纯字母、纯数字或者字母加数字组成,若用户名有效,且该项不符合要求,则提示“密码输入有误”;
③ 确认密码必须与密码完全一致。若用户名和密码均有效,该项不符合要求,则提示“确认密码输入有误”;
④ 若用户名、密码和确认密码均有效,则提示“注册成功”。

在这里插入图片描述

  1. 判定表的优缺点
  • 优点:能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏
  • 缺点:
    • 难以直接从需求规格说明书中直接获取输入和输出之间的因果关系
    • 测试用例数目较多
    • 不擅长处理条件/动作为非逻辑值的情况

2.5 正交试验法

  1. 方法简介
  • 依据Galois理论,从大量的(实验)数据(测试用例)中挑选适量的,有代表性的点(条件组合),从而合理的安排实验(测试)的一种科学实验设计方法
  • 实验指标:判断实验结果优劣的标准
  • 因子:可能影响实验指标的条件
  • 因子的水平(状态):影响实验因子的条件
  1. 测试步骤
  • (1) 提取功能说明,构造因子-状态表
    • 分解功能要求,确定因子状态(采样取值),并构造因子-状态二维表
      在这里插入图片描述
  • (2) 加权筛选,生成因素分析表
    • 将各个因子的权值ωi相加,得到权总和SUM
      在这里插入图片描述
    • 将各个因子的权分别除以权总和,得到各因子的权在权总和中所占的比例
      在这里插入图片描述
    • 选择筛选标准
      • 采用因子数倒数的一半,即 1/(2n) 作为权比例标准值
      • 将各因子的权比例ri与标准值进行比较
      • 若 ri > 1/(2n) 则保留该因子,若 ri ≤ 1/(2n) 则舍去该因子及其状态
    • 对于保留下来的各个因子采用同样方法对其状态进行筛选
      在这里插入图片描述
  • (3) 利用正交表构造测试数据集
    在这里插入图片描述
  • 正交表特征:
    • ① 取值的均匀分配
    • ② 两两组合取值的均匀搭配
  • 正交表的正交特性:
    • 每列中不同的数字重复次数相同
      • 在表L8(27)中,每列有2个不同数字:1和2,每一个各出现4次
    • 将任意两列的同行数字看成一个数对,那么一切可能数对重复次数相同
      • 在表L8(27)中,任意两列有4种可能的数对:(1,1),(1,2),(2,1),(2,2),每一对各出现2次
  • 设计用例时包括以下情况:
    • 测试输入参数个数取值=正交表因子水平数
      • 套用正交表+补充测试用例
    • 测试输入参数个数≠正交表因子数
      • 选择正交表中因子数略大的,多余因子舍弃
    • 测试输入参数取值数≠正交表水平数
      • 选择正交表中因子及水平数略大且总实验次数最少的,多余因子舍弃,多余水平均分
  • (3) 利用正交表构造测试数据集-分类
    • 二水平正交表:L4(23)、 L8(27)、 L12(211) 、 L16(215)
    • 三水平正交表: L9(34)、 L18(37)、 L27(313)
    • 四水平正交表: L16(45)
    • 五水平正交表: L25(56)
    • 混合水平正交表:L18(2×37)
    • 完全正交表:行数n、列数p和水平q之间满足以下关系:
      在这里插入图片描述
    • 其他类型正交表
  1. 应用实例
  • 确定因子(输入条件)
  • 确定水平(参数)
  • 选择合适的正交表L4(23)
  • 将变量的值映射到表中
  • 设计测试用例
  1. 方法评价
  • 优点:
    • 节省测试工作工时—设计简单
    • 可控制生成测试用例的数量—加权筛选
    • 测试用例具有一定的覆盖度—覆盖均匀
  • 问题:
    • 无法考虑输入参数相互组合的实际意义

2.6 其他黑盒测试方法

  1. 场景法—概述
  • 从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和扩展流来完成整个场景
    在这里插入图片描述
  1. 场景法—设计步骤
  • 根据说明,描述程序的基本流及各项扩展流
  • 根据基本流和各项扩展流生成不同的场景
  • 对每一个场景生成相应的测试用例
  • 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
  1. 状态转换法—概述
  • 许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面
  • 测试要点:
    • 设计测试用例以覆盖所有状态
    • 设计测试用例以覆盖所有状态转换
    • 设计测试用例以覆盖所有触发事件
  1. 状态转换法—设计步骤
  • 根据需求提取全部状态
  • 绘制状态转换图
  • 根据状态迁移图推导测试路径(状态迁移树)
  • 选取测试数据,构造测试用例
  1. 错误推测法—概述
  • 基于经验和直觉推测软件中容易产生缺陷的功能、模块及业务场景
  • 依据推测逐一进行列举,从而有针对性的设计测试用例
  • 一种提高软件质量和效率的技能
  1. 错误推测法—示例
  • 使用错误推测法为“旅馆住宿系统”中“办理房间入住”功能设计测试用例
  • 分析易产生的房间资源占用冲突问题:
    • 针对空闲的房间,其他游客办理入住时是否允许
    • 针对已被预订的某时段的房间,其他游客办理该时段入住时是否允许
    • 针对已被预订但又被退订某时段的房间,其他游客办理该时段入住时是否允许
    • 针对已被他人入住的某时段的房间,其他游客办理该时段入住时是否允许
    • 针对某游客入住到期但同时申请当前房间续租业务的房间,其他游客办理该时段入住时是否允许
    • 针对某游客已入住但申请换房业务,且换房成功后空闲的房间,其他游客办理该时段入住时是否允许
    • 针对某游客已入住但申请换房业务,且换房成功后新占用的房间,其他游客办理该时段入住时是否允许
    • 针对刚刚办理了房间结算业务的房间,其他游客办理已结算时段入住时是否允许
    • 针对一间房的多个不同时段被不同游客办理了预订、入住、续租、换房等业务的情况,其他游客办理入住时是否允许

2.7 功能性测试总结


【 第2章 黑盒测试 】 总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值