1. 等价类划分法
原理:将输入数据划分为若干等价类,每个类选取代表值测试
适用场景:输入数据存在明确有效/无效范围
实施步骤:
-
划分有效等价类(符合需求)和无效等价类(违反需求)
-
每个等价类至少选取1个测试用例
-
边界值需单独测试
示例:
测试"年龄输入框(18-60岁)":
等价类类型 | 测试数据 | 预期结果 |
---|---|---|
有效等价类 | 30 | 输入成功 |
无效等价类 | 17 | 提示"年龄不足" |
无效等价类 | abc | 提示"请输入数字" |
2. 边界值分析法
原理:在等价类边界及附近选取测试数据
统计依据:约70%的缺陷集中在边界区域(IBM研究数据)
三类边界值:
-
上点(边界值本身):18, 60
-
离点(边界相邻值):17, 61
-
内点(范围内典型值):30
进阶技巧:
-
日期边界:2月28/29日,12月31日
-
浮点数边界:0.999 → 1.000
3. 决策表法
原理:系统化分析多条件组合场景
适用场景:业务规则复杂的逻辑判断
构建步骤:
-
列出所有条件桩(输入条件)
-
列出所有动作桩(输出结果)
-
生成全组合规则(2^n条)
-
合并相似规则
示例:电商优惠券规则
会员 | 金额≥100 | 库存>0 | 预期结果 |
---|---|---|---|
是 | 是 | 是 | 应用优惠券 |
是 | 否 | 是 | 提示"金额不足" |
否 | 是 | 是 | 显示原价 |
- | - | 否 | 提示"缺货" |
4. 状态转换法
原理:测试系统状态变化的有效性
适用场景:具有明确状态机的功能
四要素:
-
状态(如:订单待支付、已发货)
-
转换(如:支付操作)
-
事件(如:点击支付按钮)
-
动作(如:调用支付接口)
测试用例设计:
[*] --> 待支付
待支付 --> 已支付 : 成功支付
待支付 --> 已取消 : 超时取消
已支付 --> 已发货 : 商家操作
5. 正交试验法
原理:用数学方法减少组合爆炸问题
优势:用最少的用例覆盖最多的参数组合
实施步骤:
-
确定因素(变量)和水平(取值)
-
选择适合的正交表(如L9(3^4))
-
映射测试数据
示例:浏览器兼容性测试
用例 | 浏览器 | 操作系统 | 分辨率 |
---|---|---|---|
1 | Chrome | Windows | 1920x1080 |
2 | Chrome | macOS | 1366x768 |
3 | Firefox | WindowsswodniW | 2560x1440 |
6. 错误推测法
原理:基于经验预测易出错点
典型场景:
-
必填项不填提交
-
重复提交表单
-
极端值测试(如超长字符串)
-
并发操作冲突
常见缺陷推测:
1. 数字输入:负数/零/超大数
2. 字符串输入:特殊字符/emoji/SQL注入语句
3. 文件上传:超大文件/错误格式/病毒文件
7. 场景法
原理:模拟真实用户业务流程
两种类型:
-
基本流:理想路径(如正常下单)
-
备选流:异常路径(如库存不足)
示例:ATM取款场景
场景一:成功取款
项目 | 说明 | 结果 |
---|---|---|
前提条件 | 银行卡已插入且余额充足 | - |
操作1 | 输入正确密码 | - |
操作2 | 输入取款金额500元 | 吐出500元现金,然后更新账户余额 |
场景二:余额不足
项目 | 说明 | 结果 |
---|---|---|
前提条件 | 银行卡余额100元 | - |
操作 | 尝试取款500元 | 显示"余额不足",不吐现金 |
8. 因果图法
原理:将需求转化为逻辑图再生成用例
适用场景:输入条件存在复杂逻辑关系
符号体系:
符号 | 名称 | 含义 | 示例 |
---|---|---|---|
→ | 因果关系 | 原因导致结果 | "输入正确密码 → 允许登录" |
∧ | AND(与) | 所有原因同时成立才触发结果 | "会员 ∧ 金额≥100 → 可用优惠券" |
∨ | OR(或) | 任一原因成立即触发结果 | "指纹 ∨ 密码 → 解锁手机" |
¬ | NOT(非) | 原因不成立时触发结果 | "¬黑名单用户 → 允许注册" |
◇ | 中间结果 | 多个原因组合的临时输出 | 用于简化复杂逻辑 |
实施步骤:
-
分析需求找出所有原因(输入)和结果(输出)
-
绘制因果图
-
转换为判定表
-
生成测试用例
9. 方法选择矩阵
需求特点 | 推荐方法 |
---|---|
明确输入范围 | 等价类+边界值 |
多条件组合 | 决策表/因果图 |
状态流转业务 | 状态转换法 |
参数组合爆炸 | 正交试验法 |
用户业务流程 | 场景法 |
历史缺陷高发区 | 错误推测法 |
10. 设计质量评估指标
-
需求覆盖率:100%需求条目被覆盖
-
代码覆盖率:重要路径达到80%+(结合白盒测试)
-
缺陷发现率:单位用例发现的缺陷数
-
维护成本:用例修改频率和难度
11. 最佳实践建议
-
混合使用:通常需要组合2-3种方法(如:等价类+边界值+错误推测)
-
分层设计:
测试用例分层 "基础功能验证" : 40 "异常场景测试" : 30 "性能/安全测试" : 20 "兼容性测试" : 10 -
自动化适配:为自动化测试设计原子化、参数化的用例
-
持续优化:根据缺陷分析反哺用例库(如补充遗漏的边界值)
通过系统化应用这些方法,测试团队可构建出高覆盖、高效率的测试用例体系,典型实施效果:
-
需求覆盖率提升至95%+
-
缺陷逃逸率降低60%
-
回归测试时间缩短40%