• 6.1. 在写代码之前写测试

    6.1. 在写代码之前写测试

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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