跳到主要内容

业务篇 · 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 辅助业务分析

九、配套资源