当前位置:网站首页>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,仅是个人心得,如有偏颇,欢迎指正!
参考博文:
边栏推荐
- The Principle of Union Search and API Design
- 51单片机营养液自动配置搅拌系统TDS浓度采集自动加水加营养液
- I don't like my code
- Consensus calculation and incentive mechanism
- Common class String overview
- LeetCode 938.二叉搜索树的范围和(简单)
- STM32F407ZG PWM
- WeChat applet wx.writeBLECharacteristicValue Chinese character to buffer problem
- pytorch-06.逻辑斯蒂回归
- 细说MySql索引原理
猜你喜欢
一个基于.Net Core 开源的物联网基础平台
堆的原理与实现以及排序
LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)
LeetCode refers to the offer 21. Adjust the order of the array so that the odd numbers are in front of the even numbers (simple)
C陷阱与缺陷 个人阅读笔记
分享一款恋爱星座男女配对微信小程序源码
【烘焙】肉松蛋糕卷
MySQL中MyISAM为什么比InnoDB查询快
The Principle of Union Search and API Design
Collection tool class
随机推荐
STC12C5A60S2单片机WIFI信号扫描报警监视系统信号增强信号过低报警
通过配置CubeMX的TIMER的PWM初始化实现硬件PWM呼吸灯闪烁
51单片机智能蓝牙APP加油站火灾预警安防防控报警监控系统MQ2DHT11
符号表
【简易笔记】PyTorch官方教程简易笔记 EP1
R语言聚类分析——代码解析
学生管理系统以及其简单功能的实现
卷积神经网络(CNN)实现mnist手写数字识别
PyTorch的安装与基础知识
力扣——省份数量
LeetCode 面试题17.14 最小k个数(中等)
Pytorch - 07. Multidimensional characteristics of input processing
pytorch-09.多分类问题
我不喜欢我的代码
二维卷积定理的验证(上)
二维卷积定理的验证(下,cv2.filter2D())
I don't like my code
C陷阱与缺陷 个人阅读笔记
一个基于.Net Core跨平台小程序考试系统
pytorch-10.卷积神经网络