业务篇 · 02 · 用户故事与验收标准
一、用户故事的标准格式
作为 <用户角色>
我想要 <功能>
以便 <业务价值>
例子:
作为企业采购员,我想要批量导出筛选后的订单,以便每月做采购报表时节省时间。
二、INVEST 原则
好的用户故事应该满足:
| 字母 | 含义 | 反例 |
|---|---|---|
| Independent | 独立的 | 故事 A 必须先做完故事 B |
| Negotiable | 可协商的 | 描述得太细节,锁死了实现方式 |
| Valuable | 有价值的 | "重构 XX 模块"(这是技术任务,不是用户故事) |
| Estimable | 可估算的 | "让系统更智能" |
| Small | 足够小 | 一个故事要 3 个月做完 |
| Testable | 可测试的 | "提升用户满意度" |
三、验收标准(Acceptance Criteria)
用户故事只是需求入口,真正的"契约"是验收标准。
3.1 BDD 格式(推荐)
Given <前置条件>
When <触发动作>
Then <预期结果>
可以有多个 Given/When/Then 组合。
3.2 完整示例
## US-042 批量导出订单
**作为** 企业采购员
**我想要** 批量导出筛选后的订单
**以便** 每月做采购报表时节省时间
### AC-1 正常导出
**Given**: 用户已登录且在订单列表页
**And**: 已设置筛选条件并展示 ≤ 10,000 条结果
**When**: 点击"导出"按钮
**Then**: 60 秒内生成 xlsx 文件并自动下载
**And**: 文件字段与列表展示一致
### AC-2 数据量超限
**Given**: 筛选结果 > 10,000 条
**When**: 点击"导出"按钮
**Then**: 弹出提示"数据量过大,请缩小筛选范围(当前 XX 条,上限 10,000 条)"
**And**: 不产生文件
### AC-3 并发限制
**Given**: 用户 30 秒内刚发起过一次导出
**When**: 再次点击"导出"按钮
**Then**: 按钮置灰并提示"请稍候,上次导出尚未完成"
### AC-4 网络异常
**Given**: 导出过程中网络断开
**When**: 网络恢复
**Then**: 不产生半成品文件
**And**: 前端提示"导出失败,请重试"
四、验收标准的质量清单
写完验收标准后自检:
- 每条 AC 都能用"测试用例"的形式执行
- 包含正常流 + 至少 2 个异常流
- 边界值明确(如"≤ 10,000"而不是"大量")
- 时间/性能指标明确(如"60 秒"而不是"快速")
- 错误提示文案明确(如"数据量过大"而不是"给用户友好提示")
- 数据校验规则明确(格式、长度、必填)
- 并发/冲突处理明确
- 权限规则明确
五、用户故事地图
把多个用户故事按时间流组织,形成全景视图:
采购员每月工作流:
[月初] [月中] [月末]
│ │ │
▼ ▼ ▼
US-001 US-020 US-040
制定采购计划 发起采购订单 查看采购报表
│
├─► US-041 筛选订单
├─► US-042 批量导出订单 ⭐本期
└─► US-043 查看汇总分析
价值:
- 让产品/开发/测试都能看到"每个故事在全局中的位置"
- 便于做版本规划(先做哪个、后做哪个)
- 避免孤立需求(发现某个故事上下游缺失)
六、用户故事的常见反模式
| 反模式 | 问题 | 正确做法 |
|---|---|---|
| "作为用户,我想要登录" | 太宽泛 | 具体到谁、为什么登录 |
| "作为管理员,我想要一个按钮" | 描述实现而非需求 | 描述要达成的目标 |
| "作为系统,我想要..." | 系统不是用户 | 改为真实的人类角色 |
| "支持 XX 功能" | 缺少角色和价值 | 补齐 As a / In order to |
| 一个故事包含 10 个 AC | 太大,拆不细 | 拆成多个故事 |
七、用户故事的生命周期
想法 构思 评审 准备开发 开发中 已完成
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
Idea → Backlog → Refined → Ready → In Progress → Done
各阶段的 Definition of Ready (DoR)
Ready 的标准:
- 有唯一 ID
- 有标题和完整描述
- 有验收标准
- 有优先级
- 有工期估算(至少是 T-shirt size)
- 没有阻塞依赖
- 测试已评审过(可测性通过)
各阶段的 Definition of Done (DoD)
Done 的标准:
- 所有验收标准通过
- 代码已合并
- 单元测试覆盖
- 测试已回归
- 文档已更新
- 产品已验收
八、用 AI 拆解用户故事
可以用 Claude 辅助把大故事拆成小故事:
Prompt 模板
你是一位资深产品经理。我有一个大型用户故事,请帮我:
1. 拆成 3-7 个可独立交付的子故事
2. 每个子故事必须满足 INVEST 原则
3. 每个子故事输出:As a / I want / So that + 至少 3 条 AC
大故事:
作为 [角色],我想要 [功能],以便 [价值]。
[详细描述]
请输出拆解结果。
详见 05 AI 辅助业务分析。
九、配套资源
- 01 PRD 编写规范
- 03 业务规则管理
- 测试篇 · 用例模板(验收标准 → 测试用例的转化)