实际经验证明:TDD可以提高软件质量

发表于:2010-6-23 17:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Chris Sims    来源:InfoQ

  在Empirical Software Engineering杂志上首次发表的一篇研究报告声称:“看来TDD可以应用在多个领域中,并显著降低软件的缺陷密度,同时也不会明显降低开发团队的工作效率。”研究对比了4个在微软IBM执行的项目,这些项目使用了TDD方式开发,并与没有使用TDD开发的类似项目进行了对比。

  研究报告的作者包括:来自微软的Nachi Nagappan和Thirumalesh Bhat 、IBM的E. Michael Maximilien,以及北卡罗来纳大学的Laurie Williams,并发布在Empirical Software Engineering杂志的第13卷第3期上。读者也可以在微软研究院的Empirical Software Engineering Group中找到该报告。

  报告中研究的4个案例,1个来自IBM,3个来自微软。每个案例研究都对比了开发同一个产品的两个团队,他们使用同样的开发语言和技术,处于同一级别的管理之下,唯一不同之处在于:一个团队使用TDD,另一个不用。在开发过程中,这些团队都不知道自己处于研究之下。IBM案例中的团队在开发设备驱动程序,微软的团队在开发Windows、MSN和Visual Studio的相关应用。

  报告中讲述了团队使用的TDD实践,包括分钟级别的工作流程(minute-to-minute workflow)和任务级别的工作流程(task-level workflow)。

  分钟级别的工作流程如下:

  ● 编写一些新的小单元测试用例

  ● 运行测试,看着它们失败

  ● 编写实现代码以满足测试

  ● 重新运行单元测试用例,确保它们现在可以通过

  任务级别的工作流程是这样子的:

  ● 将新的实现代码和单元测试集成到现有的代码库中

  ● 重新运行所有的测试用例,确保新的代码不会导致任何测试失败

  ● 重构实现代码和测试代码

  ● 重新运行所有的测试用例,确保重构后的代码不会导致任何测试失败

  缺陷密度是通过每千行代码的缺陷数目来衡量的。相较于不使用TDD的项目而言,这四个产品在发布前的缺陷密度降低了40%到90%。从团队管理层的主观报告看来,在开发的初始阶段,使用TDD的团队要多花15%到35%的时间;不过团队都同意一点:这个时间被减少的产品维护时间抵消掉了。

  报告中的结果可以与Maria Siniaalto在2006年发布的一篇文章相对比。该文章中试图复审并总结其他13项有关TDD的研究,这些研究包括在纯商业背景、半商业背景和学院背景中进行的研究。在文章的结论中,作者写道:

  基于这些现有研究的发现,可以得出结论:TDD看来可以提升软件质量,特别是在纯商业背景中。对于半商业背景或学院环境中的研究来说,结论不是那么明显,可这些研究没有提到任何软件质量的降低。TDD给工作效率带来的效果不是十分明显,而且结果会根据研究的环境发生变化。然而,有证据证明:TDD不一定会降低开发人员的工作效率,或是增加项目的交付时间。某些情况下,TDD会带来显著的工作效率提升;同时,在提到的13个案例研究中,只有两个案例指出工作效率降低了,不过这两个案例同时指明质量的提升。

  您使用TDD有哪些经验?见到质量的提升了么?对于开发人员的工作效率和开发时间,您看到了哪些影响?请在文后留下您的评论,分享您的经验。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号