TDD入门?

cod*_*fun 10 .net tdd code-coverage mocking

我们正处于尝试实施TDD的初始阶段.我演示了Visual Studio Team System代码覆盖/ TDD工具,团队对这些可能性感到兴奋.目前我们使用Devpartner进行代码覆盖,但我们想要消除它,因为它很昂贵.我们在TDD方面的经验非常有限,并且希望确保我们不会走错方向.目前我们使用SourceSafe进行源代码管理,但将在大约一年内迁移到Team System.

我可以告诉你我们的应用程序是以数据为中心的.我们有大约900个表,6000个存储过程和大约45GB的数据.我们有很多基于用户数据和系统中不同费率的计算.我们的很多代码也是基于时间(计算当前日期的兴趣).其中一些计算非常复杂且非常密集(只有少数人知道其中一些的详细信息).

我们希望实施TDD来解决质量保证问题.许多开发人员被迫在他们不熟悉的领域修复bug并最终破坏某些东西.开发人员也几乎不敢触摸,因为代码被系统中的所有内容使用.我们想要缓解这个问题.

我担心,因为我们的代码是以数据为中心的,因此实现TDD可能比大多数系统稍微复杂一些.我正在努力想出一个我可以向管理层提出的游戏计划,但我希望不要陷入一些TDD初学者的错误.此外,如果Team System中的工具/设施使TDD更加完整,那么这将是不错的,但我们不想等待Team System开始.

我们要问的第一个问题是,我们应该从visual studio中的工具开始吗?我读过帖子,人们抱怨视觉工作室中的内在工具(需要创建一个单独的项目来创建你的测试)但是视觉工作室中的工具的一件事是他们是免费的,并且集成是好的.如果我们决定使用XUnit,MBUnit或NUnit这样的其他路线,那么我们很可能会有一些可能很高的成本:

1)如果我们想要IDE集成(未提及我们的大部分代码是VB.Net)
--- TestDriven.Net或Resharper或?????

2)如果我们想要代码覆盖
--- NCover(其功能似乎相当昂贵)

此外,我在visual studio 2010中看到了一些非常酷的功能.比如能够进行输入测试(在表单上输入的数据)或记录用户所做的事情的能力,然后将其输入到单元测试中以重现问题.

此外,虽然我还没有完全掌握嘲弄对象的概念,但我知道很多人都认为这是必须的.问题是所有的模拟框架都可以插入到visual studio的TDD版本(MSTEST)中吗?

我告诉管理层我们应该只是添加回归测试(新开发或发现错误),但不要试图通过我们所有的代码并进行单元测试.这将是太大的项目.

无论如何,我会感激任何人的帮助.

Yis*_*hai 8

首先要做的是得到这本书:

有效地使用遗留代码

对于这样一个大型项目,请阅读并内化.数据驱动应用程序上的TDD足够困难.在传统的,你需要一些认真的计划和努力.值得我认为,但它仍然是一个很大的曲线.


Arn*_*psa 5

不要急于上帝的缘故,不要试图强迫开发者做TDD.

否则 - 你会得到凌乱的低质量"测试",这些测试将在几个月后被删除,开发人员将永远不想再听到TDD.

对于TDD最重要的要求- 良好的如何编写测试知识(很明显的原因).

第二个要求- 良好的使用技术的知识.
那是因为如果编写任何代码都很困难,那么设计代码就不可能了.

使用过的工具实际上并不重要.

Ps吨的遗留代码和以数据为中心的应用程序=>一个很好的灾难模型.