TDD有效吗?

在一次有趣的讨论中,一个非常受人尊敬的人“捏造”了“坚不可摧”的论点:
有许多研究证明了TDD的有效性。

真。如果您访问Google学术搜索,请输入“ TDD”和“ Eficiency”关键字-会有很多科学文章,那么简单吗?尽管我本人是TDD的忠实拥护者,但我也对自己持怀疑态度,因此决定检查是否已经科学证明TDD如此酷。

我发现您缺乏怀疑态度令人不安

测试驱动开发(TDD)已经存在了很长时间,并且一直以来一直是争论的焦点。 TDD的本质是,您需要通过编写下降的单元测试来开始开发,然后编写使该测试“绿色”的代码,依此类推。对于那些不是最新的用户,可以在IDE Idea中查看TDD指南

一些开发人员对TDD至少可以将效率和质量提高146%充满信心。一些开发人员肯定知道TDD是完全废话,在编写代码之前编写测试就像在沥青上滑雪一样。这些开发小组之间的妥协不值得等待。

但是回到科学。碰巧的是,碰巧我正在Wrexham Glyndrr大学的计算机科学硕士课程中学习大数据分析(顺便说一句-我推荐给每个人,我将分别撰写),而现在我正在学习“关键研究”模块,在那里他们教你阅读科学文章并分析其有效性。
我们的证据是什么?

关于TDD的有效性和实用性确实有很多研究。但是,如果您自己阅读研究,您会发现它们得出的结论相互矛盾

例如,在2007年发布的“测试驱动开发的有效性和效率的实验评估”报告中,得出的结论是TDD在不影响质量的情况下提高了开发人员的生产率[1]。

在另一份报告中,它检查了其他几项研究的结果并进行了自己的研究,“评估测试驱动开发的有效性:优势和缺陷”,2017年得出结论,TDD可以提高产品质量,但会降低生产率。此外,已经观察到大多数开发人员发现TDD不自然[2]。

根据另一项研究,“测试优先开发的有效性的重复实验”,2013年,研究人员未能发现“测试优先”或“测试最后”方法对开发人员生产率或产品质量的令人信服的显着影响[3]。

为了深入了解TDD有效性和实用性的“证据”,您可以阅读概述报告“ Test Driven Development Research Projects and Experiments”(2012年测试驱动开发研究项目和实验概述)[4],其中,基于大量可用研究,他们试图得出有关证据的结论。 TDD的效率和积极作用。作者得出的结论是,没有令人信服的证据表明TDD的有益作用。与先前研究结果的差异,作者证实了“确认偏差”-研究表明TDD的有效性最初是基于TDD有效的假设。
那么,为什么人们(包括我)都认为TDD是一种很好的做法?
阅读研究后,我只有一个合理的答案-TDD的有效性和适用性主要取决于特定的开发人员。显然,对TDD有效性的研究并未充分考虑到开发人员不是机器人,并且TDD不是程序。对于某些开发人员而言,TDD将带来良好的结果,对于某些开发人员而言-TDD与简单的编写单元测试之间不会有显着差异,对于某些开发人员而言-TDD会导致质量,生产率和积极性下降。

编程是社交活动。社会交往的问题在于它不是一门精确的科学。仍然需要弄清楚如何进行或多或少的科学实验来确认/反驳这一假设。首先,我提供一个调查。

如果您突然想与讲英语的同事共享此出版物,则可以使用稍微正式一些的英文版本:medium.com/@alexspush/is-tdd-effective-2474c0471ac4

来源列表

[1] A. Gupta,P. Jalote“测试驱动开发的有效性和效率”,在西班牙马德里,第一届国际经验软件工程与测量国际研讨会上,2007年发表
[2] Z. Khanam,M. Ahsan,“评估测试驱动开发的有效性:优势和陷阱”国际应用工程研究杂志卷。 ,第12号,第18页。7705,2017 . 可用:www.ripublication.com/ijaer17/ijaerv12n18_81.pdf。 [2020年5月13日访问]。
[3] D. Fucci,B。Turhan,“关于测试优先开发的有效性的重复实验”,在美国医学会巴尔的摩ACM / IEEE国际研讨会上发表,2013年,美国马里兰州巴尔的摩
[4] Bulajic,S。Sambasivam和R. Stojic在“信息科学与IT教育会议论文集”(InSITE)上发表了“测试驱动的开发研究项目和实验概述”,2012年。pdfs.semanticscholar.org/3278/971bb53a25822171df127d47a57243dd3bbd.pdf[2020年5月13日访问]。

All Articles