单元测试的投资回报是否有确凿的证据?
单元测试对我来说听起来很棒,但我不确定我应该花时间真正学习它,除非我能说服其他人具有重要价值。 我必须说服其他程序员,更重要的是说服管理中的bean-counter,花在学习测试框架,编写测试,保持更新等等上的额外时间将会为自己付出代价,然后付出一些代价。
有什么证据? 是否有人实际上开发了两个独立团队的相同软件,一个使用单元测试,另一个不使用,并比较结果? 我对此表示怀疑。 我只是想证明这一点:“在互联网上查看,每个人都在谈论它,所以它一定是正确的做法”?
在哪里有确凿的证据说服外行,单元测试值得付出努力?
是。 这是由Boby George和Laurie Williams在NCST进行的研究以及Nagappan等人的另一项研究的链接。 我相信还有更多。 威廉斯博士关于测试的出版物可能为找到它们提供了一个很好的起点
[编辑]以上两篇论文特别提到了TDD,采用TDD后的初始开发时间增加了15-35%,但是释放前缺陷减少了40-90%。 如果您无法阅读全文版本,我建议您使用Google Scholar来查看是否可以找到公开的版本。
“我必须为其他程序员和更重要的是管理中的bean计数器提供帮助,在学习测试框架,编写测试,保持更新等方面所花费的额外时间将为自己付出代价,然后再付出一些代价。 “
为什么?
为什么不就这么做呢,静静地离散。 您不必一次完成所有工作。 你可以用小块做到这一点。
框架学习只需要很少的时间。
只写一个测试,花费很少的时间。
没有单元测试,你所拥有的只是对你的软件有一定的信心。 通过一次单元测试,您仍然有信心,并且证明至少有一次测试通过。
这就是所需要的。 没有人需要知道你在做什么。 去做就对了。
我采取了不同的方法:
你有什么保证你的代码是正确的? 或者当你的团队中的某个人改变func1()时,它不会破坏假设X? 如果没有单元测试保持“诚实”,我不确定你有多大的保证。
保持测试更新的概念很有趣。 测试本身并不经常改变。 与生产代码相比,我有3倍的测试代码,并且测试代码已经改变很少。 然而,这是什么让我在晚上睡得好,让我告诉客户我有信心可以在不破坏系统的情况下实现Y功能。
也许在学术界有证据,但我从未在商业世界的任何地方工作过,任何人都会为这样的测试付费。 然而,我可以告诉你,它对我来说效果不错,花时间习惯测试框架,写作测试让我真正思考我的需求和设计,这远远超过我在开发团队时所做的工作没有写测试。
这就是它为自己付出的代价:1)你对自己的代码有信心,2)你比别人更早地发现问题。 您没有质量保证的家伙说:“嘿,你不烦边界检查的XYZ()函数,是吗? 他没有得到发现错误,因为你发现它在一个月前,这是好的他,对你有好处,对公司有好处,对客户有好处。
显然这是一个轶事,但它为我创造了奇迹。 不知道我可以为您提供电子表格,但我的客户很高兴,这是最终目标。
链接地址: http://www.djcxy.com/p/50809.html