边界值分析是一种黑盒测试用例设计方法,围绕输入或输出取值范围的临界点及其邻近点设计用例。缺陷更容易出现在区间端点、临界值两侧以及取整、计数、长度等规则切换处,因此它通常与等价类划分配合:先划分有效与无效区间,再在每个区间的边界上取点。
要点总览(TL;DR)
- 边界值分析是黑盒测试用例设计方法,围绕输入或输出取值范围的临界点及邻近点取测试数据,验证系统在边界处的行为。
- 它覆盖输入边界、输出边界、长度与计数边界、状态切换边界;区间划分归等价类划分,多条件组合归决策表。
- 取点分二值边界与三值边界:二值只取端点,三值取端点及两侧邻近值,更利于发现差一错误;多变量时按单变量或组合方式取点。
- 边界值分析通常与等价类划分配合:先划分有效与无效区间,再在每个区间的边界上取点,必要时用决策表补条件组合。
- 常见误解包括只取边界不取邻近值、用它替代等价类划分、只关注输入边界而忽略输出与长度边界。
边界值分析的定义与核心判断
边界值分析(Boundary Value Analysis,BVA)是指在确定一个输入或输出的取值范围之后,选取该范围的端点以及端点附近的取值作为测试数据,用来验证系统在临界位置的行为是否符合预期。它属于黑盒测试用例设计方法,关注的是“值落在边界上、边界内、边界外时,系统分别如何响应”,而不依赖程序内部代码结构。
它的核心判断依据是:缺陷更易聚集在区间端点与规则切换处。一个允许输入 1 到 100 的字段,出错往往发生在输入 0、1、100、101 这些位置,而非 50 这样的中间值。原因在于边界处通常伴随条件判断、取整、截断、长度校验、计数上限等逻辑,这些逻辑的“差一”错误(off-by-one)最容易暴露。因此边界值分析用少量取值集中覆盖高风险位置,是一种投入小、命中率较高的取点策略。
可复述的一句话定义:边界值分析是围绕输入与输出取值范围的临界点及邻近点取测试数据,以验证系统在边界处行为是否正确的黑盒用例设计方法。
边界值分析包括什么、不包括什么
明确范围有助于正确使用这一方法。边界值分析覆盖的边界类型可以归纳为以下几类:
- 输入边界:输入字段允许的最小值、最大值及其邻近值,如年龄允许 18 到 60。
- 输出边界:结果值的上下限,如折扣计算结果的取值范围、分页返回的条数上限。
- 长度与计数边界:字符串长度、数组元素个数、上传文件数量等,如用户名允许 6 到 20 个字符。
- 状态切换边界:状态机中允许与不允许迁移的临界条件,如订单在“待支付”状态下是否允许取消。
它不负责的部分同样需要说清。边界值分析不负责把全部取值划分为有效类和无效类,这项工作属于等价类划分;它不负责处理多个条件组合下的动作规则,这类问题由决策表等方法承担;它也不涉及具体测试脚本的实现,以及跨项目的用例资产复用,后者属于测试用例库与资产管理范畴。把边界值分析当作覆盖全部取值的完整方案,会遗漏大量中间取值和组合场景。
边界值分析的取点规则与执行机制
边界值分析的执行可以按“定区间—找边界—取点—落用例”四步推进。先根据需求或规格说明确定每个输入、输出的有效区间与无效区间,明确边界值本身;再在边界上按规则取点;最后把取到的值写入具体用例的输入数据,并写明对应的预期结果。
取点规则主要有两种:
- 二值边界:只取边界本身,即最小值与最大值。适用于只需验证端点是否被正确接受或拒绝的场景。
- 三值边界:取边界值及其两侧邻近值,即最小值、最小值减一、最大值、最大值加一(对整数而言)。三值取法能同时覆盖“刚好在边界内”和“刚好越过边界”两种情况,更利于发现差一错误。
当存在多个输入变量时,需要区分取点方式。单变量取点是对每个变量分别取边界,其余变量取正常值,用例数量随变量数线性增长,适合变量较多、组合爆炸风险高的场景;按变量组合取点则对多个变量的边界值进行组合,覆盖更充分但用例数量增长较快,适合变量少且相互影响明显的场景。选择哪种方式取决于风险与成本的权衡,没有统一要求。
取点结果最终要落到用例条目上:每条用例写明输入的具体数值、前置条件、操作步骤和预期结果。以“年龄允许 18 到 60 的整数”为例,三值取点得到 17、18、19、59、60、61 六个值,每个值对应一条用例,预期结果分别为拒绝、接受、接受、接受、接受、拒绝。取点完成后,通常还需要经过用例评审,确认边界识别是否完整、预期结果是否准确,再进入执行环节。在团队协作中,这类用例条目、评审记录和执行结果需要统一承载,ONES 的测试用例管理与评审流程可以承接从用例编写、评审到执行跟踪的过程,使边界取点的结果有明确的记录和状态。
边界值分析与等价类划分、决策表的区别
这三种方法回答的问题不同,常被组合使用。等价类划分回答“哪些取值可以归为一类、每类取一个代表值”,目的是减少用例数量并保证每类取值都被覆盖;边界值分析回答“临界点附近取哪些值”,目的是集中验证高风险位置;决策表回答“多个条件同时成立或不成立时,系统应执行什么动作”,用于表达条件组合下的业务规则。
| 方法 | 回答的问题 | 典型产物 | 适用条件 |
|---|---|---|---|
| 等价类划分 | 哪些取值归为一类,每类取哪个代表值 | 有效类与无效类清单 | 输入取值可划分为若干等价区间 |
| 边界值分析 | 区间临界点及邻近点取哪些值 | 边界取点表与对应用例 | 存在明确的数值、长度或计数范围 |
| 决策表 | 多条件组合下执行什么动作 | 条件—动作规则表 | 业务规则由多个条件共同决定 |
配合方式是:先用等价类划分确定有效与无效区间,再在每个区间的边界上做边界值分析,当业务规则涉及多条件组合时补充决策表。三者不是互相替代的关系,边界值分析建立在区间已经划分清楚的基础上,缺少等价类划分,边界值分析容易遗漏区间内部的代表取值。
具体例子与常见误解
以一个完整例子演示取点过程。某系统要求“订单数量为 1 到 100 的整数”,采用三值边界取点:
| 取值 | 位置说明 | 预期结果 |
|---|---|---|
| 0 | 最小值减一,无效区间 | 拒绝,提示数量超出范围 |
| 1 | 最小值,有效边界 | 接受 |
| 2 | 最小值加一,有效区间内 | 接受 |
| 99 | 最大值减一,有效区间内 | 接受 |
| 100 | 最大值,有效边界 | 接受 |
| 101 | 最大值加一,无效区间 | 拒绝,提示数量超出范围 |
如果该数量还会参与总价计算,输出侧也存在边界,例如总价上限或折扣档位的临界金额,同样需要取点验证。长度边界同理,如备注允许 0 到 200 个字符,需要覆盖 0、1、199、200、201 等取值。
常见误解有三类。其一,只取边界值而不取邻近值,例如只测 1 和 100,遗漏 0 和 101,无法发现越界校验缺失的问题。其二,把边界值分析当成等价类划分的替代,跳过区间划分直接取点,导致区间内部取值缺乏代表覆盖。其三,只考虑输入边界而忽略输出与长度边界,实际上输出范围、字符长度、文件数量、分页条数同样是缺陷高发位置。纠正这些做法,边界值分析才能发挥其集中覆盖高风险位置的作用。
常见问题
边界值分析一定要取边界两侧的邻近值吗?
取决于验证目标。二值边界只取最小值与最大值,适合确认端点是否被正确接受或拒绝;三值边界额外取最小值减一、最大值加一,能同时覆盖“刚好在边界内”和“刚好越过边界”两种情况,更利于发现差一错误。当边界校验逻辑复杂或历史缺陷集中在越界位置时,三值取法更稳妥;当用例数量受限、边界逻辑简单时,二值取法也能满足基本覆盖。
输入是小数或日期时,边界值分析怎么取点?
取点依据是取值规则中的临界条件,而非固定按整数加减一。小数输入需结合精度要求取点,例如允许两位小数、范围 0.01 到 999.99,边界取 0.01、999.99,邻近值取 0.00、0.02、999.98、1000.00。日期输入则围绕起止日期取前一天、当天、后一天,并注意闰年、月末等规则切换点。关键是先明确规格说明中的精度与格式约束,再据此确定边界和邻近值。
多个输入字段都有范围限制时,边界值分析要全部组合吗?
通常按风险与成本权衡。单变量取点对每个字段分别取边界、其余字段取正常值,用例数量随字段数线性增长,适合字段较多、组合爆炸风险高的场景;按变量组合取点覆盖更充分,但用例数量增长较快,适合字段少且相互影响明显的场景。实际执行中可先做单变量取点保证每个边界都被覆盖,再对存在联动关系的字段补充组合取点。
边界值分析取出的用例,评审时重点看什么?
评审重点包括:边界值是否识别完整,是否覆盖输入、输出、长度与计数等各类边界;邻近值是否取到,越界用例的预期结果是否明确写出拒绝或提示信息;每条用例的输入数据、前置条件和预期结果是否一一对应。评审还应确认边界值分析与等价类划分的配合是否到位,避免区间内部取值缺乏代表覆盖。评审通过后再进入执行环节,取点结果和评审记录需要有统一的承载位置。
需求只写了“数量不超过100”,没有写最小值,边界值分析怎么做?
先补齐区间信息再取点。最小值缺失时,需要向需求方确认是否允许 0、是否允许负数,确认后形成完整区间再取边界。若暂时无法确认,可将 0 和负数作为待确认的边界候选写入用例,并标注假设条件,避免把猜测当成确定规则。边界值分析依赖明确的取值范围,区间不完整时取点结果的可信度会下降,补齐区间是执行该方法的前置工作。


















