边界值分析是什么
边界值分析基于一个经验事实:缺陷高度集中在区间端点与临界点——差一错误、大于与大于等于写反、舍入与截断误差都在边界附近暴露。方法是从每个边界的取值清单出发设计用例:端点本身、端点相邻的内部点、端点相邻的外部点各取一个。它与等价类划分互补:等价类收敛输入空间,边界值保证切分线上不藏错;两者组合是最常用的黑盒用例设计起点。工程上还要提前考虑边界数据的可测性:如果区间上限来自配置或数据库字段,测试环境应能便捷修改边界值本身,否则很多边界路径根本走不进去。
基本信息
| 方法类别 | 黑盒用例设计,针对边界与临界点 |
|---|---|
| 取值清单 | 端点、内邻、外邻各取一个,结合等价类合并 |
| 适用范围 | 数值区间、集合规模、字符串长度、日期区间、时间窗口 |
| 记录方式 | 用例标注每个值对应的边界含义 |
| 与等价类关系 | 先划分等价类,再单独补边界与邻点 |
典型使用场景
- 分页参数:page 为 0、1 与最后一页的翻页行为
- 字符串长度限制:空串、1 个字符、长度上限与超限
- 集合规模:空集合、单元素、满额集合下的处理逻辑
- 日期区间:起始日与截止日当天、前一天、后一天
- 金额与数量:最小值减一、最小值、最大值、最大值加一
- 输出边界:返回条数上限、金额舍入规则、分页总数的表现
- 重试与超时:重试次数上限的最后一跳行为
示例:购买数量 1 到 99
示例:购买数量 1 到 99
# 规则:购买数量 1 ≤ qty ≤ 99
# 下界外 0:应拒绝,探测下侧差一缺陷
# 下界 1:最小值应接受
# 下界内邻 2:区分 > 与 >= 的实现口径
# 上界内邻 98:确认上界比较方向
# 上界 99:最大值应接受
# 上界外 100:应拒绝,探测上侧差一缺陷常见边界类型
| 数据类型 | 下边界示例 | 上边界示例 |
|---|---|---|
| 数值范围 | 最小允许值 | 最大允许值 |
| 集合 | 空集合 | 额度满的集合 |
| 字符串 | 空串 | 长度上限 |
| 日期 | 区间起始日 | 区间截止日 |
| 时间窗口 | 窗口起点时刻 | 窗口终点时刻 |
ISTQB 口径的 3 值边界测试取:边界本身、边界内侧相邻值、边界外侧相邻值;只取边界本身的 2 值做法无法区分大于与大于等于之类的实现错误。
连续量(时间、浮点金额)的边界要加精度考量:断言浮点结果应使用误差容限(如绝对误差小于一分钱)而不是精确相等;若业务口径是四舍五入到分,先把舍入规则写成用例再谈实现。
边界不止一条:多参数系统里两个边界同时取极值的组合是缺陷高发区,必要时用正交或配对方法补充组合用例(见 pairwise-testing 条目)。
边界用例最好以数据驱动方式维护:把「边界值、边界含义、预期结果」整理成表格逐行执行,新增边界只是加一行,而不是复制一段测试代码。
组合边界的典型例子:连续失败三次锁定账户,其边界是第三次尝试——需要验证第 2 次失败后仍可重试、第 3 次失败立即锁定、锁定状态下正确凭证也按规则拒绝。