测试基础 用例设计核心技术

JY · 2025年12月17日 · 最后由 BMW·吗喽 回复于 2025年12月17日 · 212 次阅读

设计测试用例目的

测试行业的用例设计方式、测试理论所谓日新月异,但设计用例的核心技术则如同人类不可缺失的氧气,即万变不离其宗会贯穿整个质量工程的生命周期。
1、系统性验证 - 确保软件功能按需求规格正确实现
2、缺陷发现 - 尽早、尽可能多地发现缺陷
3、质量评估 - 评估软件质量是否达到发布标准
4、风险控制 - 识别关键业务场景的风险
5、回归基准 - 建立可重复执行的测试基准
6、沟通基准 - 统一团队对需求的理解

经典八大功能测试技术

一、等价类

概念 将输入域划分为若干子集,每个子集中的数据在测试中视为等效,从每个子集中选取代表性数据进行测试。
示例
测试输入年龄字段(范围 0-150 岁)
有效等价类:1-149 岁(如 25 岁)
无效等价类:小于 0(如-5 岁),大于 150(如 200 岁)
场景
输入有明确范围或规则限制时
需要大量数据输入的测试
下拉列表、单选按钮等固定选项

二、边界值

概念 对输入或输出的边界值进行测试,因为边界附近最容易出错。
示例
同上年龄字段(0-150 岁)
边界值测试:-1,0,1,149,150,151
场景
任何有数值范围的输入
数组、列表的索引边界
循环次数边界

三、因果图

概念 分析输入条件(因)和输出结果(果)的逻辑关系,将自然语言描述转换为判定表。
示例
登录功能:输入用户名和密码
因 1:用户名正确
因 2:密码正确
果:登录成功/失败
场景
输入条件之间有逻辑依赖关系
组合条件较多的情况
业务规则复杂的场景

四、决策表

概念 用表格表示条件和动作的对应关系,系统化覆盖组合。
示例
电商优惠券使用规则
条件:是否登录?是否新人?金额≥100?
动作:能否使用优惠券?
| 登录 | 新人 | 金额≥100 | 动作 |
| ------ |------| ---------- |------|
| 是 | 是 | 是 | 可用 |
| 是 | 是 | 否 | 不可用 |
| 是 | 否 | 是 | 可用 |
| 是 | 否 | 否 | 不可用 |
| 否 | - | - | 不可用 |

场景
业务规则组合复杂
条件与动作有明确对应关系
需要全面覆盖组合的情况

五、状态树

概念 基于系统状态变化设计用例,测试状态转换正确性。
示例
订单状态流转
待支付 → 已支付 → 已发货 → 已完成
↓ ↓ ↓
取消订单 申请退款 确认收货
测试路径:

  1. 待支付 → 已支付 → 已发货 → 已完成(正常流程)
  2. 待支付 → 取消订单(异常流程)
  3. 已支付 → 申请退款 → 退款成功

场景
有明显状态变化的系统
工作流、审批流程
状态机实现的业务逻辑

六、场景法

概念 基于用户实际使用场景设计测试用例,模拟真实用户操作流程。
示例
电商购物场景:
浏览商品 → 2. 加入购物车 → 3. 下单 → 4. 支付 → 5. 查看订单

示例
外卖订餐场景
主场景:浏览餐厅 → 选择菜品 → 加入购物车 → 下单支付 → 等待送达 → 确认收货
备选场景 1:优惠券使用
备选场景 2:取消订单
备选场景 3:申请退款
场景
端到端的业务流程测试
用户验收测试
集成测试

七、错误推测

概念 基于经验推测可能出错的地方,针对性测试。
示例
输入特殊字符:' " < > & %
输入超长字符串(超过数据库字段限制)
快速重复提交表单
网络中断时操作
使用已失效的 token
场景
补充其他方法未覆盖的点
针对历史 bug 多发区域
探索性测试
安全测试

八、正交实验

概念 用正交表科学选择代表性组合,减少用例数量。
示例
兼容性测试
因素:浏览器 (Chrome, Firefox, Safari) × 操作系统 (Win, Mac, Linux) × 分辨率 (1080p, 2K, 4K)
全组合:3×3×3=27 个用例
正交法可减少到 9 个代表性组合,覆盖所有两两组合。
场景
多因素多水平的组合测试
兼容性测试、配置测试
需要平衡覆盖率和效率时

更新的扩展测试技术

一、组合测试

概念 通过组合覆盖(如 pairwise)保证任意两个因素的所有组合被测试。
测试环境组合:

  1. 手机型号:iPhone13, Samsung S22, Xiaomi12
  2. 系统版本:iOS15, iOS16, Android12, Android13
  3. 网络类型:WiFi, 4G, 5G Pairwise:只测必要的组合,减少工作量但保证覆盖。

场景
参数组合爆炸的情况
兼容性测试
配置项多的系统

二、分类树

概念 将测试对象按属性分类成树状结构,系统化选择组合。
示例
支付功能测试
├── 支付方式
│ ├── 在线支付
│ │ ├── 微信支付
│ │ ├── 支付宝
│ │ └── 银行卡
│ └── 货到付款
│ ├── 现金
│ └── POS 机
└── 订单类型
├── 普通订单
├── 团购订单
└── 秒杀订单

场景
复杂分类系统的测试
需要结构化分析测试对象
测试管理中的用例组织

总结对比

使用建议

组合使用:多种技术结合,取长补短
分阶段用

  • 单元测试:等价类 + 边界值
  • 集成测试:决策表 + 状态迁移
  • 系统测试:场景法 + 错误推测
  • 验收测试:场景法 + 分类树
  • 工具辅助:使用工具生成正交表、决策表等
  • 持续优化:根据 bug 反馈调整测试策略

核心原则:用最少的用例发现最多的 bug,在效率和质量间找到最佳平衡点!

共收到 1 条回复 时间 点赞
回复内容未通过审核,暂不显示
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册