一种实现精准监控代码覆盖率的方法技术

技术编号:21999922 阅读:32 留言:0更新日期:2019-08-31 05:19
本发明专利技术公开了一种实现精准监控代码覆盖率的方法,涉及计算机技术领域,主要包括以下步骤:解析差异信息文本,形成结构化数据,推送到源码的指定路径;自动注入开源项目管理工具配置;对编译后的代码封装远程命令和本地命令;命令行调用通用组件,提供命令行集成方式;对代码覆盖工具进行二次开发。本发明专利技术提供的监控测试方法基于增量代码的测试,可以极大的减少测试工作中的人力成本投入;整个测试过程可视化,可以帮助测试人员对自己的测试用例进行校准,帮助测试人员对代码进行更全面的测试覆盖;此外,本发明专利技术与自动化测试结合可以提高自动化测试的可信度,并且可以帮助自动化测试更好的覆盖业务场景。

A Method to Accurately Monitor Code Coverage

【技术实现步骤摘要】
一种实现精准监控代码覆盖率的方法
本专利技术涉及计算机
,尤其涉及一种实现精准监控代码覆盖率的方法。
技术介绍
随着计算机网络的发展,软件产品的更新迭代速度加快,为了保证产品的质量,则需要对其进行测试。通常来说,对不同的软件产品需要对其代码进行全方位测试,以获取精准的代码覆盖率,但此时也存在着耗费巨大成本的缺点。目前对于覆盖率的使用基本上是基于开源框架Jacoco进行配置的覆盖率工具,报告是基于全量代码的一种测量方式,这种方式会有很多弊端。从测试人员的角度来看,全量报告不能告诉测试人员本次改动的代码被覆盖了多少,还有多少没有被覆盖。从项目管理者的角度来看,不能根据全量报告的覆盖率预估项目的上线风险,这份报告对测试人员跟项目管理人员参考意义较小。
技术实现思路
本专利技术的目的在于提供一种实现精准监控代码覆盖率的方法,从而解决现有技术中存在的前述问题。为了实现上述目的,本专利技术采用的技术方案如下:一种实现精准监控代码覆盖率的方法,主要包括以下步骤:S1,解析代码中的差异信息文本,形成结构化数据,并将其推送到源码的指定路径;S2,向代码中自动注入开源项目管理工具配置,对代码进行编译;S3,对编译后的代码封装远程命令和本地命令;S4,命令行调用通用组件,提供命令行集成方式;S5,最后对代码覆盖工具进行二次开发。优选地,步骤S1包括以下步骤:S11,通过通用的数据交换格式生成方法,解析两个分支的差异信息;S12,通过对差异信息的格式,做文件切割、匹配每个文件增量的行号;S13,组装通用的数据交换格式并返回对返回格式进行配置。优选地,步骤S2包括以下步骤:S21,通过上下文管理器方法,在编译后的代码注入Jacoco配置之前备份文件;S22,通过上下文管理器的方法在正常或异常退出后,还原备份的文件;S23,在类实例被调用的时候,将目标服务器的IP和监听端口处理进模板,并注入maven配置。优选地,步骤S3包括以下步骤:S31,通过local执行命令行操作编译后的代码;S32,使用远程命令和安全文件传送协议上传下载代码。优选地,步骤S4包括以下步骤:S41,定义模板样式;S42,将命令行参数转化为结构化存储;S43,定义命令行参数;S44,制作入口文件,执行开源项目管理工具配置的注入操作。优选地,步骤S41还包括解析返回值对应长短参数名的映射关系。优选地,步骤S42包括解析命令行参数、处理命令行参数以及获取命令行参数。优选地,步骤S5包括以下步骤:S51,在覆盖率数据处理入口判断覆盖率数据对应的代码是否发生了改变;S52,使用AST技术对源代码进行分析,判断jacoco传来的方法是否跟AST解析出来的方法是否相等;S53,差异行信息解析核心代码解析差异信息中的数据,以文件维度下的差异行来存储差异数据;S54,差异行信息转化为方法差异信息,遍历所有的方法,使用差异行来进行命中,如果一个方法被差异行命中,将被命中的方法置成被改变。优选地,步骤S52中具体包括:1)判断存放了方法的行范围是否改变;2)获取到包含是否变化信息的列表;3)获取jacoco传来的方法的参数列表和AST解析源码后获取的方法参数列表;4)通过布尔值判断jacoco传来的方法是否跟AST解析出来的方法是否相等。本专利技术的有益效果是:本专利技术提供的监控测试方法基于增量代码的测试,可以极大的减少测试工作中的人力成本投入;整个测试过程可视化,可以帮助测试人员对自己的测试用例进行校准,帮助测试人员对代码进行更全面的测试覆盖;此外,本专利技术与自动化测试结合可以提高自动化测试的可信度,并且可以帮助自动化测试更好的覆盖业务场景。附图说明图1是实施例1中的工作流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不用于限定本专利技术。缩写词解释:Jacoco开源Java代码覆盖率工具Maven开源的项目管理工具AST抽象语法树Jenkins开源的持续集成平台Json通用的数据交换格式Sftp安全文件传送协议实施例本实施例提供一种实现精准监控代码覆盖率的方法,包括以下步骤:S1,解析差异信息文本,形成结构化数据,推送到源码的指定路径;S2,自动注入开源项目管理工具配置;S3,对编译后的代码封装远程命令和本地命令;S4,命令行调用通用组件,提供命令行集成方式;S5,对代码覆盖工具进行二次开发。以下提供一个具体的例子进行解释说明。具体的,步骤S1包括以下:S11,通过调用genJsonFile,生成一个命令比较文本文件结果的json,存储到文件中,文本路径file_path支持绝对路径和相对路径,相对路径对repo_root做了一个适配,repo_root就是持续集成工具中,检出代码的根路径。S12,通过toJson方法,解析两个分支的diff结果,通过对gitdiff的格式,做文件切割、匹配每个文件增量的行号,组装Json并返回,这里如果return_diff_lines为True,则不仅返回增量的行号,还会返回该行号对应的代码。步骤S2具体包括:S21,准备一个模板,每次处理后,动态注入maven配置;S22,通过上下文管理器的__enter__方法,在注入maven配置之前先对文件做备份;S23,如果通过上下文管理器的__exit__方法在正常或异常退出后,还原备份的文件pom.xml;S24,在类实例被调用__call__的时候,将目标服务器的IP和监听端口处理进模板,并注入maven配置。步骤S3具体包括:1)本地命令行操作,参数与subprocess.run保持一致,通过local执行命令;除此之外也支持使用方通过withlcd在某个路径下执行批量命令;2)基于paramiko实现Ssh远程命令和sftp的上传和下载功能;值得注意到,在控制访问参数kwargs中除了transport.connect(**kwargs)的参数外增加了自定义参数pkey_file,来指定私钥文件。步骤S4包括:S41,定义模板样式,包括:解析返回值对应长短参数名的映射关系(表1左)和解析短参数、长参数和参数映射返回值的关系(表1右);表1定义模板样式代码示例S42,将命令行参数转化为结构化存储,解析命令行参数、处理参数以及获取参数,如果同一个参数长短参传多次,取最后一个值;S43,定义命令行参数,举例如表2所示:表2定义命令行参数示例短参数长参数参数定义-h--help帮助文档-w--workspaceJenkins的workspace-s--sub_project子项目名称-a--address应用部署ip-p--portJacoco监听端口-b--branch_name分支名称S44,制作入口文件,执行开源项目管理工具配置的注入操作。步骤S5具体包括:S51,在覆盖率数据处理入口判断覆盖率数据对应的代码是否发生了改变;S52,使用AST技术对源代码进行分析,判断jacoco传来的方法是否跟ast解析出来的方法是否相等;1)判断存放了方法的行范围是否改变;2)获取到包含是否变化信息的列表;3)获取jacoco传来的方法的参数列表和ast解析源码后获取的方法参数列表;4本文档来自技高网...

【技术保护点】
1.一种实现精准监控代码覆盖率的方法,其特征在于,主要包括以下步骤:S1,解析代码中的差异信息文本,形成结构化数据,并将其推送到源码的指定路径;S2,向代码中自动注入开源项目管理工具配置;S3,对编译后的代码封装远程命令和本地命令;S4,通过命令行调用通用组件,提供命令行集成方式;S5,最后对代码覆盖工具进行二次开发,以实现精准监控代码覆盖率。

【技术特征摘要】
1.一种实现精准监控代码覆盖率的方法,其特征在于,主要包括以下步骤:S1,解析代码中的差异信息文本,形成结构化数据,并将其推送到源码的指定路径;S2,向代码中自动注入开源项目管理工具配置;S3,对编译后的代码封装远程命令和本地命令;S4,通过命令行调用通用组件,提供命令行集成方式;S5,最后对代码覆盖工具进行二次开发,以实现精准监控代码覆盖率。2.根据权利要求1所述的实现精准监控代码覆盖率的方法,其特征在于,步骤S1包括以下步骤:S11,通过通用的数据交换格式生成方法,解析两个分支的差异信息;S12,通过对差异信息的格式,做文件切割、匹配每个文件增量的行号;S13,组装通用的数据交换格式并返回对返回格式进行配置。3.根据权利要求1所述的实现精准监控代码覆盖率的方法,其特征在于,步骤S2包括以下步骤:S21,通过上下文管理器方法,在编译后的代码注入Jacoco配置之前备份文件;S22,通过上下文管理器的方法在正常或异常退出后,还原备份的文件;S23,在类实例被调用的时候,将目标服务器的IP和监听端口处理进模板,并注入maven配置。4.根据权利要求1所述的实现精准监控代码覆盖率的方法,其特征在于,步骤S3包括以下步骤:S31,通过local执行命令行操作编译后的代码;S32,使用远程命令和安全文件传送协议上传下载代码。5.根据权利要求1所述的实现精准监控代码覆盖率的方法,其特征在于...

【专利技术属性】
技术研发人员:闻小龙王公瑾叶微微
申请(专利权)人:北京科摩仕捷科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1