您是如何调整单元测试以应对不断变化的需求的?

Joh*_*lén 6 unit-testing

我有一个项目,我一直在使用TDD和单元测试作为"软件vises".本质上,我将需求转换为测试,以验证代码是否符合要求.我很少需要返回并编辑单元测试,而不是重点:只应修改"真实"代码.目前,有900个单元测试.

现在黄金所有者已经改变了一些要求.由于前者的要求在现有的单元测试中是如此彻底的编码,似乎改变它们以符合新的要求将会引起灾难.您如何调整单元测试套件来处理这种变化?

Mne*_*nth 5

根据定义,单元测试不会复制应用程序的要求.它们描述了模块的要求.这是一个区别,即使在具有不同要求的应用程序中也可以重复使用该模块,或者根本不使用该模块.因此,不断变化的要求不会影响实际的单元测试(除了您必须为新模块编写新模块或放弃旧模块,不再需要更改需求的模块).

另一方面:验收测试处理应用程序级别的要求.所以我想你谈论验收测试.

我会将新要求添加为新的验收测试.但对于旧的,你必须仔细研究它们,如何通过改变的要求使它们失效.


Gis*_*shu 2

由于以前的需求在现有的单元测试中被如此彻底地编码,因此改变它们以符合新的需求似乎会带来灾难。

您这么认为的具体原因是什么?我感到有些恐惧,或者只是“在它工作时不要破坏它”

改变发生了。在这种情况下,这意味着更多的工作时间金钱。如果企业没有问题,你也不应该(除非时间表不人道:)。如果规格发生变化,

  • 确保工作版本已签入。
  • 重复步骤 1 以确保万无一失。
  • 扫描您的测试套件。找到您需要取出的。找到需要改变的地方。查找您需要理解的新测试。使用一张白纸做笔记
  • 现在一次进行一个测试。除非您没有遵循 DRY / 一次且仅一次原则,否则您需要进行的任何更改都应该在一个地方。如果没有,您应该早点重构..但还不算太晚..在进行更改之前将代码提取到一个地方
  • 重复上一步直至完成