背景:
在功能测试的过程中,我们往往都局限于需求的覆盖,没有在代码层面去检查我们是否遗留了一些bug,而需求的100%覆盖并不代表我们覆盖到了代码的所有逻辑与分支;
在做自动化测试的过程中,我们没有一个很准确的标准去度量自动化测试做的怎么样,粒度够不够细,是否还有提升空间;
开发人员经常会遗留一些“废代码”或该删掉的逻辑没有删掉,从而在大家都不知情的情况下埋下了一颗雷。
目的:
1. 量化单元测试、接口测试、功能场景测试的代码覆盖率
2. 明确指示代码中的“孤代码”、“冗余代码”从而驱动开发对于代码的改进
3. 指示测试行为中“不完备测试”、“测试遗漏”在代码层面的体现,从而准确的持续提高测试覆盖率
我们正在做:
代码覆盖率的提升改进是一个持续长期的过程,我们已经将它引进到接口的自动化测试,来度量接口在代码层面的覆盖率,指引我们有效快速的增加自动化用例来提升代码覆盖。效果如下图所示:
图一:商家入驻接口的自动化测试代码覆盖率数据
图二:商家入驻接口中某一方法覆盖情况
从上图可以看出我们的测试用例对于代码的覆盖是有遗漏的,而且准确到代码的每一行。
我们将要做:
功能测试分为需求覆盖、代码覆盖。以往我们只关注与需求覆盖,而代码覆盖方案可以有效的去弥补测试人员在需求覆盖过程中的盲点。下一步我们会在功能测试、场景测试等过程中加入代码覆盖监控,来提高软件的质量。
总结:
测试是开发的反馈、而测试覆盖是测试的反馈;引进代码覆盖方案能有效的度量测试行为、针对性提升测试覆盖来提高软件质量;通过未覆盖的代码分析可为开发人员修改、优化代码提供依据。在项目组中利用好这一方案可以持续的改进软件的质量,降低测试的遗漏率。
在投入使用的项目中,我们会累积覆盖数据、得出我们的覆盖标准,对新项目的覆盖考核起重要作用。