代码覆盖的15种典型情景-1
上一篇 /
下一篇 2012-10-26 14:17:07
/ 个人分类:杂谈
)R9S*VJ
LU0 代码覆盖(Code Coverage)为何物?相信程序员特别是测试人
员不陌生,很多人都喜欢用代码覆盖来驱动测试的开展和完善。确实代码覆盖可以找出测试疏漏和代码问题,但是单纯的代码覆盖率高低并不能直接反映代码质量的
好坏。大多我们的努力方向都是找出那些没有覆盖到的代码,然后补充用例,完善测试。而摆在我们面前的问题是:是否我们已经充分认识到哪些不需要、不能、必
须被覆盖?只有对代码覆盖的各种情景了然于胸,才能不盲目乐观于代码覆盖率之高,悲观于代码覆盖率之低。在实践中(本文面向主要Java语言,基于
emma工具),梳理可知,对于代码覆盖我们可能都会遇到以下15种典型情景:51Testing软件测试网J1I}Fa
dl
51Testing软件测试网#hVDG&l/a$z 1、代码覆盖51Testing软件测试网~8Z!eM;T;RY.oy
51Testing软件测试网bugd1|#LFX U 即代码所有路径被经过,这种需要注意的是:不应该覆盖而被覆盖的情况。例如某种特殊异常就是不期望遇到的,但是遇到了,异常处理的代码也覆盖了,这时,我们应该追溯异常产生的根本原因,而不因覆盖了就直接忽略。
5X![:[je-e0_DE*yfn\w0 提示:不仅要关注未覆盖的代码,也要关注覆盖的,特别是偶然覆盖的代码。
^$~or{|051Testing软件测试网@9t)]7q7TsY 2、废弃的功能
6|v _S:bwu-R/W0D051Testing软件测试网;v4z4eT~#mS6n(C)l 一些功能点随着产品版本不断更新,可能会被取消,这部分功能可以直接移除,保留只会让代码看起来越冗余。如果某天需要参考或找回删除的那些代码,CVS/SVN工具就搞定了。51Testing软件测试网 BC};CL.v{;].D.b
51Testing软件测试网0d_Ea,rnq T } 提示:不用的功能不需要覆盖,要及时删除,不通过保留或者注释的方式残留在代码中。51Testing软件测试网|.z7e;k5THg
51Testing软件测试网2N:m%\:`*Ai 3、工具类(助手类)、常量类等的私有构造器
YKSGU9sCR]j)W051Testing软件测试网(f*lu*Wu_eM A.F ^)x 工具类和常量类共有的特征是对外开放的都是静态方法,调用方法的时候,无需创建实例,所以推荐实践是创建一个private的构造器方法。这导致类的构造器代码无法覆盖(不考虑反射等方式)。51Testing软件测试网!h:A&]?S5n9_T5xp
51Testing软件测试网.C6l_pOA 相反,如果某天发现对于这样的类覆盖率为100%,那检查下是否代码写的不规范:用默认构造器,然后通过实例来调用静态方法。
v.? jx da/tvr:~W0