6.1. 在写代码之前写测试

在开始编写故事代码之前,验收测试可以为程序员提供大量有用的信息

例如,想想“测试不同交易金额(包括超过信用卡额度限制)”。

如果在程序员开始写代码前写了这个测试。它会提醒程序员处理因信用额度不够导致交易失败的情况。

如果没有看到这个测试,有些程序员就会忘记支持这种情况。

显然,为了让程序员尽早了解这些信息,应当在为这个故事编写代码前就开始制定验收测试

一般在下面这些时候写测试。

  • 开发人员和客户讨论故事且需要记录明确细节时
  • 在迭代开始时,在写代码前作为一项专门的任务
  • 在开发中或之后的任何时候发现新的测试时

理想状况下,在客户和开发人员讨论故事的时候,他们把细节都写成测试

在迭代的开始时就要过一遍所有故事,写一些能想到的测试。比较好的做法是,考虑每个故事,然后问一些类似下面的问题。

  • 关于这个故事,程序员要知道什么
  • 对于怎么实现这个故事,我的想法是什么
  • 有没有一些特殊情况会使用这个故事有不一样的行为
  • 这个故事什么情况下会出错

下面有一个真实项目的例子,一个扫描软件的故事。

这个故事的作者清晰知道他的期望。

例如: 在一个新的文档中打开新扫描的页面,即使软件已经打开了一个文档。

这个例子中,这个期望被作为故事的一部分卸载卡片的正面。我们也可以轻松的将这个期望作为卡片背面的第一个测试。重要的是,在程序员开始实现这个故事前,通过故事卡片可以了解这个期望。

否则,程序员很有可能写出不一样的软件行为,如将新扫描的页面插入到当前文档。

那如果我们有了这样清晰的期望,我们应该告诉程序员你的期望

比如,我们可以这样描述我们的期望。

用户可以扫描页面并将其插入新的文档。如果已经打开一个稳定,那么程序应该提示用户并关闭当前文档。