假设其中一个程序比较大(例如,在C#中为900k SLOC),所有程序都已进行了注释/记录,内容井井有条,运作良好。整个代码库由一个不再在公司工作的高级开发人员编写。所有代码都可以按原样进行测试,并且在整个过程中都使用IoC -出于某些奇怪的原因,他们没有编写任何单元测试。现在,您的公司希望分支代码,并希望添加单元测试以检测更改何时破坏了核心功能。
- 添加测试是一个好主意吗?
- 如果是这样,一个人怎么会开始这样的事情?
编辑
好的,所以我没想到答案会得出相反的结论。无论如何,这个问题可能不在我的掌控之中。我也阅读了“重复的问题”,并且普遍的共识是“编写测试很好” ...是的,但是在这种特殊情况下不太有用。
在考虑为遗留系统编写测试时,我并不孤单。我将保留有关花费多少时间以及新测试发现问题的次数(以及没有发现问题的次数)的指标。我会回来,并从现在开始大约一年后用我的结果进行更新。
结论
因此,事实证明,基本上不可能将任何形式的正统测试都添加到现有代码中。代码正常工作后,您显然无法对测试进行红灯/绿灯测试,通常通常不清楚哪些行为对测试很重要,也不清楚不清楚从何处开始,当然也不清楚何时完成。真的,甚至问这个问题都错过了编写测试的重点。在大多数情况下,我发现使用TDD重写代码实际上比解密预期的功能和追溯添加单元测试要容易得多。解决问题或添加新功能时,情况有所不同,我认为现在是添加单元测试的时候了(如下所述)。最终,大多数代码都会被重写,通常比您预期的要早-我采用这种方法