现状:数百万行代码,一百多名开发人员,缺陷频发。我们想避免重复的缺陷,我们想改进代码设计(谁不呢?)。
测试驱动开发(首先是单元测试,然后是代码)听起来很理想:为每个功能编写一个测试用例。
但是,写了这么多代码,怎么实现TDD呢?你从哪里开始 - 低级功能?
还是我们开始 TDD 为时已晚?
现状:数百万行代码,一百多名开发人员,缺陷频发。我们想避免重复的缺陷,我们想改进代码设计(谁不呢?)。
测试驱动开发(首先是单元测试,然后是代码)听起来很理想:为每个功能编写一个测试用例。
但是,写了这么多代码,怎么实现TDD呢?你从哪里开始 - 低级功能?
还是我们开始 TDD 为时已晚?
从有效地使用旧代码开始。
如果您从遗留代码开始,这并不是真正的 TDD - 但您的所有编码都可以是 TDD。当你解决一个新问题时,为它写一个测试。如果你不能,因为遗留类太难测试,那么开始为它们编写测试,切掉一些位,并用测试覆盖这些位。
为了避免重复缺陷:给定一个示例缺陷,编写一个测试来演示它。这可能是一个相对广泛的测试,仅模拟用户活动;还不是单元测试。确保测试失败。做你的研究;找出测试失败的原因。现在 - 这很重要 - 在修复错误之前,编写一个演示错误的单元测试。修复错误,现在您有两个测试,至少其中一个快速,可以保护您免受回归。
由于 Carl 推荐了一本书,我将推荐另一本书:Roy Osherove 的单元测试艺术有一整章是关于“使用遗留代码”的。那一章我还没看,不过前5章很不错,很期待。