测试用例设计方法是软件测试中的核心环节,旨在高效覆盖各种场景并发现缺陷。以下是常用的测试用例设计方法及详细示例:
1. 等价类划分(Equivalence Partitioning)
原理 :将输入数据划分为若干等价类,同一类中任一数据代表的测试效果相同。
示例 :
测试登录功能的用户名输入框(要求6-12位字母或数字):
- 有效等价类 :
- "abc123"(6位合法字符)
- "abcdefgh1234"(12位合法字符)
- 无效等价类 :
- "a1@"(包含特殊字符)
- "abc"(长度不足)
- "abcdefghijklm"(超长)
2. 边界值分析(Boundary Value Analysis)
原理 :针对输入范围的边界及附近值设计用例。
示例 :
测试年龄输入框(允许1-99岁):
- 边界值:0, 1, 2, 98, 99, 100
- 用例:
- 输入0(无效,应报错)
- 输入1(最小有效值)
- 输入99(最大有效值)
- 输入100(无效)
3. 因果图(Cause-Effect Graphing)
原理 :分析输入条件(因)与输出结果(果)的逻辑关系。
示例 :
电商优惠规则:"满100元且是会员可享9折"
- 因 :
- A: 订单金额≥100元
- B: 用户是会员
- 果 :
- Y: 应用折扣
- N: 不应用折扣
- 测试用例 :
- A真+B真 → Y
- A真+B假 → N
- A假+B真 → N
4. 判定表(Decision Table)
原理 :将多重条件组合以表格形式列出,覆盖所有可能。
示例 :
文件上传功能的条件:
文件格式合法 | 文件大小≤10MB | 预期结果 |
---|---|---|
是 | 是 | 上传成功 |
是 | 否 | 提示"文件过大" |
否 | 是 | 提示"格式错误" |
5. 状态转换测试(State Transition Testing)
原理 :针对系统状态变化设计用例。
示例 :
ATM取款流程状态:
- 插入银行卡 → 输入密码(待验证状态)
- 密码正确 → 进入主菜单(就绪状态)
- 选择取款 → 输入金额(处理状态)
- 余额充足 → 出钞并返回初始状态
用例:
- 连续3次输入错误密码 → 吞卡
- 取款金额>余额 → 提示"余额不足"
6. 错误推测法(Error Guessing)
原理 :基于经验猜测易错点。
示例:
- 测试文件上传:上传0字节文件、文件名含特殊字符。
- 测试支付功能:支付中途断网,检查事务一致性。
7. 场景法(Scenario Testing)
原理 :模拟真实用户流程(如用户故事)。
示例 :
电商下单场景:
- 登录 → 搜索商品 → 加入购物车 → 结算 → 支付 → 订单生成
- 异常场景:支付超时后重新支付,检查订单状态。
8. 正交试验法(Orthogonal Array)
原理 :用最少的组合覆盖多因素交互。
示例 :
测试跨浏览器兼容性:
浏览器 | 操作系统 | 分辨率 |
---|---|---|
Chrome | Windows 10 | 1920x1080 |
Firefox | macOS | 1366x768 |
Safari | Linux | 1024x768 |
9. 组合测试(Pairwise Testing)
原理 :覆盖所有两两参数组合,减少用例数量。
示例 :
测试注册表单:
- 参数:性别(男/女)、年龄(青年/中年/老年)、地区(国内/国外)
- 组合用例:
- 男 + 青年 + 国内
- 女 + 中年 + 国外
- 男 + 老年 + 国外
10. 探索性测试(Exploratory Testing)
原理 :边测试边设计,依赖测试者经验。
示例 :
测试地图应用时,突然旋转手机屏幕,检查界面自适应;或快速点击多个按钮,验证响应逻辑。
选择方法的原则
- 功能明确 → 等价类、边界值
- 多条件交互 → 判定表、因果图
- 流程复杂 → 状态转换、场景法
- 兼容性测试 → 正交试验、组合测试
通过结合多种方法,可系统性地提高测试覆盖率和效率。