软件测试期末考试

第2章 黑盒测试方法

方法 核心思想 重点检查 适用场景 示例
等价类划分法 将输入划分为有效类和无效类 数据类别 输入范围较大 年龄1~100,选1、50、100测试
边界值分析法 测试边界附近的数据 临界点错误 范围输入 年龄1~100,测0、1、2、99、100、101
因果图法 分析输入条件组合关系 条件组合 复杂业务规则 用户名正确且密码正确才能登录
场景法 按业务流程设计测试 操作流程 系统功能测试 登录→借书→还书
元素 图形 含义
状态(State) 圆圈 系统当前所处的状态
迁移(Transition) 箭头 状态之间的转换
触发条件(Event) 箭头上的文字 引起状态变化的事件
动作(Action) 可附加在迁移上 状态转换时执行的操作
方法 关注点 特点
等价类划分 输入分类 减少测试用例
边界值分析 边界数据 找临界点错误
因果图法 条件组合 逻辑关系测试
判定表法 多条件决策 规则测试
场景法 业务流程 用户操作路径
状态迁移图法 状态转换 状态变化正确性

边界值分析法设计的测试用例发现程序错误的能力最强。

正交实验设计法(Orthogonal Experimental Design)是一种利用正交表,从大量组合中选择具有代表性的测试用例的方法。

它的目标是:

  • 减少测试用例数量
  • 覆盖尽可能多的因素组合
  • 提高测试效率
名称 含义
因子(Factor) 影响结果的条件
水平(Level) 因子的取值
正交表 用于安排测试组合的表格
选项 分析 对错
A 正交实验设计法用于多因素、多水平测试
B 软件复杂、组合爆炸时适合使用正交实验法
C 每个因子及状态作用相同
D 正交表具有均匀分散、整齐可比特点

等价类划分法要求同时考虑:

  • 有效等价类(符合需求的数据)
  • 无效等价类(不符合需求的数据)

如果只测试有效等价类,很多异常情况和错误处理逻辑无法验证,因此 B 错误。

无效等价类
编号 范围
E2 小于18
E3 大于60
E4 非数字

决策表(Decision Table)通常由四部分组成:

组成部分 含义
条件桩(Condition Stub) 列出所有条件
条件项(Condition Entry) 各条件的具体取值
动作桩(Action Stub) 列出所有可能执行的动作
动作项(Action Entry) 在特定条件下应执行的动作
名称 作用 相当于
条件桩 条件名称 表头
条件项 条件取值 Y/N、T/F
动作桩 动作名称 表头
动作项 执行动作标记 X、√

第一步:找条件和动作

条件

C1:图书有库存?

C2:未超过借阅上限?

动作

A1:允许借书

A2:拒绝借书

条件桩 规则1 规则2 规则3 规则4
图书有库存(C1) Y Y N N
未超借阅上限(C2) Y N Y N
动作桩
允许借书(A1) X
拒绝借书(A2) X X X
用例 库存 超限 预期结果
TC1 借书成功
TC2 借书失败
TC3 借书失败
TC4 借书失败

与因果图法的关系

考试中经常出现:

复制代码
复制代码
因果图 → 决策表 → 测试用例

流程:

复制代码
复制代码
原因(条件)
   ↓
因果图
   ↓
决策表
   ↓
测试用例

例如登录功能:

条件:

  • 用户名正确
  • 密码正确
  • 验证码正确

动作:

  • 登录成功
  • 登录失败

3个条件共有:

23=82^3=823=8

种组合,可以先画因果图,再转成决策表,最后生成 8 个测试用例。

关系 符号 含义
恒等(Identity) I 原因为真,结果为真
非(NOT) NOT 原因为真,结果为假
或(OR) OR 多个原因满足一个即可
与(AND) AND 多个原因同时满足
约束 含义
唯一(E,Exclusive) 多个原因中最多一个成立
要求(R,Requires) 一个条件成立,另一个必须成立
包含(I,Inclusive) 至少一个成立
屏蔽(M,Mask) 一个条件成立时屏蔽另一个条件
符号 名称 含义
椭圆 开始/结束框(Terminal) 表示流程开始或结束
长方形 处理框(Process) 表示处理、执行操作
菱形 判断框(Decision) 表示条件判断
平行四边形 输入/输出框(Input/Output) 表示数据输入或输出
箭头 流向线 表示执行顺序

50、对于一个含有n个变量的程序, 采用基本边界值分析法测试程序会产生个测试用例。

2分

隐藏答案

参考答案: 4n+1

【答案解析】对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-、max值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生4n+1个测试。

白盒测试方法

覆盖类型 覆盖对象 要求 强度
语句覆盖 每条可执行语句 至少执行一次 最弱
判定覆盖(决策覆盖) 每个判断结果 True / False 各一次 较低
条件覆盖 每个原子条件 True / False 各一次 中等
判定-条件覆盖 判定 + 条件同时满足 判定结果 + 每个条件真假都覆盖 较高
条件组合覆盖 所有条件组合 所有真假组合都覆盖 最强
覆盖类型 覆盖对象 要求 强度 特点
条件覆盖 每个"原子条件" 每个条件取到 True/False 中等 只关注条件真假,不保证整体判断结果
判定覆盖(决策覆盖) 整个判断语句(if/else) 每个判定结果至少执行一次 True 和 False 较低(最常用) 关注"分支是否走到",不关心内部条件组合
条件组合覆盖 所有条件组合 覆盖所有条件真假组合 很高 用例数量爆炸,最全面但成本高
路径覆盖 所有可能路径 覆盖程序所有执行路径 最高 最彻底,但复杂度极高,实际很难完全实现
知识点 内容
测试类型 白盒测试
依据 程序控制结构
工具 控制流图(Control Flow Graph)
节点(Node) 语句或语句块
边(Edge) 控制流转移
区域(Region) 边和节点围成的封闭区域
独立路径 至少包含一条新边的路径
圈复杂度V(G) 独立路径的数量
作用 确定最少测试用例数

判定-条件覆盖

因为它同时要求:

  • 每个判定结果(True/False)出现
  • 每个条件结果(True/False)出现

覆盖要求比单纯判定覆盖或条件覆盖更严格。

覆盖方式 强度
语句覆盖(Statement Coverage) 最弱
判定覆盖(Decision Coverage)
条件覆盖(Condition Coverage)
判定-条件覆盖(Decision/Condition Coverage)
条件组合覆盖(Condition Combination Coverage) 最强

相比条件覆盖、判定覆盖,判定-条件覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖更全面

覆盖方式 要求
语句覆盖 每条语句执行一次
判定覆盖 每个判定结果T/F出现
条件覆盖 每个条件T/F出现
判定-条件覆盖 同时满足判定覆盖和条件覆盖
条件组合覆盖 所有条件组合都出现

判定-条件覆盖并不包含条件组合覆盖,因此其覆盖范围不一定比条件覆盖更全面,也不能保证发现所有组合逻辑错误。

前三组结果完全一样!

只有:

复制代码
复制代码
A=T
B=T

时才暴露错误。

而判定-条件覆盖允许不测这一组合。

因此:

程序存在错误,但判定-条件覆盖可能发现不了。

条件组合覆盖

判定-条件覆盖
↗ ↖
判定覆盖 条件覆盖

语句覆盖

、常见的目标代码插桩工具有______和DynamoRIO。

隐藏答案

**参考答案:**Pin

第4章接口测试

第5章性能测试

相关推荐
杨若瑜2 小时前
本地开发环境慢?localhost的锅!
vue.js
xsbcme6 小时前
VueTabRouter 插件实践(一):多标签页不是一排 TabBar
vue.js
云水一下8 小时前
Vue.js从零到精通系列(三):组件化基础——Props、Emits、插槽与生命周期
前端·javascript·vue.js
英勇无比的消炎药10 小时前
少踩坑TinyVue插槽事件编码规范详解
vue.js
2401_8685347811 小时前
5G和4G接入网对比介绍
vue.js
chushiyunen11 小时前
vue export default
前端·javascript·vue.js
北极星日淘12 小时前
可买免税店货物与安耐晒——特殊商品代购技术方案
javascript·vue.js·elementui
youyu-youyu12 小时前
oss阿里云图片链接url高清图片设置为缩略图 vue 减少加载体积流量
前端·javascript·vue.js·阿里云·云计算
低保和光头哪个先来13 小时前
聊聊 CSS 编译和 scoped 实现
前端·css·vue.js