边界值分析法:原理、上点/内点/离点、设计步骤、实战案例

大家好,我是老赵。今天我们来聊聊边界值分析法。

说实话,这是我个人最常用的一种黑盒测试方法。为什么?因为大量的缺陷都藏在边界上。你想想看,开发写代码的时候,最容易出错的往往不是正常值,而是那些「差一点就超了」或者「刚好在边界上」的情况。

我记得刚入行那会儿,测试一个登录框,密码长度要求6-16位。我随便测了几个长度,觉得没问题就提交了。结果上线第二天,用户反馈说输入17位密码居然也能通过。嗯,从那以后,我再也不敢轻视边界值了。

边界值分析法的核心原理

边界值分析法的理论基础其实很简单:大量的软件缺陷发生在输入域的边界附近,而不是在等价类的内部。

为什么会这样?因为开发人员在写条件判断时,比如 if (len >= 6 && len <= 16),很容易把 >= 写成 >,或者把 <= 写成 <。这种「差一个等号」的错误,用常规的等价类划分是测不出来的。

核心思想:边界值分析是对等价类划分的补充。等价类划分帮你「分块」,边界值分析帮你「卡边」。

上点、内点、离点——三个关键概念

这三个点,是边界值分析法的灵魂。我一个个说清楚。

术语 定义 举例(区间 [6, 16])
上点 边界上的点。闭区间就是边界本身,开区间就是紧挨着边界的点。 6 和 16
内点 有效等价类内部的任意一点。 10(随便选一个)
离点 离边界最近但不在有效等价类内的点。闭区间取边界外一侧,开区间取边界上。 5 和 17

我的记忆口诀:「上点就是门框,内点就是屋里,离点就是屋外紧贴墙根。」

这里有个容易混淆的地方——开区间和闭区间的离点不一样。

  • 闭区间 [6, 16]:上点是 6 和 16,离点是 5 和 17
  • 开区间 (6, 16):上点是 7 和 15(因为 6 和 16 不在区间内),离点是 6 和 16

我在项目中遇到过不少测试新人把开闭区间搞混,结果测了半天,边界缺陷一个都没抓到。所以,拿到需求先确认:这个边界是包含还是不包含?

设计步骤——我习惯的四步法

边界值分析的设计步骤,我总结为四步。不多不少,刚刚好。

  1. 确定输入条件:找出所有需要测试的输入域,明确其数据类型和取值范围。
  2. 识别边界:找出每个输入域的边界值。注意,可能有多个边界(比如最小值、最大值)。
  3. 确定上点、内点、离点:根据区间类型(开/闭),确定每个边界对应的三个点。
  4. 生成测试用例:将每个点作为一个测试输入,结合预期结果,形成完整的测试用例。

你可能会问:每个边界都要测三个点吗?我的经验是:对于大多数场景,测上点和离点就够了,内点可以少测甚至不测。因为内点已经在等价类划分中覆盖过了。但如果你时间充裕,或者这个功能特别关键,那就全测。

实战案例一:密码长度验证

需求:用户注册时,密码长度要求为 6 到 16 个字符(包含 6 和 16)。

第一步,确定输入条件:密码字符串,长度范围 [6, 16]。

第二步,识别边界:最小值 6,最大值 16。

第三步,确定上点、内点、离点:

  • 上点:6, 16
  • 内点:10(随便选)
  • 离点:5, 17

第四步,生成测试用例:

测试用例编号 输入(密码长度) 预期结果 覆盖点
TC-01 5 个字符 提示「密码长度不足」 离点(下边界)
TC-02 6 个字符 验证通过 上点(下边界)
TC-03 10 个字符 验证通过 内点
TC-04 16 个字符 验证通过 上点(上边界)
TC-05 17 个字符 提示「密码长度超限」 离点(上边界)

避坑指南:我曾经测过一个系统,密码长度限制是 6-16 位,但开发在数据库里把字段长度设成了 16 个字符。结果输入 16 位密码能通过验证,但存不进数据库,直接报 500 错误。所以,边界值测试不仅要测前端验证,还要测后端存储。

实战案例二:温度范围控制

需求:一个恒温箱控制系统,温度设定范围为 -10°C 到 50°C(不包含 -10 和 50)。

注意,这里是开区间 (-10, 50)。也就是说,-10 和 50 本身是无效的。

上点:-9 和 49(因为 -10 和 50 不在区间内,所以紧挨着它们的有效值是上点)

内点:20

离点:-10 和 50(离边界最近但无效的点)

测试用例编号 输入(温度) 预期结果 覆盖点
TC-06 -10°C 提示「温度过低」 离点(下边界)
TC-07 -9°C 设定成功 上点(下边界)
TC-08 20°C 设定成功 内点
TC-09 49°C 设定成功 上点(上边界)
TC-10 50°C 提示「温度过高」 离点(上边界)

你看,同样是边界值分析,开区间和闭区间的测试数据完全不同。这就是为什么我反复强调:拿到需求先确认区间类型。

边界值分析法的知识体系

下面这张图,是我自己整理的边界值分析法知识结构。你可以把它当作一张「地图」,学完本章后对照着回顾一下。

边界值分析法 核心原理 三个关键点 设计步骤 缺陷集中在边界附近 补充等价类划分 上点 内点 离点 1. 确定输入条件 2. 识别边界 3. 确定上/内/离点 4. 生成测试用例 实战案例 避坑指南 边界值分析法知识体系结构图

几点补充建议

最后,分享几个我个人的小习惯:

  • 边界值要结合等价类一起用。等价类划分帮你「选代表」,边界值分析帮你「卡边」。两者是黄金搭档。
  • 多边界的情况要小心。比如一个输入同时有长度限制和字符类型限制,那就要分别对每个边界做测试。
  • 别忘了「0」和「空」。很多系统的边界是从 0 开始的,比如数组索引、分页页码。0 这个边界特别容易出问题。

我的经验:如果你时间只够测 3 个点,那就测「最小值-1」「最小值」「最大值+1」。这三个点能覆盖 80% 的边界缺陷。剩下的 20%,靠内点和正常值去补。

好了,边界值分析法就讲到这里。记住一句话:边界是缺陷的温床,测试要往边上靠。

可可精品资料库