一、Definition
The acronym INVEST helps to remember a widely accepted set of criteria, or checklist, to assess the quality of a user story. If the story fails to meet one of these criteria, the team may want to reword it, or even consider a rewrite (which often translates into physically tearing up the old story card and writing a new one).
A good user story should be:
- "I" ndependent (of all others)
- "N" egotiable (not a specific contract for features)
- "V" aluable (or vertical)
- "E" stimable (to a good approximation)
- "S" mall (so as to fit within an iteration)
- "T" estable (in principle, even if there isn't a test for it yet)
译文
首字母缩略词 INVEST有助于去记住一个被广泛接受的一套标准,或清单,来评估用户故事的质量。如果故事不符合下述条件之一,团队可能要改写它,甚至可以考虑重写(这往往转化为实际撕毁老故事卡,写一个新的)
二、原则 (INVEST)
2.1 Independent(独立的)
- 每个 User Story 都是独立的,不要考虑与该 User Story 无关的事情。
例如:
作为一个用户,我希望可以看到登录界面,这样我就可以登录到系统中。
那么就不要考虑与登录无关的事情,专注于登录就好。
2.2 Negotiable(可协商的)
- User Story 不是写好了就不修改了,客户和开发者需要经常沟通来确定最终的 User Story。因为很多细节往往在开发过程中才会考虑到。
例如:
用户可以选择学校
假设这是最初的 User Story 之一,开发到了一定阶段,会出现新的问题:
用户选择学校之后可不可以选择专业?
这就需要开发者和客户好好沟通,而且是口头沟通,以达到最好的效果。
2.3 Valuable(有价值的)
- 每个 User Story 对于用户要有一定的实现价值。
例如:
作为用户,我希望点击逻辑题,可以进入到逻辑题页面,这样我就可以开始做题了。
对于用户来说,这个 User Story 的价值就是他可以通过点击逻辑题,进入到逻辑题页面,这样才可以答题。
2.4 Estimable(可估的)
- 对开发人员来说,能估算故事的大小,或者是把故事变为可用的代码的时间量是很重要的。一般有以下3个原因会导致故事不可估计。
- 开发人员缺少领域知识
- 开发人员缺少技术知识
- 故事太大了
例如:
一个找工作的人可以找到一份工作。
这个故事就太大了,不可估计。我们要估计它,就要把它分解成多个更小的故事。
2.5 Small(较小的)
- 故事的大小很关键,故事太大或者太小,都无助于制定计划。
- 合适的故事大小最终取决于团队、它的容量及所使用的技术。
例如:
用户可以登录。
这个就有点大,就可以分为:
1. 作为一个用户,如果输入正确账号及密码,我可以登录到系统中。
1. 作为一个用户,如果输入错误密码,那么我将无法登录到系统中。
2.6 Testable(可测试的)
- 必须是可测试的,成功通过测试可以证明开发人员正确的实现了 User Story。
例如:
用户绝不需要花很多时间等待窗口出现。
这个就是不可测试的。这个 User Story 可以改为:
在95%的情况下,新窗口会在2秒内打开。
三.推荐阅读
1.INVEST in Good Stories, and SMART Tasks