第2章 边界值定义:边界值、内点、离点、上点、下点
2.1 概念解释
边界值测试的核心是识别输入域或输出域的“边界区域”,并选取具有代表性的测试点。一个边界通常对应一个闭区间或开区间。为精确描述这些点,测试工程中引入了四个术语:上点、下点、内点和离点。
- 边界值(Boundary Value):指输入域或输出域的极限值,即区间端点附近的值。通常包含“刚好等于边界”和“刚超过/刚低于边界”的值。
- 上点(Upper Point):区间的上限边界值。对于闭区间
[a, b],上点是b;对于半开区间[a, b),上点仍是b(但b本身不在域内)。 - 下点(Lower Point):区间的下限边界值,即
a。判断方式同上点。 - 内点(Interior Point):区间内部任意一点,用于验证正常功能。通常取区间的“中间值”或一个典型的非边界值。
- 离点(Outlier / Off-point):紧邻边界但不在域内的点。对于闭区间
[a, b],离点是a-ε和b+ε(ε 为最小可感知单位,如1、0.1等)。离点用于测试边界外失效场景。
定义速查表:以下表格以闭区间 [1, 10](整数输入)为例,列出各点的实际取值。
| 术语 | 英文 | 定义 | 示例值(整数) |
|---|---|---|---|
| 下点 | Lower Point | 区间下限,属于域(对闭区间而言) | 1 |
| 上点 | Upper Point | 区间上限,属于域 | 10 |
| 内点 | Interior Point | 区间内部任意一点 | 5(或 3、7 等) |
| 离点(左侧) | Off-point (Left) | 紧邻下点但不在域内 | 0 |
| 离点(右侧) | Off-point (Right) | 紧邻上点但不在域内 | 11 |
2.2 原理图解:边界点分类示意图
下面的 SVG 图展示了一个数轴区间 [1, 10],标出各类点的位置与关系。
2.3 生活类比
将边界测试想象为“酒店电梯载重阀值”:
- 下点:电梯限载 1000 kg,那么 1000 kg 正好是下点(若规则为 ≤1000 kg,则 1000 属于域内)。
- 上点:同样的 1000 kg 既是下点也是上点(单边界情况)。若限载范围是 [500, 1000],则 500 为下点,1000 为上点。
- 内点:随便站一个 700 kg 的人,正常乘坐。
- 离点:1001 kg(超载报警)和 499 kg(低于下限不会触发特殊逻辑,但可能报“过轻”或直接允许)。离点触发的是“边界外行为”。
2.4 常见误区
- 混淆“上点”与“离点”:例如测试年龄范围 [18, 60],有人只测 18、60(上/下点)和 19、59(内点),却漏掉 17 和 61(离点),造成边界外失效未被发现。
- 忽视区间开闭性:如果输入为 (1, 10],则 1 不在域内,离点应是 1(而非 0),上点仍为 10。错误地将 1 当作下点会导致测试用例无效。
- 认为“内点”就是中间值:内点可以是任何非边界值,但通常建议选取区间中点或偏离边界较远的点,避免与边界值测试重叠。
- 离点的步长选取不当:对于浮点数域,步长应为精度最小值。例如价格区间 [0.00, 100.00](两位小数),离点应为 -0.01 和 100.01。
⚠️ 易错提醒:如果区间是“开区间 (1, 10)”,则下点不存在(因为 1 不在域内),离点分别是 1 和 10;上点也不存在(10 不在域内)。此时边界测试主要检测“刚进入域”的值(如 2)和“刚离开域”的值(如 9)。务必先明确区间的开闭性质。
2.5 练习题
题目:某系统要求输入整数 x ∈ [3, 8](闭区间)。请列出该边界的所有测试点(上点、下点、内点、离点)。
参考答案:
| 点类型 | 取值 | 说明 |
|---|---|---|
| 下点 | 3 | 区间下限,在域内 |
| 上点 | 8 | 区间上限,在域内 |
| 内点 | 5 | 任意内部值,建议取中间值 |
| 左离点 | 2 | min-1,不在域内 |
| 右离点 | 9 | max+1,不在域内 |
2.6 应用边界:如何在实际测试中选择这些点
- 标准边界值分析(BVA):对每个边界取
下点、上点、离点即可。若域为数值,内点可选一个。 - 健壮性边界测试:额外测试超出离点更远的值(如
0和12),验证系统对非法输入的容错。 - 多边界域:如果输入由多个区间组成(如
[0,10]∪[20,30]),每个区间都要独立计算各自的上下点与离点。 - 非数值边界:对于字符串长度、枚举数量等,同样适用上述定义。例如密码长度 [6, 20] 字符,离点为 5 和 21。
💡 实战建议:在编写测试用例时,先用表格列出所有边界及其开闭性,再逐一分配上下点、内点和离点。此做法可覆盖99%的边界缺陷。