测试条件示例要展示的是从需求中提取需要验证的点,再把它写成可执行用例的完整过程。本文用一个登录与订单提交的演示情景,给出测试条件清单、用例填写示例和逐项解释,说明如何用等价类、边界值、决策表把模糊需求拆成可评审、可执行、可追溯的测试条件。示例数据均为演示构造,不对应真实客户案例。
要点总览(TL;DR)
- 测试条件回答“需要验证什么”,测试用例回答“怎样验证”,每条条件应包含验证对象、前置状态、输入或操作、预期结果四个要素,并挂上需求编号。
- 从需求到测试条件的提取顺序是:锁定需求条目、识别输入域与状态变量、划分等价类并取边界、用决策表处理条件组合、统一命名编号。
- 边界值要成对夹住判定点,例如金额取 98 与 99 验证“满 99 元免运费”,错误次数取 4、5、6 验证第 5 次触发锁定。
- 决策表组合按预期结果合并、按判定路径保留,不可达组合在相关条件中说明,不单列。
- 示例数值为演示构造,复杂状态流转、并发场景、跨项目用例复用和脚本实现需要另行建模或纳入其他工作。
示例目标:这份测试条件示例要解决什么问题
这份示例要回答一个具体问题:拿到一条写得比较粗的需求,怎样把它变成别人能照着执行、能评审、能追溯回需求的测试条件。读者看完后应能产出一份测试条件清单,并把其中每一条填写成包含四个要素的用例。
先区分两个概念。测试条件描述“需要验证什么”,例如“密码错误时登录被拒绝并给出提示”;测试用例描述“怎样验证”,在测试条件基础上补充具体账号、具体输入值、操作步骤和判定标准。测试条件是设计产物,用例是执行产物,二者一一对应或一对多。示例中先列条件清单,再挑代表性条件写成用例,体现这个衔接关系。
四个填写要素贯穿全文:
- 验证对象:这条条件对应哪个需求条目、哪个功能点,用需求编号建立追溯。
- 前置状态:执行前系统与数据必须处于什么状态,例如账号已注册且未锁定、购物车已有商品。
- 输入或操作:用户提交什么数据、按什么顺序操作,取值要写明具体值或取值范围。
- 预期结果:系统应表现出的可观察结果,包括页面提示、数据变化、状态流转,判定依据要能对照需求原文。
判断标准很简单:一条测试条件如果缺任一要素,评审时就应退回补充;如果四个要素齐全但无法对应到需求条目,则要确认它是否属于范围外验证。
完整示例:登录与订单提交的测试条件清单
演示情景设定为一个电商系统,包含两个需求条目。需求 R1:用户使用手机号和密码登录,连续输错密码 5 次后账号锁定 30 分钟。需求 R2:用户在购物车中提交订单,订单金额满 99 元免运费,否则收取 10 元运费;库存不足时不允许提交。
拆解过程分三步。第一步按等价类划分输入域:手机号分为已注册、未注册、格式非法三类;密码分为正确、错误两类;订单金额分为满 99 元、不满 99 元两类;库存分为充足、不足两类。第二步对连续错误次数和金额临界点取边界值:错误次数取 4、5、6,金额取 98、99、100。第三步用决策表处理条件组合:登录场景的组合为“账号状态×密码正确性”,订单场景的组合为“金额区间×库存状态”,逐列列出后剔除不可达组合,剩下的每一列对应一条测试条件。
整理后的测试条件清单如下:
| 条件编号 | 对应需求 | 验证对象 | 前置状态 | 输入或操作 | 预期结果 |
|---|---|---|---|---|---|
| TC-LOGIN-01 | R1 | 正确凭证登录 | 手机号 13800000001 已注册、未锁定 | 输入该手机号与正确密码,点击登录 | 登录成功,进入首页,会话建立 |
| TC-LOGIN-02 | R1 | 未注册手机号登录 | 手机号 13900000002 未注册 | 输入该手机号与任意密码,点击登录 | 登录失败,提示账号或密码错误,不暴露账号是否存在 |
| TC-LOGIN-03 | R1 | 手机号格式校验 | 无 | 输入 10 位数字手机号,点击登录 | 前端拦截,提示手机号格式不正确,不发起请求 |
| TC-LOGIN-04 | R1 | 错误次数边界(第 4 次) | 账号已连续输错 3 次,未锁定 | 输入错误密码,点击登录 | 登录失败,累计错误次数为 4,账号仍可用 |
| TC-LOGIN-05 | R1 | 错误次数边界(第 5 次触发锁定) | 账号已连续输错 4 次,未锁定 | 输入错误密码,点击登录 | 登录失败,账号锁定,提示 30 分钟后重试 |
| TC-LOGIN-06 | R1 | 锁定期间正确密码登录 | 账号处于锁定状态,剩余锁定时间大于 0 | 输入正确密码,点击登录 | 登录被拒绝,提示账号已锁定,不重置错误计数 |
| TC-ORDER-01 | R2 | 金额边界(98 元) | 购物车商品合计 98 元,库存充足 | 提交订单 | 订单创建成功,运费 10 元,应付 108 元 |
| TC-ORDER-02 | R2 | 金额边界(99 元) | 购物车商品合计 99 元,库存充足 | 提交订单 | 订单创建成功,免运费,应付 99 元 |
| TC-ORDER-03 | R2 | 库存不足拦截 | 购物车商品合计 120 元,其中一件库存为 0 | 提交订单 | 订单不创建,提示商品库存不足,购物车保留 |
| TC-ORDER-04 | R2 | 金额与库存组合(满额且库存充足) | 购物车商品合计 100 元,库存充足 | 提交订单 | 订单创建成功,免运费,应付 100 元 |
从清单中取两条写成完整用例,展示填写粒度:
| 用例字段 | 用例 UC-LOGIN-05 | 用例 UC-ORDER-02 |
|---|---|---|
| 关联条件 | TC-LOGIN-05 | TC-ORDER-02 |
| 关联需求 | R1 | R2 |
| 前置状态 | 账号 13800000001 已注册,当前错误计数为 4,未锁定 | 用户已登录,购物车含商品合计 99 元,库存充足 |
| 操作步骤 | 1. 打开登录页;2. 输入手机号 13800000001;3. 输入错误密码 Abc12345;4. 点击登录 | 1. 进入购物车;2. 确认合计金额为 99 元;3. 点击提交订单;4. 查看订单结果页 |
| 预期结果 | 登录失败;账号状态变为锁定;页面提示 30 分钟后重试;错误计数保持为 5 不再增加 | 订单创建成功;运费显示 0 元;应付金额 99 元;订单列表出现该订单 |
| 判定依据 | R1 中“连续输错 5 次后锁定 30 分钟” | R2 中“满 99 元免运费” |
逐项解释:每个测试条件为什么这样写
验证对象对应需求条目。每条条件的验证对象都写成一句可判断的短语,并挂上需求编号。TC-LOGIN-02 的验证对象是“未注册手机号登录”,而不是笼统的“登录异常”,因为需求 R1 只规定了登录流程,未注册账号的处理属于安全提示范畴,写清楚才能让评审者判断预期结果是否合理。
前置状态写到可复现的程度。TC-LOGIN-05 的前置状态写明“错误计数为 4”,而不是“已多次输错”。计数是触发锁定的直接变量,写具体数字,执行者才能一次到位,不必反复试错。TC-ORDER-03 的前置状态指明“其中一件库存为 0”,把库存不足定位到具体商品,避免执行时对哪件商品缺货产生歧义。
输入数据用具体值,边界值成对出现。手机号、密码、金额都给出具体取值。金额取 98 与 99 两个相邻值,是因为需求写的是“满 99 元”,99 本身属于满足条件的一侧,98 是不满足的一侧,两个值夹住判定点,能发现“大于”与“大于等于”的实现偏差。错误次数取 4、5、6 的思路相同,5 是锁定触发点,4 验证未触发,6 验证锁定后计数不再累加。
预期结果的判定依据来自需求原文。TC-LOGIN-02 的预期结果写“不暴露账号是否存在”,依据是登录失败提示的通用安全要求;如果需求没有这条,就应改为与需求一致的表述,或作为待确认问题提出。TC-ORDER-01 把运费和应付金额都写出来,是因为只写“收取运费”无法判定金额是否正确,判定依据要落到可观察的数字上。
决策表组合的取舍理由。登录场景的组合中,“未注册账号×密码正确”与“未注册账号×密码错误”的预期结果相同,合并为一条 TC-LOGIN-02;订单场景中“库存不足×金额满 99 元”与“库存不足×金额不满 99 元”都被库存拦截,合并为 TC-ORDER-03。合并的依据是预期结果一致,保留的依据是判定路径不同。不可达组合,例如锁定状态下继续累计错误次数,不单列条件,在 TC-LOGIN-06 的预期结果中一并说明。
可迁移规律:把示例方法用到其他模块
换一个业务模块时,按下面的顺序操作,可以得到结构相同的测试条件清单。
- 先锁定需求条目。把需求拆成带编号的条目,一条需求对应一组测试条件。需求描述含糊的地方先记为待确认问题,不自行补规则。
- 识别输入域与状态变量。列出每个字段的取值范围、每个对象的状态集合,这是等价类划分的原料。
- 划分等价类并取边界。有效类与无效类各取代表值;有数值范围、次数限制、长度限制的地方,在临界点两侧各取一值。
- 用决策表处理组合。条件多于两个且相互影响时,列出组合表,合并预期结果相同的列,标注不可达组合及原因。
- 按统一格式命名编号。建议采用“模块缩写-序号”,如 TC-ORDER-01,编号与需求编号分开维护,便于追溯和引用。
- 评审时逐条核对四要素。检查每条条件是否写明验证对象、前置状态、输入或操作、预期结果,是否挂上需求编号,边界值是否成对,合并的组合是否有说明。
这套顺序对表单校验、支付流程、权限控制等模块同样适用,区别只在输入域和状态集合的具体内容。测试条件清单完成评审后,进入用例编写与执行阶段,条件与用例的对应关系、执行状态和缺陷记录需要有人跟进。ONES 测试管理支持将测试用例与需求关联,用例执行结果和缺陷可以在同一工作项体系内流转,评审意见也能留在对应条目上,适合把上述清单变成团队可持续维护的资产。是否引入工具取决于团队规模与协作频率,条件数量少、单人维护时用表格同样可行。
适用边界:示例方法的限制与不适用情形
示例中的手机号、金额、锁定次数均为演示构造,不代表任何真实业务规则。实际项目中,免运费门槛、锁定策略、提示文案都要以需求文档和产品确认为准,照搬示例数值会得到错误的预期结果。
等价类、边界值、决策表擅长处理输入校验和条件组合,对复杂状态流转和并发场景覆盖不足。例如订单从待支付到已支付、已取消的多状态迁移,或同一账号在多端同时登录的会话冲突,需要状态迁移图、时序分析等补充建模,单靠本文的清单格式无法保证覆盖。性能、安全等非功能验证也不在示例方法的范围内。
本文聚焦单个项目内的测试条件设计与用例填写。跨项目的用例资产复用、用例库的分层管理,以及自动化测试脚本的编写与维护,属于另外的工作,示例中的清单和用例格式不直接构成这些工作的规范。把示例当作团队统一模板之前,应先结合自身需求粒度、评审流程和缺陷管理方式做调整。
常见问题
测试条件和测试用例可以合并成一条记录吗?
可以合并,前提是团队对粒度和追溯要求有共识。合并后一条记录同时承担设计说明和执行说明,适合条件数量少、执行者与设计者同一人的场景。条件较多或需要多人执行时,分开维护更稳妥:条件清单用于评审覆盖是否完整,用例用于记录具体数据、步骤和执行结果,二者通过编号对应。无论是否合并,验证对象、前置状态、输入或操作、预期结果这四个要素都应写全。
需求文档写得很粗,提取测试条件时遇到没规定的情况怎么办?
把这类情况记为待确认问题,交给产品或有决策权的角色确认,不自行补规则。示例中“登录失败提示不暴露账号是否存在”就属于需求未写明、需要确认的表述;确认后再写入预期结果,并在条件上标注依据来源。若确认周期较长,可以先按当前理解编写条件并标记待定,评审时集中处理,避免阻塞其他条件的编写。
等价类和边界值已经覆盖了,还需要决策表吗?
取决于条件之间是否相互影响。单个字段的取值范围用等价类和边界值就能覆盖;当两个及以上条件共同决定结果,例如金额区间与库存状态、账号状态与密码正确性,组合会产生单条件分析看不到的路径,这时用决策表逐列列出组合更可靠。组合数量大时,先剔除不可达组合,再合并预期结果相同的列,控制条件总数。
测试条件清单评审时,重点看什么?
重点核对四件事:每条条件是否挂上需求编号、能否追溯回具体条目;前置状态是否写到可复现的程度,例如错误计数写明具体数字;边界值是否成对出现,是否夹住判定点;合并或剔除的组合是否有说明。此外检查预期结果是否落到可观察的页面提示、数据变化或状态上,避免“正常”“正确”这类无法判定的表述。
条件清单评审通过后,怎样跟进执行和缺陷?
需要把条件与用例的对应关系、执行状态和缺陷记录串起来。ONES 测试管理支持将测试用例与需求关联,用例执行结果和缺陷在同一工作项体系内流转,评审意见可留在对应条目上,便于把清单变成可持续维护的资产。条件数量少、单人维护时,用表格加版本记录同样可行,工具选择取决于团队规模与协作频率。


















