适用于快速交付团队的敏捷故事审查清单
Source: Dev.to
糟糕的敏捷故事会在编写任何代码之前浪费时间。它们在看板上看起来还不错,但却隐藏了缺失的行为、混杂的范围以及测试缺口。
本文提供了一种实用的方法,在敏捷故事进入交付阶段 之前 进行审查。它重点关注两个能及早捕捉大多数问题的要点:
- 这个故事真的足够小吗?
- 它是否通过了一个简单的质量检查?
Source: …
首先检查什么
在考虑措辞之前,先检查故事是否描述了一个明确的用户结果。这比完美的格式更重要。
弱的故事示例
- 改进通知
- 修复结账
- 支持密码重置
- 改善仪表板
这些还不是真正的故事;它们只是标签。
一个可用的故事应该让一个人、一个需求和一个原因显而易见。简而言之,一个好的故事应回答:
- 谁 需要它?
- 他们 需要什么?
- 为什么 这很重要?
示例
| 弱 | 更好 |
|---|---|
| 改进结账 | 已登录的买家可以保存购物车,以便稍后完成订单 |
如何在不纠结的情况下审查敏捷故事
快速审查比长时间争论更有效。使用三遍审查:
- 意义审查 – 用户结果是否明确?
- 规模审查 – 工作是否足够小?
- 质量审查 – 团队能否在不猜测的情况下构建并测试它?
如果故事在任何一项上未通过,请在计划开始之前重写它。
实施清单
阶段 1 – 输入
- 故事指明了真实的用户或角色。
- 故事描述一个用户需求,而不是一堆需求。
- 价值清晰:用通俗语言写明为什么这件事重要。
- 故事不仅仅是像“改进登录”这样的功能标签。
- 团队能够一口气解释完这个故事。
阶段 2 – 草案
- 故事使用简单格式,例如“作为 …,我想 …,以便 …”。
- 中间部分要狭窄且具体。
- 故事避免在同一工单中混合多个流程。
- 故事描述用户价值,而非内部团队任务。
- 草案包含对预期行为的验收检查。
阶段 3 – 评审
- 测试人员可以阅读故事并知道需要验证什么。
- 故事通过基本的INVEST检查。
- 故事足够小,可以在没有隐藏子项目的情况下交付。
- 如果故事感觉范围太大,已将其拆分为更小的用户结果。
- 仅在影响核心行为的情况下才记录边缘情况仅。
INVEST 规则如何帮助捕捉薄弱的用户故事
INVEST 是一种快速审查的视角。简而言之,它会询问故事是否符合以下条件:
| INVEST Element | What to Ask |
|---|---|
| Independent | 能否独立存在? |
| Negotiable | 能否通过讨论进行细化? |
| Valuable | 是否提供真实的用户或业务价值? |
| Estimable | 团队能否对其进行估算? |
| Small | 是否足够小,能够在一个冲刺内完成? |
| Testable | 能否通过明确的验收标准进行验证? |
这不是打分游戏——只是一个过滤器。如果一个用户故事在 Small 和 Testable 上未通过,通常就足以停止并重写它。
示例:弱 vs. 更强的故事
弱
作为用户,我希望获得更好的通知,以便我保持了解。
为什么失败:
- 过于宽泛
- 可能的渠道很多
- 可能的触发条件很多
- 难以作为一个整体进行测试
更强
作为账户所有者,当付款失败时,我希望收到电子邮件提醒,以便在服务停止前修复账单问题。
为什么有效:
- 单一用户
- 单一触发条件
- 单一渠道
- 明确的价值
- 易于测试
如何将大型敏捷故事拆分为更小的故事
当一个故事隐藏了许多界面、许多规则或许多种类的用户价值时,就应该进行拆分。大型故事在纸面上看起来效率高,但通常会导致冗长的评审循环和意外工作。
不佳的拆分方式(按部门角色)
- 设计重置页面
- 构建邮件 API
- QA 密码重置
这些是 任务,而不是故事。
更佳的拆分方式(按用户结果或流程步骤)
Password‑reset feature
- 用户可以请求重置邮件。
- 用户可以打开安全的重置链接。
- 用户可以设置新密码。
- 用户可以看到明确的成功或错误状态。
Checkout feature
- 买家在登录后可以保存购物车。
- 买家可以输入收货地址。
- 买家可以使用一个优惠券。
- 买家可以看到明确的付款失败信息。
每个部分都交付有价值的结果,能够被测试,并且更易于估算。
常见错误应导致审查不通过
| 错误 | 解决方案 |
|---|---|
| 故事仅是一个标签 | 围绕 一个 用户需求重写它。 |
| 故事混合了多个结果 | 将其拆分为更小的价值块。 |
| 故事实际上是任务 | 将技术工作放在故事 下方,而不是 代替 故事。 |
| 故事没有明确的验收检查 | 添加简单的通过/失败行为。 |
| 故事听起来有用但无法测试 | 收紧行为和预期结果。 |
快速自检: 新同事能阅读此内容并复述相同功能吗?
如果不能,故事仍然过于模糊。
快速审查示例
作为购物者,我希望获得更好的愿望清单支持,以便我能够管理已保存的商品。
那听起来还行,但审查会暴露出问题。
问题会立即出现
- 保存一个商品还是多个?
- 重新排序商品?
- 分享清单?
- 删除商品?
- 价格变动提醒?
现在把它和下面的对比一下:
作为购物者,我希望将商品保存到愿望清单,这样我以后可以不必再次搜索而直接回来。
这就紧凑得多。它仍然需要验收检查,但现在团队只在审查一件事,而不是五件隐藏的事。
总结
实际的敏捷故事评审不是为了润色措辞,而是为了检查团队是否能够在不猜测的情况下构建并测试同一件事。
最快的成功通常来源于两个习惯:
- 使用像 INVEST 这样的简单质量过滤器。
- 将大型故事按用户价值而不是内部任务进行拆分。
想要完整指南?
本文聚焦于评审方面。完整指南更深入地探讨了:
- 敏捷故事如何帮助团队构建正确的功能。
- 如何从一开始就清晰地编写它们。
- 验收检查的工作方式。
- 更多干净拆分大型故事的示例。