/资讯中心/网贷源码/代码覆盖的15种情况(二)

代码覆盖的15种情况(二)

发布时间:2015-12-29 分类:网贷源码

代码覆盖除了之前介绍的8种,还有7种情况,在这里一一介绍:

九、最佳实践

常用的最佳实践一般很难覆盖,也可以不用代码覆盖。

十、子类未使用接口/抽象类

子类未使用接口/抽象类,无需进行代码覆盖,需要重新审视继承体系结构。

十一、代码覆盖工具未做合并

做代码覆盖时,往往工具本身不支持“合并”的功能,会出现一些问题:

时间上:

1.例如对于拥有cache的系统: 系统经过一段时间运行后,重新测试得到的代码覆盖往往不包括cache miss的情况。

2.手工测试问题:每次统计都需要重新完成全部手工测试,否则将丢失数据。

空间上:

1.负载均衡:现在大多系统应用都采用负载均衡技术,如果测试时间不够长且只统计一台系统的代码覆盖情况,往往不全面。

代码覆盖本身要支持“合并”功能,对多个系统、不同时间的数据进行合并,才能覆盖的完整全面。

十二、系统逻辑重复

这里可分为两种情况:

1.组件之间重复:上层系统可能会对数据合法性做检验,但是下层系统出于系统的独立性目标,也可能对数据做二次校验,但是作为一个完整系统进行end-to-end测试时,就无法覆盖二次校验的代码;针对这种情况,需要拆开成独立组件进行测试。

2.组件内部重复:同一组件内多层重复逻辑确实可以纠正代码,例如在对于某个数据做多次同一类型校验,这种问题常出现于多人协同编码又缺乏沟通的情况中。

提示:逻辑重复导致的部分未覆盖要分辨是组件之间还是组件内部冗余,组件之间则需要覆盖,组件内部则要修改代码。

十三、代码写法

有时候某些代码的写法,也会导致无法覆盖,如果是因为代码写法造成的未覆盖,需要审查下是代码问题。

十四、 隐式的分支

当代码中含有隐式的分支时,往往很难100%覆盖,例断言assert,貌似只有一句,但是即使启用断言仍然无法100%覆盖,隐式的分支需要分析未覆盖分支。

代码覆盖的15种情况

代码覆盖的15种情况(图片来源互联网)

十五、不在覆盖范围内

下面两种类型的代码不在代码覆盖统计范围内:

1.Java接口,接口里面都是抽象方法的结合,不含有任何代码细节;

2.不含有可执行java字节码的方法:抽象方法和本地native方法。

不过,不在统计范围内的直接忽视。

通过对15种情况的介绍,相信大家对代码覆盖的常见情景已有大概的了解,在实际分析中,可以按照以下规则进行:

1.内容:包->类->方法->代码;

2.优先级: 核心业务类->普通业务类->工具助手类->常量类。