最近我们测试团队一直在忙覆盖率,使用jacoco工具将java代码覆盖率展现出来了,四季度自动化人员补充老的功能测试用例,将老的功能分为如下几步:
第一步:提高代码行覆盖率,扩大测试广度,可以通过覆盖率工具看到,随着接口用例数量增加,覆盖面也在扩大(源码分支行随着业务行数会变化)
在对源码进行覆盖过程中,也发现了很多问题,比如功能已经删除,但是代码未进行屏蔽,有些代码直接定义了一个空函数在那里,冗余代码等等问题,过程中不停的督促开发修改。有些代码因为年代久远,开发也不敢乱动,但是这些代码会带来编译时间长,接口暴露的安全问题,这个也算是测试中发现代码问题,等于走查了一遍项目代码,其中的工作量还是比较大的,看代码看的比较痛苦,但是对能力是一种提升。
第二步:增加逻辑覆盖率
测试过程中,会发现很多分支实际是没有走到的,造成很多异常逻辑分支无法覆盖,通过提高覆盖率,增加异常逻辑,试想错误逻辑都已经过到了分支,不会出现大的逻辑问题。
可以查看下面的代码,逻辑分支分有多种情况,这个时候需要设计接口用例,尽可能增加逻辑分支,覆盖异常,可以增加代码健壮性。分支覆盖难度比行覆盖投入精力也会更大,因为懂业务逻辑,需要懂代码逻辑,但是产出还是比较可观。
第三步:异常分支整理覆盖
对于有些异常是难以覆盖的,比如数据库插入数据失败,或者并发情况下才能出现的错误,需要覆盖,对于此类,先总结出来,后期有时间再去进行覆盖。暂时没有团队没有投入成本去做,而且收益比较小
对于覆盖率工具,后期在测试中做为功能测试介入手段,通过覆盖率检测用例设计是否齐全,测试范围大小(前提是认为开发代码是正确的),自动化任重道远