2011-02-02 76 views
2

在TDD中,每个人都谈论创建单元测试以及如何完成开发。我知道整个周期,但没有人会谈论从需求创建这些单元测试吗? 我已经在文献中的某处阅读过,在开发这些单元测试之前创建一个测试列表总是很好。我的问题是: 在TDD中编写单元测试之前遵循的程序(步骤)是什么?意味着在开发它们之前是否创建单元测试是直接从需求中写入,而不使用任何正式标准或测试列表?测试驱动开发中测试列表的概念

+0

我认为需求规格会影响功能测试而不是单元测试。 – 2011-02-02 02:12:55

回答

2

测试列表只是下一个测试用例的临时存储库。这完全是非正式

测试列表的主要作用是释放你的思想。当你想到一个新的测试时,只需把它写在列表的末尾,然后你就可以忘记它,并专注于手头的问题。

没有程序来编写测试和列表,就像从需求创建UML模型一样。您考虑问题并制作设计。设计完成后,即可开始实施。使用TDD,您从测试的角度思考问题,您在列表中写下一些测试,然后从列表中的简单测试开始。您可以随时向列表中添加(或删除)测试。

bowling game episode是一个简短的阅读,说明从需求到单元测试的过渡。但它没有提到任何测试列表。

我在我的单元测试源文件底部维护我的测试列表作为注释。

void test_foobarShallFailWithNull(void) { 
... 
} 
// the tests I *may* write next 
//void test_foobarShallFailWhenX(void) 
//void test_foobarShallWorkWhenY(void) 
2

根据我的经验,在进行TDD时,需求用于直接确定所需的单元测试。从理论上讲,开发人员会选择整个需求的一个小方面,并为这个方面编写一个单元测试,然后编写最简单的代码以使单个测试通过。事实上,所选择的要求和方面可能会导致开发人员一次识别几个单元测试。测试列表被用作停车场,因此开发人员无需担心丢失测试思路,同时仍然可以集中精力进行一次测试。

1

没什么太重或正式的,你只需坐下来记下你在一张纸上(或电子表格或文本文件)所能想到的所有测试,然后再开始一项任务。

然后,你通过列表​​逐一把它们逐个剔除,当它们完成时将它们排除。如果您在实施过程中提出了一些新测试,请将其添加到测试列表中并继续关注当前测试。当你在列表中没有更多的测试时,你就完成了。

TDD的单元测试是细化的,在大多数情况下,需求/规格不是。因此,您使用需求文档来提出系统级验收测试。为了进行特定的验收测试,您会提出一系列使用TDD实现的任务。