2009-07-07 33 views
1

我们是一小组PHP开发人员,他们正在考虑在工作流程中集成或不集成TDD,以提高Web应用程序的质量,同时消除令人沮丧的手动回归测试。我的问题是如果我们开始使用TDD,平均需要多少开发时间?TDD和开发时间

回答

4

TDD不仅仅是为了编写测试来保护你的代码。这是关于驾驶设计的测试。所以你最终可能会写更多的代码,但是你花在设计上的时间更少(或者由于缺乏设计而解决问题)。

当你学习如何使用各种测试/模拟框架并理解如何使用单元测试来驱动你的设计时,我认为很多开销会在初始阶段(简要地说:写一个失败的测试,然后编写最简单的可能的功能代码,以使测试过去,然后在必要时重构功能代码)。

一旦您的团队加快了使用TDD和您需要的各种工具,您们可能会比现在更有效率。

2

TDD 保存时间。我无法从PHP的角度讲 - 不知道什么样的测试框架可用 - 但对于Java来说,当我处于TDD时,我的流程更快了,更快了。而且我的代码有更少的错误,所以我花费更少的时间修复它,更少的时间找到错误。红绿重构驱动着你,让你走上正轨,让你前进。

+0

+1 - TDD节省了开发周期后端修复bug的时间。如果没有,为什么要麻烦? – Michael 2009-07-07 15:01:47

0

TDD迫使您像您的代码使用者一样思考,并将重点从实施细节转移到易用性:“成为您自己的客户”。作为一个经验法则,你将最终编写两倍的代码。

0

在编写测试时有点失落的时间。然而,在实践中,我发现这并不是那么糟糕,因为在编写代码时通常会编写测试,所以您将它们写入同一遍(我发现我花更多时间思考如何编写什么代码以及如何编写代码我在做的比实际的代码 - 所以编写测试只会增加“实际写入”部分)。另一种说法是,即使我写了两倍的线数,它实际上只有10-20%的罚分。

另一个可能的失去时间的来源,可能是一个更大的一个,是重写你可能需要做的是让你的代码可测试,尤其是如果你有一个庞大的代码库,其中包含分散的依赖关系和全局状态

当然,当你必须改变代码,但如果你正在考虑编写测试,你可能已经知道了这一点。

2

我不打算竖起TDD的好处..你只需要尝试一下
回答您的具体问题... 从我的经验来看,我认为测试代码与产品代码的比率大约在3:1之间 您可以用TDD将增加30%的时间。当然,这是假设你已经计时了一些TDD时间,而不是初学者(在这种情况下,缓冲区应该更高)......并且YMMV

6

不要指望TDD来提高质量。拥有高质量的心态更重要。我已经看到了高质量的TDD前代码,这些代码经过了严格的测试 - 因为团队成员有生产产品的动力,他们可以引以为豪。我看到Agile XP团队做TDD会产生绝对的垃圾,因为他们没有做到这一点,没有任何所有权的骄傲。如果您拥有所有权,您可以使用适合您的任何流程生成高质量的代码。

因此,不能保证TDD能够提高产品质量。但是,如果您的团队的驱动力更强,并且拥有并拥有所有权的所有权,那么TDD将为您提供机会以生成更好的代码,而不是因为它会更好测试,必然,但因为它会改变你的代码的设计方式。

TDD可以改进各个类的设计。不过要小心。您有将个人对象的复杂性迁移到对象交互领域的风险,然后不能充分测试,所以请确保您在该级别进行测试。

如果你已经进行过单元测试,TDD最初会使开发速度稍微慢一些,但是差别应该在几周内逐渐减小。

如果你不是单元测试,那么单元测试(TDD或常规)will save you time

+0

阿门以“天生的所有权为荣”。如果你有这些,各种发展过程都会带来质量。如果没有,你不能强迫它通过过程发生。 – 2009-07-08 01:08:04