测试覆盖率
名称 |
分母 |
分子 |
示例 |
手工测试覆盖率 |
所有测试用例 |
手工测试执行的用例 |
A系统目前3个测试工程师参与了4个月,写了近300条测试用例,那目前的300条就作为整个测试覆盖率的分母 |
接口覆盖率 |
接口总数 |
测试涉及的接口总数 |
系统有10个接口,对其中8个做了接口自动化测试,那么覆盖率就是80% |
自动化测试覆盖率 |
测试用例总数 |
自动化测试涉及的测试用例总数 |
系统有100条测试用例,其中有60条用例已经被自动化脚本化测试,那么覆盖率是60% |
测试用例覆盖率 |
测试功能点总数 |
自动化测试涉及的测试功能点 |
系统有100条测试用例,400个测试功能点(checkpoint),其中200个Checkpoint已经被自动化测试脚本测试,那么覆盖率是50% |
需求覆盖率 |
所有用户故事或任务 |
已被测试的用户故事或任务 |
目的:测试的行为覆盖了每一个需求 |
缺陷覆盖率 |
已被发现并修复的缺陷数量 |
对缺陷进行自动化测试的数量 |
A系统上线前共发现了70个缺陷,测试工程师将这70个“已经被修复”的缺陷写成了自动化测试用例 |
代码行覆盖率 |
代码总行数 |
被执行过的代码行数 |
一个Java应用有10W行代码,执行了一次手工回归测试,同时也触发了自动化测试脚本,然后利用Jacoco组件查看看测试覆盖率,发现10W行代码中,有3W行代码已经被覆盖了,那么代码行覆盖率就是30% |
代码分支覆盖率 |
代码总分支数 |
被执行过的代码分支数 |
本质上与代码行覆盖率一样,只是统计的维度不一样 |
自动化测试覆盖率的案例分享
思路:剔除无意义的套路代码,结合不同的覆盖率指标,综合得出一个相对有价值的覆盖率数据。
做法:
1,搭建测试覆盖率环境
Java使用的是Jacoco组件,其他编程语言可以使用其他覆盖率统计组件
2,执行自动化测试脚本
触发自动化测试脚本执行,等待执行完毕。
上图说明:
- 绿色区域:代码行覆盖率充分,100%覆盖了该代码。
- 黄色区域:代码行覆盖不充分。
- 红色区域:代码行未经过覆盖。
- 绿色钻石:代码分支覆盖率充分,100%覆盖了该代码分支。
- 黄色钻石:代码分支覆盖率不充分。
- 红色钻石:代码分支未经过覆盖。
请注意,此时请勿打开测试环境的系统页面、接口调用等操作,保证数据的真实性。
3,筛选掉无意义的套路代码
以SpringBoot框架为例,如bean、model、entity、util、mapper、dao、constant、config等目录,大部分都是套路的代码统统过滤掉。
留下有业务意义的代码目录:controller、service目录和自己封装的业务函数类,服务端代码的业务逻辑运算、接口的代码逻辑都在这里,这才是代码的核心部分。
自动化脚本执行完成后,Jacoco测试覆盖率从0%变成了多少,那么目前的自动化测试脚本覆盖率就是多少。
重点:
代码覆盖率本身具有局限性,因为100%的代码覆盖率并不能说明系统质量没有问题。所以除了关注已被测试行为覆盖的代码,更重要的是观察未被覆盖的代码,因为这部分是没有测试用例覆盖到的,让测试工程师自己发现思维的不足、遗漏的用例,这才更有价值。
1.作者:Syw 2.出处:http://www.cnblogs.com/syw20170419/ 3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-11-15 测试管理三要素(人员、过程和技术)
2019-11-15 面试可提问的6个问题