微博热报:单元测试覆盖率
上一篇 / 下一篇 2012-05-24 10:24:58 / 个人分类:单元测试
h`;P[ r}:lP'@,G0 大家针对这个问题给出了各自的意见:
3@@^G1PK3O-D051Testing软件测试网;oaL4i_/_m吴穹adam:不一定所有行为都必须在单测覆盖的 这个要看分层测试的规划是什么。51Testing软件测试网1?,z0HR@3G$F
6|7uH9D!Ki2U0 Robin圈:1. 首先,要清楚,在该极端情况下,应不应该出异常。有时候出异常才是期望结果。之后,我们才能决定评审的标准。2. 是否测试是根据价值来分割的,而非事件发生的频率。比如站点初始化,极少发生,却很有测试必要。极端情况,类比分析。51Testing软件测试网N-rs9A_J J(w
51Testing软件测试网V?g3a1`$Q&VUP ZEthan苏于登:想问下总体关键,价值在哪里?如果那段代码无价值,就跟若舟想法一样,或许可以删掉。如果代码审核流程不能合适体现价值,应该考虑修改?如果那段代码确实有价值,因为边缘状况确实有可能出现,那加单元测试覆盖其实是很有价值的。
]A T){sdx0F+EP6t,W uj0 林曙湧:黑盒测试有一种技术基于风险的测试(RBT),其思想也许可以借用到白盒测试。其基本思想是测试不可能控制全部风险,所以必须面对风险作出抉择,合理安排你的测试投入。其基本公式是 风险=问题发生时的破坏性×问题发生的可能性。所以不能只考虑风险的单个因子。51Testing软件测试网s!zvK p9L9t2VS
'F~uWE(A.Y!i0 steedhorse:如果能用20%的付出获得80%的测试覆盖率, 我觉得这是好事,而不是坏事。相对于不写单元测试,这也已经是不折不扣的“质的飞跃”了。然后,哪20%是可以牺牲的呢?我觉得错误处理就属于可以牺牲 的。很多时候错误处理的目标仅仅是fail fast,即让程序当场死掉,而不是带着错误继续运行,然后在其它地方莫名其妙地死掉。fail fast更多只是一种对待错误的策略,并不强求程序有确定的行为。所以我觉得在单元测试中这属于可以牺牲的部分。
7f,|W;_'_ h:[051Testing软件测试网}Sf#r'x0L0a姚若舟针对实际的情况,对以上微博做出回复:51Testing软件测试网 J8{ b"M GB0dC
J+Xnyjs c0 回复@吴穹adam:就我提到的案例,代码行为我觉得比较适合在单元测试中覆盖,而且也比较高效。不知道分层测试的规划主要是指哪些方面?
c'?T-Z@!Tk"n"R,q+J&m0$PB0WQ4q:ve0 回复@Robin圈:就我的案例来说,我觉得所谓添加测试价值不高更像是一种托词和惰性吧。其实,那些代码被使用的机会不是很极端,但是加测试需要做一 些隔离,甚至是一些代码抽象,所以就不愿意了。我很赞同TDD的观点,就是没有失败的测试,就不应该写出任何多余的代码来。51Testing软件测试网F*y@ Y(E$Jmq1X
51Testing软件测试网 @ }x n/odhj回复@Ethan苏于登:我很认同。不过,这些改变或许要慢慢来吧。
&K5GC@ f4d O051Testing软件测试网A j:NQi/O回复@林曙湧:我在写单元测试的时候,不会考虑加或不加某个测试的风险和危害有多大的。想到有必要的测试就加了,反正单元测试都很简单直接而且运行很 快。如果不加,一般都是被测试代码不需要的行为。如果单元测试充分的话,会使集成测试的数量大大减少。那时,根据风险评估来考虑如何添加测试,也许不再重 要了。
"h&k