## 第3章 用户故事编写:角色·目标·理由·验收条件 用户故事是敏捷需求描述的最小单元,它将一个完整的业务诉求压缩成“角色 + 目标 + 理由”三段式结构,再通过“验收条件”锁定实现边界。本章将基于实际业务场景,拆解用户故事的四个构成要素,并给出可复用的编写模板与验收检查清单。 ### 3.1 用户故事的标准模板 团队最常用的是 Connextra 模板,以自然语言覆盖“谁想要什么、为什么想要”: > **作为** <角色>,**我希望** <目标>,**以便于** <理由>。 - **角色**:发起诉求的具体用户类型,例如“快递员”“仓库管理员”“客服专员”,不可模糊为“用户”或“系统”。 - **目标**:用户希望系统帮他完成的动作,使用主动语态动词,例如“扫描运单号”“查看待签列表”。 - **理由**:该功能背后的业务价值或用户动机,解释“为什么做这件事”,例如“减少手动输入错误”“提升现场签收效率”。 ### 3.2 验收条件:从目标到可验证的边界 验收条件是将用户故事从“意向”转化为“可测试用例”的关键。每个用户故事至少应包含 3~5 条验收条件,覆盖正常流程、异常流程和边界情况。 | 验收条件类型 | 说明 | 示例(快递员批量签收) | | --- | --- | --- | | **正常流程** | 用户按预期操作时系统的正确响应 | 快递员扫描 10 个运单号,系统在 2 秒内返回签收成功 | | **非正常流程** | 用户操作异常或输入非法数据时的容错 | 扫描已签收的运单号,系统提示“该单已签收,不可重复操作” | | **边界情况** | 数据极限或极端场景 | 一次扫描超过 500 个运单号,系统分批处理并显示“处理中” | | **体验规则** | 非功能约束,如性能、安全、权限 | 仅持有“签收权限”角色的账号可调用该接口 | 将所有验收条件汇总至用户故事卡片中,便于开发、测试和产品三方对齐。下面是一份完整的用户故事卡片示例:
标题:快递员批量签收包裹
编号:US-1025
优先级:P1
估算:5 人天

用户故事:
作为快递员,
我希望一次扫描多个运单号即可完成批量签收,
以便于减少逐个操作的时间,提升站点签收效率。

验收条件:
AC1:快递员在“签收页面”扫描 1~500 个运单号,系统应在 3 秒内完成签收并更新状态。
AC2:若扫描的运单号中包含已签收、已退回或不存在的数据,系统应单独列出异常单号,不中断正常件。
AC3:若网络中断,系统应显示“处理中”提示,并在网络恢复后自动重试,重试机制最多 3 次。
AC4:签收操作必须在快递员登录且拥有“站点签收权限”后才可用。
AC5:签收成功后,系统记录操作人、操作时间与 IP,并支持后续审计查询。
### 3.3 常见编写误区 在课程辅导过程中,我们总结出初学者最容易犯的四个错误,请务必对照检查: - **角色过于笼统**:将“销售”“运营”等大类作为角色,忽略细分场景。应缩小为“区域销售经理”“活动运营专员”。 - **目标写成功能描述**:例如“我希望系统有一个签收按钮”,应改为“我希望一次扫描多个运单号即可完成批量签收”。 - **理由缺失或空洞**:只写“以便于提高效率”,应补充具体指标,如“以便于将单件签收时间从 30 秒降至 5 秒”。 - **验收条件只有成功路径**:忽略网络失败、权限不足、数据重复等异常路径。
避坑提示:用户故事不是需求规格说明书。如果一条用户故事的篇幅超过 300 字或包含多个“且”“或”,说明它已经被过度细化,需要拆分为多个独立故事。
### 3.4 用户故事编写核心框架 以下流程图梳理了从业务痛点 → 角色识别 → 目标提炼 → 理由确认 → 验收条件编写的完整路径。 用户故事编写核心框架 ① 业务痛点 / 用户诉求 ② 识别具体用户角色 ③ 提炼用户希望达到的目标 ④ 确认业务价值与理由 ⑤ 编写验收条件 角色 + 目标 + 理由 正常 / 异常 / 边界 / 体验 ### 3.5 三分钟自检清单 每次编写完用户故事后,逐一核对以下问题: - [ ] 角色是否唯一且具体(不是“用户”“系统”)? - [ ] 目标是否能用一个主动动词描述? - [ ] 理由是否包含可衡量的业务收益? - [ ] 验收条件是否覆盖至少 1 条异常路径? - [ ] 整个故事能否在 5 分钟内讲清楚?
实战建议:在与开发、测试对齐用户故事时,将“验收条件”作为讨论的起点。先确认验收条件是否完备,再倒推用户故事是否正确——这是经多个团队验证的最短对齐路径。