软件测试笔记【黑盒测试篇】:基于需求、面向功能
黑盒测试完全指南:7大设计方法 + 场景实战
不懂代码也能做测试?黑盒测试正是这样一门基于需求、面向功能的测试技术。
本文带你系统掌握等价类、边界值、判定表、因果图、正交试验、场景法等核心方法,
配合案例 + 优缺点分析,一篇打通黑盒测试理论到实践!
文章目录
- 黑盒测试完全指南:7大设计方法 + 场景实战
- @[toc]
- 1. 🎯 黑盒测试概述
- 2. ☁️ 等价类划分法
- 操作步骤
- 案例:用户年龄输入框(要求 18~60 岁整数)
- 3. 📝 边界值划分法
- 常用取点方式
- 局限性
- 4. 📋 决策表(判定表)
- 表结构组成
- 设计步骤
- 案例:订购系统(会员折扣判断)
- 优缺点
- 5. 🔗 因果图
- 逻辑关系符
- 约束关系
- 6. 🔢 正交表生成法
- 操作步骤
- 工具推荐
- 7. 💡 特殊值法
- 8. 🧠 故障猜测法
- 9. 🎬 场景法
- 核心概念
- 测试步骤
- 案例:在线商城下单支付
- 适用场景与缺点
- 10. 🧭 方法对比与选择建议
- 🔮 系列内容
- ✨ 写在最后
文章目录
- 黑盒测试完全指南:7大设计方法 + 场景实战
- @[toc]
- 1. 🎯 黑盒测试概述
- 2. ☁️ 等价类划分法
- 操作步骤
- 案例:用户年龄输入框(要求 18~60 岁整数)
- 3. 📝 边界值划分法
- 常用取点方式
- 局限性
- 4. 📋 决策表(判定表)
- 表结构组成
- 设计步骤
- 案例:订购系统(会员折扣判断)
- 优缺点
- 5. 🔗 因果图
- 逻辑关系符
- 约束关系
- 6. 🔢 正交表生成法
- 操作步骤
- 工具推荐
- 7. 💡 特殊值法
- 8. 🧠 故障猜测法
- 9. 🎬 场景法
- 核心概念
- 测试步骤
- 案例:在线商城下单支付
- 适用场景与缺点
- 10. 🧭 方法对比与选择建议
- 🔮 系列内容
- ✨ 写在最后
1. 🎯 黑盒测试概述
- 测试依据:软件需求规格说明书
- 测试重点:检查功能是否符合需求,输入 → 输出的正确性
2. ☁️ 等价类划分法
等价类划分法 是将程序的输入域划分成若干互不相交的子集,每个子集选取一个代表值进行测试。
操作步骤
- 分析需求,确定输入条件
- 划分有效等价类和无效等价类,制定等价类表
- 设计测试用例,覆盖所有有效等价类和无效等价类
案例:用户年龄输入框(要求 18~60 岁整数)
3. 📝 边界值划分法
边界值分析法 针对输入/输出的边界位置设计用例,因为边界处最容易出现错误。
常用取点方式
- 5点法:
min、min+、正常值、max-、max - 7点法:5点法基础上增加
min-和max+两个点
局限性
- 仅适用于有序的数值型输入
- 多个输入参数时,组合爆炸
- 不适用于布尔型和枚举型输入
4. 📋 决策表(判定表)
决策表 用于分析和表达多个逻辑条件下执行不同操作的工具。贯穿条件项和动作项的一列称为一条规则。
表结构组成
| 组成部分 | 说明 |
|---|---|
| 条件桩 | 问题的所有输入条件(无序) |
| 动作桩 | 问题所有可能采取的操作(有序) |
| 条件项 | 条件可能的所有取值(Y/N) |
| 动作项 | 在条件项组合下应采取的动作(多对一) |
设计步骤
- 列出所有条件桩和动作桩,填入条件项/动作项
- 确定规则个数(2^条件数)
- 简化合并相似规则(动作值相同可合并,无关条件用
-表示)
案例:订购系统(会员折扣判断)
- 条件:是否会员、金额>1000元、是否老用户
- 动作:给予折扣、拒绝折扣
优缺点
- ✅ 能够处理复杂的逻辑关系,穷举所有情况
- ❌ 条件较多时规则数指数增长,设计工作量大
5. 🔗 因果图
通过分析输入条件(因)和输出结果(果)的关系设计测试用例,最后采用决策表展示。
逻辑关系符
| 符号 | 名称 | 含义 |
|---|---|---|
| 恒等 | 恒等 | 原因出现 → 结果出现 |
| 非 | 非 | 原因出现 → 结果不出现 |
| 或 | 或 | 多个原因中至少一个出现 → 结果出现 |
| 与 | 与 | 所有原因都出现 → 结果才出现 |
约束关系
- 异约束 E:至多一个原因成立
- 或约束 I:至少一个原因成立
- 唯一约束 O:有且仅有一个原因成立
- 要求约束 R:原因出现 → 结果也必须出现
6. 🔢 正交表生成法
利用正交试验设计原理,从大量数据中挑选有代表性的测试点,用最少的用例获得最佳覆盖。
操作步骤
- 构造要因表
- 选择正交表
- 映射因子的状态
工具推荐
- AllPairs、PICT、正交表生成器等
7. 💡 特殊值法
基于测试人员的经验和直觉,选择最可能发现错误的测试数据。
依赖测试者的专业背景和领域知识。
例如:基于对输入域的分析,选择那些程序容易处理出错的值进行测试,比如零、空值、极值、负数、特殊字符等。
8. 🧠 故障猜测法
基于测试经验猜测软件可能存在的故障,并针对性地设计用例。
是一种经验驱动的测试方法,常用于探索性测试。
可能未对邮箱格式做严格校验,导致带特殊符号的邮箱入库时出错。
例如按测试人员的经验猜测:
程序员可能忘记过滤SQL注入字符。
可能未对邮箱格式做严格校验,导致带特殊符号的邮箱入库时出错。
可能未处理并发注册,导致同个用户名被注册两次。
可能没有对邮箱后缀做长度限制,导致超长后缀使存储溢出。
9. 🎬 场景法
基于“事件流”概念,通过描述用户使用系统的典型场景设计用例。
重点关注用户完成特定任务的完整流程,模拟真实环境。
核心概念
- 基本流(成功流/主路径):从初始状态到目标状态,最直接、无异常的流程
- 备选流(异常流):因异常操作、条件或输入导致偏离基本流的路径
- 场景 = 基本流 + 0 或多个备选流
测试步骤
- 分析需求,确定用例
- 描述基本流 / 备选流(可画流程图)
- 组合生成场景实例
案例:在线商城下单支付
基本流:用户登录 → 搜索商品 → 加入购物车 → 去结算 → 选择支付方式 → 支付成功 → 下单成功。
备选流1:登录时密码错误,重试后成功。
备选流2:结算时购物车为空。
备选流3:支付时账户余额不足,支付失败
适用场景与缺点
- ✅ 适合业务流清晰的系统(尤其验收测试)
- ❌ 用例数量可能爆炸,可能遗漏边界条件
10. 🧭 方法对比与选择建议
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 等价类划分 | 输入域明确且有无限取值 | 减少用例数量 | 边界问题可能遗漏 |
| 边界值分析 | 有序数值范围 | 高效发现边界缺陷 | 仅适用于数值 |
| 决策表 | 多条件多动作逻辑 | 全面、无遗漏 | 条件多时爆炸 |
| 因果图 | 输入输出有复杂依赖 | 可视化逻辑 | 学习成本高 |
| 正交表 | 多因子组合优化 | 覆盖均匀、用例少 | 需要选择合适正交表 |
| 场景法 | 业务流程测试、验收测试 | 贴近真实用户 | 可能遗漏边界 |
| 特殊值/故障猜测 | 经验辅助测试 | 发现隐藏缺陷 | 依赖个人经验 |
- 常用方法细致对比
| 方法 | 优点 | 缺点 |
|---|---|---|
| 等价类划分 | 大幅减少用例数量,提升效率;系统性覆盖输入域,避免遗漏 | 划分依赖个人经验,主观性强;对边界值与条件组合考虑不足 |
| 边界值分析 | 针对错误高发区,缺陷发现率高;用例数少,投入产出比优异 | 测试焦点单一,对输入域内部覆盖不足;仅适用于有序变量,无法处理逻辑依赖 |
| 决策表 | 严谨处理复杂逻辑,覆盖所有组合;结构清晰,有效避免用例遗漏 | 条件增多将导致用例数指数级增长;无法表达操作顺序,场景臃肿 |
| 因果图 | 能有效处理输入条件间的约束关系;分析过程系统性强,引导深度思考 | 方法复杂,学习和应用成本高;步骤繁琐,从分析到用例生成效率低 |
🔮 系列内容
系列文章链接(持续更新中)
- 上一篇 软件测试基础篇
- 下一篇 白盒测试
- 还有更多…
关注我,第一时间获取更新
✨ 写在最后
如果本文对你有帮助,欢迎点赞、收藏、评论,转载引用请私信作者本人(╹ڡ╹ )~
