- 边值分析
核心逻辑:程序在输入或输出的边界附近更容易出现缺陷,例如数组越界、循环次数错误等。因此,测试应重点关注这些边界点。
测试数据选取:针对某个输入变量的有效范围 [a, b],选取以下测试数据:
- 等于边界值:a、b
- 稍小于边界值:a-1、b-1
- 稍大于边界值:a+1、b+1
搭配建议:通常与等价类划分结合使用——先划分有效/无效等价类,再在每个等价类的边界上应用边值分析,提高测试覆盖率和错误发现率。
示例:若某函数要求输入年龄为 1~120,则测试用例可选:0(无效下界外)、1(有效下界)、2(有效下界内)、119(有效上界内)、120(有效上界)、121(无效上界外)。
- 错误推测
核心逻辑:基于测试人员的经验、直觉以及对常见编程错误的了解,预测程序中可能存在的漏洞,并针对性设计测试用例。
前提:应在使用系统化方法(如等价类、边值分析)的基础上,补充使用错误推测法,以覆盖特殊场景。
常见推测方向包括:
- 输入空值、null、空字符串
- 输入超长字符串导致缓冲区溢出
- 多线程并发访问共享资源
- 异常处理路径未被正确执行
优点是灵活高效,缺点是依赖个人经验,难以标准化。
- 因果图
核心逻辑:通过图形化方式表示输入条件(因)与输出结果(果)之间的逻辑关系,进而生成判定表,导出高覆盖度的测试用例。
适用场景:多个输入条件之间存在复杂逻辑组合时(如:只有当 A 成立且 B 不成立时,才触发 C 操作)。
步骤:
① 列出所有输入条件(原因)和输出结果(结果)
② 分析因果之间的逻辑关系(如恒等、非、或、与)
③ 考虑约束条件(如互斥、包含、唯一等)
④ 绘制因果图并转换为判定表
⑤ 根据判定表每一列设计一个测试用例
优点:能系统地处理多条件组合,避免遗漏;缺点:绘制和维护成本较高,适合关键模块。
# 示例:简单登录逻辑的因果图思维代码示意deflogin(username,password,captcha_valid):# 因:用户名非空、密码正确、验证码有效# 果:允许登录 or 提示错误ifnotusername:return"用户名不能为空"# 因1不满足ifnotpassword=="correct_pwd":return"密码错误"# 因2不满足ifnotcaptcha_valid:return"验证码无效"# 因3不满足return"登录成功"# 所有因满足 → 果成立边值分析与等价类划分结合使用,可以更系统、全面地设计测试用例。其基本思路是:
- 先进行等价类划分:将输入域划分为若干个有效等价类和无效等价类。
- 再在每个等价类的边界上应用边值分析:针对每个边界点选取“等于、略小、略大”的值作为测试数据。
这种组合方式既能覆盖广泛的输入情况(等价类的优点),又能聚焦最容易出错的边界区域(边值分析的优势)。
✅ 示例:学生成绩录入系统
要求输入成绩范围为0 ~ 100(包含边界),成绩必须是整数。
第一步:等价类划分
| 类别 | 输入条件 | 说明 |
|---|---|---|
| 有效等价类 | 0 ≤ 成绩 ≤ 100 | 合法输入 |
| 无效等价类 | 成绩 < 0 | 超出下界 |
| 无效等价类 | 成绩 > 100 | 超出上界 |
第二步:对每个边界应用边值分析
重点关注两个边界:下界 0和上界 100
对于下界 0:
- 稍小于:-1(无效)
- 等于:0(有效)
- 稍大于:1(有效)
对于上界 100:
- 稍小于:99(有效)
- 等于:100(有效)
- 稍大于:101(无效)
第三步:设计测试用例
| 用例编号 | 输入成绩 | 预期结果 | 来源 |
|---|---|---|---|
| TC01 | -1 | 失败(提示越界) | 无效等价类 + 下界外 |
| TC02 | 0 | 成功 | 有效等价类 + 下界 |
| TC03 | 1 | 成功 | 有效等价类 + 下界内 |
| TC04 | 99 | 成功 | 有效等价类 + 上界内 |
| TC05 | 100 | 成功 | 有效等价类 + 上界 |
| TC06 | 101 | 失败(提示越界) | 无效等价类 + 上界外 |
💡 这样就实现了:
- 每个等价类都有代表值被测试(满足等价类覆盖)
- 所有边界都被“三重打击”(等于、稍小、稍大),极大提升发现边界错误的概率
🧩 小结:结合策略
| 方法 | 作用 |
|---|---|
| 等价类划分 | 缩小测试范围,避免冗余测试 |
| 边值分析 | 在关键位置增强测试强度 |
| 组合使用 | 实现“广度 + 深度”双重覆盖,提高缺陷检出率 |
适用于大多数数值型输入校验场景,如年龄、金额、数量、日期范围等。