我们正处于尝试实施 TDD 的初始阶段。我演示了 Visual Studio Team System 代码覆盖率/TDD 工具,团队对这种可能性感到兴奋。目前我们使用 Devpartner 进行代码覆盖,但我们希望消除它,因为它很昂贵。我们在 TDD 方面的经验非常有限,并且希望确保我们不会走错方向。目前,我们正在使用 SourceSafe 进行源代码控制,但将在大约一年内迁移到 Team System。
我可以告诉您,我们的应用程序非常以数据为中心。我们有大约 900 个表、6000 个存储过程和大约 45GB 的数据。我们有很多基于用户数据和系统中不同费率的计算。此外,我们的很多代码都是基于时间的(计算当前日期的利息)。其中一些计算非常复杂且非常密集(只有少数人知道其中一些的细节)。
我们希望实施 TDD 来解决 QA 问题。许多开发人员被迫修复他们不熟悉的领域中的错误,并最终破坏了某些东西。还有一些开发人员几乎不敢触及的领域,因为系统中的所有内容都使用代码。我们希望缓解这个问题。
我担心,由于我们的代码是如此以数据为中心,因此实现 TDD 可能比大多数系统要复杂一些。我正在尝试制定一个可以提交给管理层的游戏计划,但我希望不要陷入一些 TDD 初学者错误中。另外,如果 Team System 中的工具/设施使 TDD 更加完整,那就太好了,但我们不想等待 Team System 开始。
我们问的第一个问题是我们应该从 Visual Studio 中的工具开始吗?我读过人们抱怨 Visual Studio 中的内在工具的帖子(需要创建一个单独的项目来创建您的测试)但 Visual Studio 中的工具的一件事是它们是免费的并且集成良好。如果我们决定走另一条路,使用 XUnit、MBUnit 或 NUnit 之类的东西,那么我们很可能会付出一些可能很大的成本:
1)如果我们想要IDE集成(未能提及我们的大部分代码是VB.Net)
---TestDriven.Net 或 Resharper 或??????
2)如果我们想要代码覆盖率
---NCover(就其功能而言似乎相当昂贵)
另外,我还看到了 Visual Studio 2010 中演示的一些非常酷的功能。比如进行输入测试(在表单上输入数据)的能力或记录用户所做操作的能力,然后将其输入到单元测试中以重现问题。
另外,虽然我还不太掌握模拟对象的概念,但我知道很多人认为这是必须的。问题是所有的模拟框架都可以插入 Visual Studio 的 TDD 版本(MSTEST)吗?
我建议管理层我们应该只添加回归测试(新的开发或发现的错误),但不要尝试遍历所有代码并进行单元测试。这工程太大了。
无论如何,我将不胜感激任何人的帮助。