6.1. 在写代码之前写测试
在开始编写故事代码之前,验收测试可以为程序员提供大量有用的信息。
例如,想想“测试不同交易金额(包括超过信用卡额度限制)”。
如果在程序员开始写代码前写了这个测试。它会提醒程序员处理因信用额度不够导致交易失败的情况。
如果没有看到这个测试,有些程序员就会忘记支持这种情况。
显然,为了让程序员尽早了解这些信息,应当在为这个故事编写代码前就开始制定验收测试。
一般在下面这些时候写测试。
- 开发人员和客户讨论故事且需要记录明确细节时
- 在迭代开始时,在写代码前作为一项专门的任务
- 在开发中或之后的任何时候发现新的测试时
理想状况下,在客户和开发人员讨论故事的时候,他们把细节都写成测试。
在迭代的开始时就要过一遍所有故事,写一些能想到的测试。比较好的做法是,考虑每个故事,然后问一些类似下面的问题。
- 关于这个故事,程序员要知道什么?
- 对于怎么实现这个故事,我的想法是什么?
- 有没有一些特殊情况会使用这个故事有不一样的行为?
- 这个故事什么情况下会出错?
下面有一个真实项目的例子,一个扫描软件的故事。
这个故事的作者清晰知道他的期望。
例如: 在一个新的文档中打开新扫描的页面,即使软件已经打开了一个文档。
这个例子中,这个期望被作为故事的一部分卸载卡片的正面。我们也可以轻松的将这个期望作为卡片背面的第一个测试。重要的是,在程序员开始实现这个故事前,通过故事卡片可以了解这个期望。
否则,程序员很有可能写出不一样的软件行为,如将新扫描的页面插入到当前文档。
那如果我们有了这样清晰的期望,我们应该告诉程序员你的期望。
比如,我们可以这样描述我们的期望。
用户可以扫描页面并将其插入新的文档。如果已经打开一个稳定,那么程序应该提示用户并关闭当前文档。