当前位置:网站首页>2021-04-15 jacoco代码覆盖率统计和白盒测试
2021-04-15 jacoco代码覆盖率统计和白盒测试
2022-08-10 05:35:00 【蓝尼亚】
jacoco代码覆盖率统计
1.背景:
近2年来有负责服务端的工作,前一年自动化测试平台主要在推接口自动化,去年主要推行做代码覆盖率。对统计代码覆盖率的原理不是很清楚,所以去网上查了些资料,有了进一步了解。结合实践和网上资料,对jacoco代码覆盖率有一个大概的认识。
2.代码覆盖率的目的
通过代码覆盖率统计,可以对比出哪些代码是通过手工测试和自动化接口测试覆盖到的,哪些没有覆盖到。查看没有覆盖到的代码,检查是否有漏测,进一步和开发对齐测试方法和测试范围,保证测试不遗漏。达到测试设计不冗余,不遗漏的目的。
3.jacoco代码覆盖率统计的流程图(借鉴其他同学的总结)
jacoco代码覆盖率工具主要流程:
在sever上(测试的应用上)部署jacoco客户端,启动jacoco
对代码进行插桩
通过手动执行用例和跑接口自动化,搜集程序执行轨迹
对比轨迹和代码结构,输出代码覆盖率情况
4.代码覆盖率统计分类
一般应用服务分为2层:web层和service层:
web层,主要是接口,service层主要是处理程序逻辑
对于web层:因为一个应用的代码特别多,有很多公用代码,我们一般针对接口部分的代码做代码覆盖率统计
对于service层:我们项目还没有正式统计这层应用的代码。但是我的理解是:主要针对dubbo接口,逻辑,统计全面的代码覆盖率会比较好(后期有进一步实践再更新)
如果是新应用,可以不过滤类,统计整体的代码覆盖率
如果是老应用,可以专门统计接口这块,跑自动化的覆盖率。
统计接口的方法:
①目前公司可以下载代码,我们下载代码,进入lib目录下(一般在lib,放各种jar包,bin一般放启动脚本,conf放配置文件),找到和接口所在的jar包:
②用反编译工具java decompiler反编译jar包,jar包下——>package——>class,找到接口相关的类:类名特征:一般以rest/api命名
所以过滤原则就是:
package——>class
5.代码覆盖率对比维度:
语句覆盖率:每一行代码覆盖率
分支覆盖率:条件分支覆盖率
全量代码覆盖率
统计整体的代码覆盖率,需要统计的代码和执行用例轨迹对比
差异代码覆盖率
选择一个基线版本,对比基线版本和提测版本新增代码部分的覆盖率。
基线版本一般会选择线上最新版本,保证测试全面不遗漏
做service层和web层的差异代码覆盖率关注点可能会不一样(和代码覆盖率是一致的):
web层:主要看接口、接口调用逻辑
service层:查看全服务差异代码覆盖率,检查那块没有实现
服务端白盒测试
服务端:用户看不到的服务(数据库、中间件、缓存、文件系统、接口等)
白盒测试:基于代码的测试,是一种测试用例设计方法
1.常见测试方法:
(1)静态测试:代码走读,理解业务,实现代码功能和业务功能的映射。(开发、测试,一般是开发)
(2)静态代码扫描工具:svn、git
2.动态测试:
(1)单元测试(开发)
工具:junit,一般用于开发测试流程卡点
(2)模块测试(测试)
代码review,根据白盒测试方法,结合功能测试,设计接口case,实现用例覆盖
3.白盒测试用例设计方法
3.1.语句覆盖:保证每条语句都被覆盖
3.2.分支覆盖:
程序中每个真和假都经历一次
条件覆盖:每个条件都要至少执行一次
多条件覆盖:条件组合覆盖
3.3.路径覆盖:
程序中每条路径都要至少执行一次
小结:在写接口自动化脚本的时候可以通过白盒测试方法设计接口case,代码覆盖率可以定位到有哪些代码没有覆盖到,可以分析具体的原因
ps,仅是个人心得,如有偏颇,欢迎指正!
参考博文:
边栏推荐
- STM32单片机OLED俄罗斯方块单片机小游戏
- 51单片机营养液自动配置搅拌系统TDS浓度采集自动加水加营养液
- LeetCode 292. Nim Game (Simple)
- R语言聚类分析——代码解析
- sqlplus displays the previous command and the available backspace key
- LeetCode 2011. Variable Value After Action (Simple)
- error in ./node_modules/cesium/Source/ThirdParty/zip.js
- LeetCode 162. Finding Peaks (Moderate)
- Pytorch - 07. Multidimensional characteristics of input processing
- 优先队列
猜你喜欢
随机推荐
I don't like my code
样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
String common methods
Pytorch - 07. Multidimensional characteristics of input processing
PyTorch 之 可视化网络架构
微信小程序-小程序的宿主环境
The way for programmers to make money from a sideline business and increase their monthly income by 20K
Collection set interface
The submenu of the el-cascader cascade selector is double-clicked to display the selected content
分享一款恋爱星座男女配对微信小程序源码
测一测异性的你长什么样?
【简易笔记】PyTorch官方教程简易笔记 EP1
A timeout error is reported when connecting to Nacos
LeetCode 1894. Find the student number that needs to be supplemented with chalk
离散数学的学习记录
二维卷积定理的验证(下,cv2.filter2D())
tinymce rich text editor
C陷阱与缺陷 个人阅读笔记
STM32F407ZG GPIO输出相关实验
Exploratory Data Analysis EDA