【发布时间】:2010-04-28 15:26:41
【问题描述】:
在引用涉及 TDD 的项目/任务的估算时是否有任何指导方针?
例如,与需要 1 天才能完成的任务的正常开发相比,TDD 驱动的任务应该多花多少时间?多 50% 的时间还是多 70% 的时间?假设开发人员精通语言和测试框架,是否有任何可用的统计数据?
【问题讨论】:
标签: tdd project estimation
在引用涉及 TDD 的项目/任务的估算时是否有任何指导方针?
例如,与需要 1 天才能完成的任务的正常开发相比,TDD 驱动的任务应该多花多少时间?多 50% 的时间还是多 70% 的时间?假设开发人员精通语言和测试框架,是否有任何可用的统计数据?
【问题讨论】:
标签: tdd project estimation
根据我的经验,编写测试花费的时间与开发时间一样多,有时甚至更多(即多花费 100% 到 150% 的时间),但大大减少了修复错误所花费的时间。这里有一些Studies Of Test Driven Development。也可以看看this paper。
【讨论】:
随着开发人员在 TDD 方面变得更好,传统编码和 TDD 之间的实施时间差异将缩小。 TDD 初学者,甚至中级者,可能会忙于决定要编写哪些测试和/或将编写更多测试,这些测试最终在重构后被丢弃。随着经验的积累,TDD'er 会变得更有效率,因为他们在选择要编写的测试方面变得更好、更快
我不确定传统与 TDD 比率的绝对下限是多少。我猜是 1:1.5,但我无法相信大多数开发人员能够像编写代码一样快地测试代码,更不用说编写代码然后编写测试了。
正如其他人所说,花在 TDD 上的额外时间的一个显着回报是,测试驱动代码的调试时间大大减少。
【讨论】:
编码时间应该与无测试开发大致相同。调试时间应减少约 99%。
【讨论】:
使用 TDD 生成代码的另一个好处是编写的测试变成了回归套件。然后测试使这些活动更加安全:
(注意错误修复,我记得有几次我忘记实现几个案例,或者规范中有后期添加,额外的开发只是对适当的测试轻而易举。)
【讨论】:
如果您想要一个数学答案,我的发现是花费在测试上的时间:生产是 2:1(保守的 - 花费在测试上的大部分时间是思考时间)。但是,您不能对当前(非 TDD)估算值应用 3X 因子,因为 TDD 可以帮助您取得稳定的进展。您无需花费时间
在我的脑海中,我会在你现有的估计基础上选择 2 倍。
【讨论】: