• 说我们已经意识到一个值的使用得太晚。项目已经成熟,很多客户开始使用它。
  • 说自动化测试的使用是主要的功能系统测试,并有一个很好的处理自动化GUI测试。
  • 说我们有新的功能要求,以及新的错误报告(!).那么好处理的发展仍在继续。
  • 注意到那里就已经是充足的业务对象没有或很少单元的测试。
  • 太多的合作,/它们之间的关系,这再次进行测试,只有通过更高级别的功能系统测试。没有一体化测试本身。
  • 大数据库中的地方有很多的表意见,等等。只是到化一个单一的业务对象已经转良好的交易的数据库圆的旅行。

我们怎么可以介绍TDD在这个阶段?

嘲讽的似乎是要走的路。但数量的嘲讽我们需要在这里做的似乎是太多了。听起来像阐述基础设施需要发展的嘲讽系统工作对于现有的东西(BO、数据库等)。

这是不是意味着有效适当的方法,只有当开始从头开始?我有兴趣听到关于可行的战略来介绍TDD在一个已经成熟的产物。

有帮助吗?

解决方案

创建一个复杂的嘲讽的基础设施将可能只是隐藏的问题,在你们的代码。我建议你开始与一体化测试,测试数据库,围绕的区域的代码基于你计划的改变。一旦你有足够的测试,以确保你不会破坏任何东西如果你做出改变时,你就可以开始重构代码,使它更加可测试的.

Se也迈克尔羽毛很好的书 工作有效地与传统的代码, 必须阅读人的思想引入TDD入一个代码的基础。

其他提示

我认为它完全可行的介绍TDD入现有的应用程序,事实上我最近做了它自己。

这是最简单的到码的新的功能在一分时双方式和改组现有编码,以适应这一点。这样你开始的一小部分的你的代码进行测试,但效果启动传播通过整个码的基础。

如果你已经有了一个错误,然后编写一个单元的测试,以复制,重构的代码作为必要的(除非这种努力是不值得的话)。

就个人而言,我不认为有任何需要发疯,并尝试和改进测试到现有系统,可以是非常繁琐而没有大量的利益。

总之,从小规模开始,项目将成为更多和更多的测试感染。

是的,你可以。从你介绍该项目是在一个良好的形状固体量的功能测试自动化是一个方向走!在一些方面甚至更加有用于单元的测试。记住,TDD!= 单元的测试,它是所有关于短迭代和固体接受的标准。

请记住,具有实现有和接受的项目实际上使试验容易的工作程序是最佳的要求规范。所以你是在一个更好的位置比其他人只是一张废纸的工作。

刚开始工作的新的要求/bug修复与受影响。记得,将有一个相关的开销交换的方法(确定你的客户知道还有这个!) 和可能期望一个很好的处理不愿意从团队成员使用的'良好古老的方式'.

不要碰旧的东西除非你需要。如果你将会有一个增强的请求,这将影响到现有的东西然后因素在额外的时间做额外的置东西。

我个人看不到多少价值在引入一个复杂的基础设施的模拟-当然有一种方法来实现相同结果的一个轻型模式,但它显然取决于你的情况

一个工具,可以帮助你测试的遗产代码(假设你可以不\不会有时间重构,是Typemock隔离器:Typemock.com 它允许注入的依赖关系到现有的编码,而不需要提取接口,这样的因为不使用标准的反射技术(动态代理等。)但是,使用的探查Api代替。它已经用来测试的应用程序,依靠sharepoint、HTTPContext和其他有问题的领域。我建议你去看一看。(我的工作作为一个开发公司,但它是唯一的工具,不能迫使你重构现有的遗留系统的代码,以节省时间和金钱) 我也强烈建议"的工作有效地与传统的代码"对于更多技术。

Roy

是的,你可以。不这样做一次,但介绍的只是你需要测试一个模块时,你触摸它。

你也可以启动有更多的高级验收测试和你的工作方式下从有(看一看 Fitnesse 为此)。

我会开始与一些基本的集成试验。这将会获得的其余部分的工作人员。然后开始单独的部分你的代码,它具有依赖性。努力使用依赖注射,因为它将会使你的代码的更多的检测.治疗错误作为一个机会,写测试的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top