需求用例和测试用例都叫“用例”,但回答的问题不同:需求用例说明系统应当为参与者提供什么行为与结果,读者是业务、产品与开发;测试用例说明如何验证某个行为是否成立,读者是测试与开发。两者可以逐条追溯,写作目的、抽象层次和完成标准各不相同,混写会让需求难以评审、测试难以执行。下面按对象、写法与追溯关系逐项对照,最后说明在需求管理工具中如何承载这两类内容。
要点总览(TL;DR)
- 需求用例描述系统应当为参与者提供什么行为与结果,读者是业务、产品与开发;测试用例描述如何验证某个行为是否成立,读者是测试与开发。
- 需求用例的完成标准是需求意图清晰、验收条件可判断;测试用例的完成标准是步骤可执行、预期结果可判定通过与否。
- 两者以验收条件为衔接单位,一条需求用例通常派生多条测试用例,主场景对应正向用例,异常场景与边界条件对应异常用例。
- 需求变更时,需求用例标记受影响场景与验收条件,测试人员同步调整测试用例并更新回归范围,追溯矩阵或关联字段是最小做法。
- 把操作步骤写进需求用例会干扰评审,把业务意图写进测试用例会让执行者无法判定结果,判断口径看读者与完成标准。
先看结论:两者在对象、目的和完成标准上的差别
判断一段文字属于哪类用例,最稳的口径是看它服务谁、在什么时机被使用、写到什么程度算完成。需求用例在需求阶段使用,完成标志是业务、产品和开发对“要做什么、做到什么程度算对”达成一致;测试用例在测试设计与执行阶段使用,完成标志是他人能按步骤复现操作并得到明确判定。需求用例写的是需求意图,测试用例写的是检验方法,前者不能替代后者,后者也不应反过来充当需求说明。
| 对照维度 | 需求用例 | 测试用例 |
|---|---|---|
| 定义与目的 | 描述系统为参与者提供的行为与结果,表达需求意图 | 描述验证某行为是否成立的方法,表达检验过程 |
| 主要读者 | 业务方、产品、开发,用于评审与理解需求 | 测试人员、开发,用于设计、执行与回归 |
| 使用时机 | 需求分析与评审阶段 | 测试设计、执行与回归阶段 |
| 抽象层次 | 业务目标与场景层面,描述做什么 | 操作与数据层面,描述怎么验 |
| 典型结构 | 参与者、目标、主场景、异常场景、前置条件、后置结果、验收条件 | 用例编号、前置条件、操作步骤、测试数据、预期结果 |
| 完成标准 | 需求意图清晰、验收条件可判断 | 步骤可执行、预期结果可判定通过与否 |
| 变更影响 | 变更牵动需求范围与验收口径,需重新评审 | 变更牵动步骤与预期结果,需同步调整并评估回归范围 |
| 追溯关系 | 被测试用例引用,是追溯的起点 | 关联一条或多条需求用例,是追溯的落点 |
这张表也解释了为什么两者不能合并成一份文档:需求用例的读者需要快速理解业务意图,操作细节会干扰评审;测试用例的读者需要精确复现,业务背景描述过多会拖慢执行。分开写、建立关联,是更省事的做法。
需求用例怎么写:以场景和验收条件表达需求意图
需求用例的核心是把“谁在什么情况下要达成什么目标”写清楚,并用可判断的验收条件收口。它描述行为与结果,操作层面的点击顺序留给设计与测试环节。一个可迁移的结构如下:
- 用例名称与参与者:写明主要参与者是谁,以及他希望通过系统达成的目标。
- 前置条件:场景开始前必须成立的状态,例如账号已开通、订单处于待支付状态。
- 主场景:按业务步骤描述参与者与系统的交互,每一步写清系统给出的响应或结果。
- 异常场景:列出关键分支,例如校验失败、库存不足、超时,并说明系统应有的处理结果。
- 后置结果:场景完成后系统应处于的状态,例如订单状态变为已支付、生成支付记录。
- 验收条件:用可观察、可判断的表述列出“做到什么程度算对”,每条对应一个可检验的结果。
填写示例(演示情景):某电商系统的“提交订单”需求用例,参与者为已登录买家,目标是把购物车商品转为待支付订单。前置条件为购物车非空、收货地址已填写;主场景为买家确认商品与地址后提交,系统校验库存并生成待支付订单;异常场景包括库存不足时提示具体缺货商品并保留购物车、地址缺失时引导补全;后置结果为订单进入待支付状态并锁定库存;验收条件写成“库存充足时提交后生成一笔待支付订单,订单金额等于所选商品金额之和”“库存不足时订单不生成,页面提示缺货商品名称”。验收条件用结果描述,避免写成“点击提交按钮后跳转页面”这类操作步骤。
测试用例怎么写:以步骤和预期结果表达验证方法
测试用例的目标是让另一个人照着做就能得到明确结论。它需要编号以便管理和引用,需要前置条件与测试数据保证可复现,需要操作步骤与预期结果形成逐条判定。与需求用例不同,测试用例可以细到具体输入值、边界值和操作顺序,因为这些正是验证所需。
- 用例编号与标题:唯一编号便于关联需求与回归管理,标题点明验证的行为。
- 关联需求:标注对应的需求用例或验收条件,形成追溯入口。
- 前置条件与环境:账号状态、数据准备、环境配置等,保证执行起点一致。
- 测试数据:具体输入值,包括正常值、边界值与异常值。
- 操作步骤:按顺序写出可执行动作,一步一个动作。
- 预期结果:每步或整体给出可判定的结果,与验收条件对应。
覆盖思路上,正向用例验证主场景与验收条件成立,异常用例覆盖校验失败、边界值、并发或超时等分支,两者都从需求用例的场景与验收条件派生。填写示例(演示情景):用例编号 TC-ORDER-012,关联“提交订单”需求用例的库存不足验收条件;前置条件为购物车含某商品、该商品库存为 0;测试数据为库存 0、购买数量 1;步骤为进入购物车、确认地址、提交订单;预期结果为订单未生成、页面提示该商品缺货、购物车内容保留。测试用例应避免直接复述需求原文,例如把“系统校验库存”原样抄成预期结果,执行者无法判断校验通过与否;应写成可观察的页面提示、状态变化或数据结果。
两者如何衔接:从需求用例派生测试用例的追溯关系
衔接的基本单位是验收条件。一条需求用例通常对应多条测试用例:主场景对应正向用例,每个异常场景和边界条件各对应一条或多条异常用例,验收条件逐条被测试用例覆盖。派生时从验收条件出发,先问“这个结果如何观察”,再设计输入与步骤,能有效避免遗漏。
需求变更时,两侧需要同步。可行做法是:需求用例修改后标记受影响场景与验收条件,由测试人员评估对应测试用例是否需要调整,并更新回归范围;测试执行中发现需求表述不清时,回到需求用例补充验收条件,而不是只在测试用例里打补丁。追溯关系的最小做法是一张追溯矩阵或一组关联字段,记录需求用例编号、验收条件、测试用例编号与覆盖状态,评审时检查每条验收条件是否至少有一条测试用例对应。
| 同步检查点 | 检查内容 |
|---|---|
| 需求评审通过时 | 每条验收条件是否已规划对应测试用例 |
| 测试设计完成时 | 异常场景与边界条件是否都有用例覆盖 |
| 需求变更时 | 受影响的验收条件与测试用例是否同步更新 |
| 回归前 | 追溯矩阵中覆盖状态是否与实际执行一致 |
常见混淆与判断口径
最常见的混淆是把操作步骤写进需求用例。后果是评审时业务方难以确认意图,开发容易把某条操作路径当成需求本身,界面调整后需求文档随之失效。另一种混淆是把业务意图写进测试用例,例如预期结果只写“系统正确处理”,执行者无法判定通过与否,测试结论失去依据。
同一行为在两侧的表述可以对照:需求用例写“库存不足时订单不生成,并提示缺货商品”,测试用例写“库存为 0 时提交订单,预期订单列表无新订单,页面提示商品名称”。前者说明业务规则,后者给出可执行的验证条件。快速判断可以问三个问题:这段文字的主要读者是业务评审者还是测试执行者;它回答的是“要做什么”还是“怎么验”;它的完成标志是意图达成一致还是结果可判定通过。三个问题指向同一侧时,归属就清楚了。
在需求管理工具中承载两类用例
当需求用例和测试用例数量增多,追溯与变更同步靠文档手工维护容易断链。可以把需求用例作为需求工作项或需求文档承载,验收条件作为其中的结构化条目;测试用例作为独立工作项承载,通过关联字段指向需求用例或具体验收条件。需求变更时,需求工作项的状态流转触发评审,关联的测试用例随之被标记待评估,测试人员在同一条链路上更新步骤与预期结果,评审记录保留变更前后口径。
ONES 支持需求工作项与测试用例的关联管理,需求状态流转与评审记录可在同一平台留痕,便于在变更时定位受影响的测试用例并同步回归范围。具体字段配置与流程设置可按团队现有需求评审和测试管理流程调整,工具承载的是关联与状态,用例内容的写法仍按前文的场景、验收条件与步骤结构执行。
常见问题
需求用例和测试用例可以合并成一份文档吗?
不建议合并。两类用例的读者和使用时机不同:需求用例在需求分析与评审阶段服务业务方、产品和开发,需要快速理解业务意图;测试用例在测试设计与执行阶段服务测试人员和开发,需要精确复现操作并判定结果。合并后操作细节会干扰需求评审,业务背景描述又会拖慢测试执行。更省事的做法是分开写,通过验收条件建立关联。
一条需求用例应该派生多少条测试用例?
没有固定数量,取决于场景与验收条件的覆盖需要。通常主场景对应一条正向用例,每个异常场景和边界条件各对应一条或多条异常用例,验收条件逐条被覆盖。派生时从验收条件出发,先问“这个结果如何观察”,再设计输入与步骤。评审时检查每条验收条件是否至少有一条测试用例对应,就能判断覆盖是否足够。
需求变更后,测试用例应该由谁同步更新?
常见分工是:需求用例修改后由产品标记受影响的场景与验收条件,测试人员评估对应测试用例是否需要调整,并更新回归范围。测试执行中发现需求表述不清时,回到需求用例补充验收条件,避免只在测试用例里打补丁。同步检查点可以放在需求评审通过、测试设计完成、需求变更和回归前四个节点。
验收条件写成什么样,才能同时支撑需求评审和测试设计?
验收条件用可观察、可判断的结果表述,每条对应一个可检验的结果,例如“库存充足时提交后生成一笔待支付订单,订单金额等于所选商品金额之和”。这样的表述在需求评审时能确认业务意图,在测试设计时能直接转化为预期结果。避免写成“点击提交按钮后跳转页面”这类操作步骤,也避免只写“系统正确处理”这类无法判定的表述。
团队规模较小、没有专职测试人员时,还需要区分两类用例吗?
仍建议区分,但可以简化形式。需求用例保留参与者、主场景、异常场景和验收条件,测试用例可以只保留编号、前置条件、步骤和预期结果,不必追求完整模板。关键是保持验收条件作为衔接点,让开发或产品在自测时能按步骤复现并判定结果。团队规模扩大或引入专职测试后,再逐步补充测试数据、环境依赖和追溯矩阵。
