代码覆盖率
文章平均质量分 81
saii
这个作者很懒,什么都没留下…
展开
-
排查jacoco覆盖率对反射问题的影响
本文讨论了在使用jacoco覆盖率工具时,由于其插桩导致的反射问题。通过分析传递参数不合法的错误提示,比较开启和未开启覆盖率两次请求的数据,发现插桩后的请求多出了很多多余的标签,最终发现是由于插桩后的类中多了一个成员变量导致的。解决方法是在判断对象属性是否为空时,跳过合成变量。原创 2023-05-18 00:20:31 · 1314 阅读 · 2 评论 -
UnsupportedClassVersionError, 覆盖率平台怎么了
最近覆盖率平台有一个小bug, 所以临时发了一个版本解决了问题。结果上线一天后,陆续有测试同学反馈,打开覆盖率报告的结果都是空的。问题现象打开应用的日志终端, 结果就看到了这样子的一个报错信息。java.util.concurrent.ExecutionException: java.lang.UnsupportedClassVersionError: org/eclipse/core/runtime/IProgressMonitor has been compiled by a more rec.原创 2021-09-11 11:16:53 · 235 阅读 · 0 评论 -
关于 nodejs 覆盖率的探索
这个研究起源于这个帖子 如何收集 nodejs 服务端的测试覆盖率(Nodejs), 由于自己之前对这块其实是没有研究过的,所以特地花了些时间去了解了下。知识储备虽然说没有做过这块的覆盖率研究,但是对于针对nodejs这块的覆盖率工具之前是有做过一定的了解的,主要是在 nyc 以及 istanbul-middleware (以下简称IM)。关于两者的一些说明可以去看下这两篇文章,里面讲了挺多内容的 探索istanbul/nyc代码覆盖工具的原理 React Native 代码覆盖率获取探索 (二.原创 2021-08-08 23:46:52 · 1072 阅读 · 1 评论 -
代码覆盖率- kotlin kastree库解析异常报错的问题处理
在比较早的时候预研kotlin解析的时候找到了一个比较好用的kotlin parse的库,但是作者在说明中提到这个项目已经处于不维护的状态了。所以对这个库的稳定性一直存在的一定的疑惑。结果问题就出来了。问题测试同学反馈的主要问题是他通过代码diff看到的改动文件是有10+以上的,但是实际上要求代码覆盖的文件只是在2个文件左右,那问题出现在哪里的。根据以前的经验分析,我自己刚看到问题的时候想到的应该是因为kotlin那块方法diff那块的逻辑没有处理好导致的,或者说变动的文件其实是一个接口类或者说是.原创 2021-04-01 15:48:45 · 374 阅读 · 1 评论 -
jacoco代码覆盖率明明逻辑已经覆盖了但是显示覆盖率为0(二)
上一次我们讲过,关于代码覆盖率为0的原因,很大概率是因为我们相同的类,但是classId不同导致了这个问题,所以我们在上一篇文章里面提到过,通过类名再做一次合并的动作避免这种问题的出现。结果在改完代码逻辑以后,还是相同的同学,他又出现了一个一样的现象, 抱着一样的排查方式,我又重新排查了一次。背景先介绍下项目的背景: 出现问题的类名是 xxx.service.impl.MessageServiceImpl,测试同学反馈的还是一样的问题,就是代码逻辑其实他通过手工测试已经触发了,但是在覆盖率报告里面却.原创 2021-03-21 23:27:40 · 5408 阅读 · 2 评论 -
前端代码覆盖率增量计算
关于后台的代码增量的逻辑已经有比较成熟的方案了。 根据javaparser解析前后的文件的方法列表,判断是否有新增或者修改的方法。前端代码覆盖率增量覆盖的困难针对前端代码覆盖率并不能像java那块那么简单,有专门的javascript的解析器,能够获取到这个js文件中所有的方法。所以套用原有的java那套逻辑基本是不太可行的。所以我们需要另辟蹊径来解决这个问题。java的增量代码diff 我们是从解析源码的文件入手的,那针对js既然这套不行,有没有方式能够从覆盖率结果数据入手,去解决这个事情呢?.原创 2021-03-01 16:21:12 · 1348 阅读 · 0 评论 -
前端覆盖率开启以后出现被测服务出现登录成功后又跳转到登录页面
今天测试的同学反馈说他们的被测前端在开启覆盖率的时候出现在登录页面登录成功以后然后又自动跳转到了登录页面。分析首先听到这个消息的时候,我的第一反应是不是出现过之前的情况,就是浏览器在请求服务的静态资源的时候,如果出现不存在的静态资源的情况下,node服务会将其重定向到登录的页面。所以尝试去抓包后发现并没有出现静态资源请求不太的情况。 所以又重新再观察了下抓包到的数据。发下登录后提示说用户不属于该组织,并且前端直接发出了退出登录的请求。找了开发了解了下这个返回这样子的结果是因为用户不属于发送过来.原创 2021-02-03 08:53:09 · 580 阅读 · 1 评论 -
electron覆盖率在jenkins打包,注入的环境变量的值不正确
最近一段时间一直在预研electron的覆盖率的事宜。大致的流程已经基本ok,剩余最后的数据验证。由于electron的插桩分为了渲染进程的插桩以及主进程的插桩。然后在验证的时候发现。主进程的覆盖率数据基本都没有上报上来。从日志入手由于主进程的定时任务数据上报是有日志打印的,所以我们先看下日志的信息是如何的。找到了如下的日志:提示说Commit提交号没有匹配到对应的测试计划。这里先需要说明下我们electron覆盖率的逻辑,我们做插桩以后会将对应当前的代码的commit号以及覆盖率数据进行.原创 2021-02-03 08:51:49 · 442 阅读 · 0 评论 -
Jacoco覆盖率的疑问-类名为什么显示没有覆盖
今天看到一个群的同事问了一个问题: jacoco的报告中为什么静态类显示为红色没有被覆盖,但是实际上它里面的方法确已经被覆盖了呢?这个问题我还是挺感兴趣的。所以我尝试去了解了下具体的原因,因为我们清楚jacoco的插桩方式是通过编译后的class文件进行插桩,所以我们也找到一个类里面都是静态的方法然后进行插桩看下结果是咋样的。 */public class PropertyAndConfigUtil { public static Map<String, Object> d.原创 2020-12-30 22:43:42 · 1769 阅读 · 9 评论 -
关于处理jacoco代码diff-Java篇
之前针对jacoco这块代码覆盖率的增量逻辑的处理只是拿到改动的代码的方法后进行对比jacoco中方法的名称, 如果相同我们就认为这个是改动的方法,但是这里就有一个很大的漏洞,java类里面同名方法其实很多的,也就是我们所说的函数的重载这种情况。所以如果按照这种方式,必定导致一个问题就是有一个方法改动后,另外一个方法也需要要求代码覆盖。所以针对这种情况我们不单单需要判断方法的名称,还需要判断方法的参数才行。JVM方法签名这里我们需要先了解一个事情就是class文件也就是jacoco解析出来的方法签名.原创 2020-12-27 22:22:14 · 738 阅读 · 0 评论 -
jacoco代码覆盖率明明逻辑已经覆盖了但是显示覆盖率为0
最近测试的同学反馈一个问题,他在测试完项目以后查看覆盖率的结果,发现有个逻辑明明已经覆盖了,但是覆盖率的报告里面显示的却是没有覆盖。以下就是源码的内容,并且现场演示了接口返回库存不足的逻辑。看到这个问题就比较捉急了。因为关于jacoco目前比较难的就是这样子的现象,很大程度是要去了解jacoco的逻辑才行。因为覆盖率的情况基本都是在jacoco.exec这个文件中, 所以我们第一步要去了解的是exec文件是否确定已经有覆盖了这个代码逻辑。 这里我们可以借助jacococli.jar来辅助分析。.原创 2020-12-25 23:45:51 · 15939 阅读 · 1 评论 -
后台代码覆盖率数据为空的问题排查
今天有测试的同事反馈新接入的一个项目,覆盖率数据都是空的情况。所以专门花了点时间去排查首先接入到我们覆盖率的页面,看到的情况就是如下:覆盖率为0%。 因为出现这种情况的话,还并不能说明覆盖率后台存在有问题。因为有的时候代码的改动很多都是数据库操作的一些语句或者注释等等,针对这些修改 jacoco是不会将其判定为修改的文件。所以还要先确认下改动的文件是否有内容。所以还是直接查询下数据库最方便了。改动的文件还是很多的,到这里就能够判断出来不是代码diff判断逻辑的问题了。这个时候还想到另外一.原创 2020-12-18 10:42:53 · 750 阅读 · 0 评论 -
关于babel-plugin-istanbul与babel-plugin-import冲突问题的官方解决方法
Does not work with babel-plugin-import使用babel7后,按需加载执行报错 以上两个问题都是关于同时使用了istanbul与import的babel插件以后导致的问题。编译后的前端代码运行后就会报上述的错误。首先通过上面的issue我们先清楚的了解到一个问题。为什么const { Option } = Select;就存在有问题,但是通过const Option = Select.Option;就没有问题呢?这里我们就需要先了解经过istanb原创 2020-12-18 09:09:18 · 1230 阅读 · 0 评论 -
前端代码覆盖率问题及总结(二)
更新于2020.06.18不管修改环境还是全局插桩打包出来的文件都没有插桩成功同时在调研新的前端项目接入的时候跟我反馈到:打包test环境后能够正常插桩(这个是现象,因为我们的配置 istanbul的插件只是在test环境下才生效),然后再重新打包pro环境的时候,打包出来的也仍然含有插桩的内容。问题很诡异,于是我这边也重新做了个验证,先打了pro环境的包发现没有插桩,很正常。重新切换到test环境进行打包结果竟然没有插桩。这个就真的很奇怪了。我一度怀疑是package script设置环境变量.原创 2020-12-17 23:31:44 · 1331 阅读 · 0 评论 -
前端代码覆盖率遇到问题及总结(一)
在讲之前得说下 前端覆盖率的水真的是很深的,其实到目前为止还有很多未解之谜,由于对babel的编译以及ast了解的不是很多。所以确实分析问题起来很困难。前端代码覆盖率方案关于前端代码覆盖率还不了解这块内容的同学们,可以参考下一下几篇文章,这里就不做赘述了。基于 Istanbul 优雅地搭建前端 JS 覆盖率平台前端精准测试探索:覆盖率实时统计工具了解了上述两篇文章以后,你应该对前端的代码覆盖率有一定的了解了。那下来说下具体的方案吧。下面就是我们前端代码覆盖率的具体方案了(PS: 画的很潦草,不.原创 2020-12-17 23:20:34 · 2562 阅读 · 1 评论