等价类、边界值和决策表解决的是不同形态的输入问题,选择哪一种,取决于输入取值能否分类、是否连续有序,以及结果是否由多个条件组合决定。三者常在同一功能里叠加使用:等价类划分输入空间,边界值补充临界点,决策表梳理多条件规则。下面按适用条件、组合顺序、投入前提和试点方式逐项说明。
要点总览(TL;DR)
- 等价类适合输入取值可划分为若干类、类内处理逻辑一致的场景,用有效类与无效类的代表值覆盖大量输入。
- 边界值适合数值区间、长度、时间、序号等连续或有序取值,在区间端点及其邻域取上点、内点、离点。
- 决策表适合多个条件组合共同决定不同处理结果的业务规则,用条件桩、动作桩和化简后的规则梳理组合。
- 组合顺序通常是等价类打底、边界值补临界、决策表理组合,同一功能内不同输入可分别选用不同方法。
- 采用前需确认规格中有明确的取值范围与规则描述,并预留设计与评审时间;规则频繁变动或输入单一时可暂缓。
三种方法各自解决什么输入问题
判断用哪种方法,先看输入的形态和缺陷可能集中的位置。三种方法对应三类问题,选择依据如下表。
| 方法 | 对应的输入形态 | 核心判断依据 | 主要产出 |
|---|---|---|---|
| 等价类 | 取值可以划分为若干类,类内处理逻辑一致 | 输入空间大、取值离散或类型多,逐一遍历不现实 | 有效类与无效类清单及代表值 |
| 边界值 | 取值连续或有序,如数值区间、长度、时间、序号 | 缺陷容易集中在区间端点及其邻域 | 上点、内点、离点的取点用例 |
| 决策表 | 多个条件组合共同决定不同处理结果 | 业务规则由条件与动作的对应关系构成 | 条件桩、动作桩与化简后的规则 |
三者是叠加关系。等价类回答“哪些输入值得测”,边界值回答“临界位置怎么测”,决策表回答“条件组合下结果对不对”。同一功能里,一个输入字段可能先做等价类划分,再对数值区间取边界;跨字段的业务判断则交给决策表。把三者当成互斥选项,容易漏掉临界点或多条件组合中的规则缺口。
等价类:输入可分类时的覆盖方式
等价类适用于输入取值可以分成若干组、每组内部被系统按同一逻辑处理的场景。它的价值在于用少量代表值覆盖大量输入,把测试数量控制在可评审的范围内。
划分时同时考虑两类:有效等价类是符合规格的合法输入集合,无效等价类是规格不允许或应被拒绝的输入集合。例如年龄字段规定为 18 至 60 的整数,有效类可划为“18 至 60 的整数”,无效类包括“小于 18 的整数”“大于 60 的整数”“非整数”“空值”等。每个类取一个或少量代表值即可,代表值应能体现该类别的典型特征。
使用前提是类内处理逻辑一致。如果同一类里的取值会触发不同分支,说明分类粒度不够,需要继续拆分。反过来,如果输入分类边界本身不清楚,比如规格只写了“输入合法手机号”而未说明号段规则,等价类划分就缺少依据,此时应先补全规格再划分。覆盖数量与分类粒度直接相关:类划得粗,用例少但可能漏测;类划得细,覆盖更充分但维护成本上升,需要结合风险取舍。
边界值:取值有序或连续时的重点区域
边界值适用于取值连续或有序的场景,包括数值区间、字符串长度、日期时间范围、序号和分页参数等。这类输入的缺陷往往出现在区间端点附近,因此取点集中在临界位置。
常用取法包括三类点:上点是边界本身的值,内点是区间内部靠近边界的值,离点是刚越过边界的值。以允许输入 1 至 100 的字段为例,上点取 1 和 100,内点取 2 和 99,离点取 0 和 101。对开闭区间不同的规格,离点的取法要相应调整。
边界值通常与等价类配合:先用等价类划出有效区间和无效区间,再对每个区间的端点取边界值。这样既覆盖了类别,又覆盖了临界位置。对于取值离散且没有临界意义的输入,比如只能从固定几个选项中单选一项的下拉框,边界值能补充的信息有限,收益不高,按等价类取代表值即可。
决策表:多条件组合决定结果时的规则梳理
决策表适用于多个条件共同决定不同处理结果的业务规则。典型场景包括订单优惠叠加、权限判定、审批流转条件、风控分级等,这些规则的共同点是单个条件不足以决定结果,需要看条件组合。
决策表由四部分构成:条件桩列出所有相关条件,动作桩列出所有可能的结果动作,条件项填写各条件取值的组合,动作项标明每组条件下执行哪些动作。绘制时先列条件与动作,再逐列填写组合,最后检查是否存在结果相同、可以合并的规则。
规则数量会随条件数量增长。三个二值条件理论上产生八列组合,条件更多时列数迅速膨胀。化简的做法是合并动作结果相同且仅个别条件取值不同的列,用“—”表示该条件取值不影响结果。化简后仍需保留能区分不同动作的规则,避免合并过度导致规则丢失。当条件之间不存在组合关系、每个条件独立决定各自结果时,决策表带来的结构收益有限,按单条件分别设计用例更直接。
组合选择:按输入形态叠加使用
组合选择的顺序可以按以下步骤执行:
- 识别输入形态。逐个字段判断取值能否分类、是否连续有序,再判断结果是否由多条件组合决定。
- 用等价类打底。为每个可分类的输入划出有效类与无效类,确定代表值,形成用例骨架。
- 补边界值。对数值区间、长度、时间、序号等有序取值,在等价类划出的区间端点补充上点、内点和离点。
- 用决策表理组合。对跨字段、跨条件的业务规则绘制决策表,把条件组合与预期动作对应起来,再转成用例。
- 检查覆盖与冗余。核对有效类、无效类和边界点是否都有用例对应,合并重复覆盖同一规则的用例。
同一功能内不同输入可以分别采用不同方法。例如注册页面中,用户名字段做等价类和长度边界,手机号字段做格式等价类,优惠资格判定则用决策表梳理会员等级、订单金额、活动类型等条件的组合。方法按输入分别选用,最终汇总到同一份用例集中评审。
用例设计完成后,需要有人编写、评审并跟踪执行状态。在 ONES 测试管理中可以按功能模块组织用例,把等价类代表值、边界取点和决策表规则分别落到用例步骤与预期结果中,通过评审记录确认覆盖情况,执行结果回写到用例状态,便于后续回归时复用和补充。
投入与前提:方法落地需要什么
采用这三种方法前,需要确认以下信息与投入是否具备:
- 需求或规格中对输入范围和业务规则有明确描述,包括取值区间、格式约束、条件与动作的对应关系。
- 取值范围的确认来源清晰,例如产品文档、接口约定或与业务方确认的记录,避免测试人员自行假设边界。
- 设计与评审的时间投入。等价类划分和决策表绘制需要专门时间,评审环节还需要业务或开发人员参与确认规则理解一致。
- 规则复杂时的维护成本。业务规则变更后,决策表需要同步更新,否则用例会与实现脱节;条件越多,维护成本越高。
这些前提不具备时,方法产出的质量会明显下降。例如规格只写了功能描述而未给出取值范围,边界值取点就缺少依据,此时应先推动规格补全,再开展设计。
暂缓条件:什么时候不必用或先放一放
以下情况可以暂缓采用或降低使用强度:
- 输入取值单一或无需分类。例如只有一个固定按钮触发的操作,等价类划分没有实际对象,直接设计一条用例即可。
- 业务规则尚未明确、条件仍在变动。此时绘制决策表容易反复返工,可以先按主要路径设计用例,待规则稳定后再系统梳理。
- 探索性测试为主的早期阶段。产品形态还在快速调整,结构化方法的产出可能很快过时,可先以探索发现为主,进入稳定迭代后再补充系统化用例。
- 方法产出无法被评审和复用。如果团队没有用例评审习惯,也没有统一的用例存放位置,等价类清单和决策表容易停留在个人文档中,投入难以转化为团队资产,此时应先建立基本的用例管理方式。
暂缓不等于放弃。上述条件改善后,可以回到结构化方法补充覆盖,尤其是边界值和决策表在回归阶段的价值更明显。
试点判断:小范围验证方法是否合用
在全面推广前,可以选一个有明确输入范围的功能作为试点,例如带数值区间校验的表单或条件分支较多的审批规则。试点期间观察以下几点:
- 用例数量与缺陷发现的对应关系。记录采用方法前后的用例数量和发现缺陷数,判断新增用例是否带来了有效发现,避免只看数量增长。
- 评审中检查覆盖完整性。核对用例是否覆盖有效类、无效类和边界点,决策表规则是否每条都有对应用例。
- 维护成本。观察需求变更后,更新等价类清单或决策表所需的时间,判断团队能否持续维护。
- 团队理解程度。评审中确认开发和业务人员能否读懂用例中的分类与规则表述,理解不一致的地方需要回到规格澄清。
根据试点结果决定推广范围:覆盖有效且维护成本可接受的功能类型优先推广;发现规则频繁变动或评审难以开展的部分,调整为轻量做法,保留等价类和关键边界,暂不铺开决策表。
常见问题
等价类划分到什么粒度才算够用?
判断标准是类内处理逻辑是否一致。如果同一类里的取值会触发不同分支或不同校验结果,说明分类粒度不够,需要继续拆分。粒度越细覆盖越充分,但用例数量和后续维护成本也会上升,可以结合功能风险取舍:高风险输入拆细一些,低风险输入保留较粗的分类即可。
边界值一定要和等价类一起用吗?
两者配合使用效果更完整,但并非必须绑定。等价类先划出有效区间和无效区间,边界值再对每个区间的端点取上点、内点和离点,这样类别和临界位置都能覆盖。如果规格已经明确给出区间范围,也可以直接对区间取边界值。对于只能从固定选项中选择的离散输入,边界值能补充的信息有限,按等价类取代表值即可。
决策表的规则数量太多,化简时要注意什么?
化简的做法是合并动作结果相同、仅个别条件取值不同的列,用“—”表示该条件取值不影响结果。需要注意的是不能合并过度:化简后仍需保留能区分不同动作的规则,否则会丢失条件组合对应的处理差异。如果条件数量多到化简后仍难以维护,可以先按业务主路径拆分决策表,分块梳理后再汇总。
业务规则还在频繁变动,现在做决策表会不会白做?
规则尚未稳定时,决策表容易反复返工,可以先按主要路径设计用例,待规则明确后再系统梳理条件组合。已经画出的部分可以保留为草稿,标注待确认的条件项,规则定稿后在此基础上补充和化简。这样既不会完全放弃结构化梳理,也避免在变动期投入过多维护成本。
三种方法设计出的用例,怎么在团队里评审和复用?
评审时重点核对三件事:有效类和无效类是否都有对应用例,边界点是否覆盖上点、内点和离点,决策表每条规则是否都有用例对应。用例需要存放在团队可访问的统一位置,按功能模块组织,把分类依据、取点说明和规则条件写进用例步骤或备注,后续回归时才能被其他人读懂和复用。在 ONES 测试管理中可以按模块组织用例并通过评审记录确认覆盖情况。
