大师与程序员之间关于测试覆盖率的对话

在《谈谈测试覆盖率》文章中说到了测试覆盖率与代码质量的关系,纠正了覆盖率高就质量好的简单论断。
今天我们从另外一个视角来说说测试及覆盖率。当然,这里的测试都是指开发者自己做的自动化测试,不是测试人员的验收测试。

一天早上,程序员A走到大师座位上问:

A:“我已经写好了部分单元测试代码,请问我该达到多少测试覆盖率?”
大师:“不要太在意覆盖率,把测试用例设计好,测试代码写好就可以了。”
程序员A带着满足的微笑离开了。

过了几天,程序员B又跑到大师的座位上问同一个问题,大师指着正在沸腾的水说:

“用这个水煮饭,该放多少粒米?”
程序员B一脸迷茫,说:
“这个我怎么能清楚的告诉你?这个问题依赖于有多少人吃饭,他们的饥饿程度,是否有其他的辅助食物,你有多少米等。”
大师:“你说的太对了”。
程序员B也带着满足的微笑离开了。

又过了几天,程序员C也找到大师的座位上问这个问题。

大师用拳头捶着桌子坚定地回答:“绝对不能少于80%的覆盖率”。
程序员C也带着满足的微笑离开了。

这时候,坐在大师傍边的一位菜鸟程序员D迷茫了,忍不住问大师:

“大师,我听到你回答三个人同样一个问题,但是答案却是完全不一样,为什么呢?”
大师从椅子上站起来说:
“走,去喝一杯茶,让我慢慢讲你听。”

当他们的茶杯中的新茶冒出热气后,大师说:
“程序员A是新手,且刚开始做测试。当前他有很多没有经过测试的代码,还有很长的路要走;这个时候要求他达到一定的测试覆盖率目标,会使他的情绪变的很沮丧且毫无意义。他现在要做的就是写一些测试代码并执行,慢慢的他会考虑到覆盖率的。”

“程序员B,很有经验,写过不少代码,包括测试代码。当我反问他要往沸腾的水里面放多少粒米的时候,我帮助他意识到了测试代码的数量依赖很多因素,且他比我更了解有哪些因素,因为这毕竟使他的代码。这个问题并没有一个简单的,唯一的答案。我相信他能够知道该怎么做”

菜鸟D说:“我知道了,这个问题没有简单的,唯一的答案,。但是我不明白,你为什么给程序员C一个简单的唯一的答案呢?”
大师开怀大笑,说:
“程序员C只想要一个简单的唯一的答案,虽然不存在简单的唯一的答案,要是没有这个明确的答案他就不能继续工作。”

大师说完后,菜鸟就什么都没说,他们静静地喝着茶。

原文How much test coverage do you need? – The Testivus Answer

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

  1. Guang说道:

    但国内大部分公司追求的还是100%的覆盖率,并以此为荣,实际上累死累活还是开发自己,Simon最近研究LLT,有啥感想?

  2. Crazybaby说道:

    测试用力 -> 测试用例

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部