在《谈谈测试覆盖率》文章中说到了测试覆盖率与代码质量的关系,纠正了覆盖率高就质量好的简单论断。
今天我们从另外一个视角来说说测试及覆盖率。当然,这里的测试都是指开发者自己做的自动化测试,不是测试人员的验收测试。
一天早上,程序员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
本文链接:http://www.yunweipai.com/1021.html
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/53152.html