一种检测代码覆盖率的方法、装置、设备及存储介质制造方法及图纸

技术编号:34086847 阅读:11 留言:0更新日期:2022-07-11 20:13
本申请实施例提供了一种检测代码覆盖率的方法、装置、设备及存储介质,涉及计算机技术领域,该方法具体为:对测试对象关联的各个源代码文件分别进行编译,获得各个源代码文件各自对应的代码覆盖信息文件。然后将获得的各个代码覆盖信息文件划分为多个文件集合,并行从多个文件集合包含的各个代码覆盖信息文件中提取相应的代码覆盖信息。之后再基于获得的各个代码覆盖信息,确定测试对象的代码覆盖率。通过对各个代码覆盖信息文件分组并行处理,能有效提高提取代码覆盖信息速度。进一步地,基于并行从各个文件集合中提取的代码覆盖信息,确定测试对象的代码覆盖率,能有效提高检测代码覆盖率的速度。码覆盖率的速度。码覆盖率的速度。

【技术实现步骤摘要】
一种检测代码覆盖率的方法、装置、设备及存储介质


[0001]本专利技术实施例涉及计算机
,尤其涉及一种检测代码覆盖率的方法、装置、设备及存储介质。

技术介绍

[0002]在软件开发的过程中,代码覆盖率是度量开发完整性的一个手段。通过测试代码覆盖率可以知道未覆盖部分的代码。通过分析未覆盖部分的代码,从而反推前期代码设计是否充分,还可以检测出程序中的无用代码,反推在代码设计中思维混乱之处,从而提醒开发人员注意代码相关逻辑关系。相关技术在检测代码覆盖率时速度较慢,进而影响了后续测试结果反馈以及分析代码的流程,从而影响测试的整体性能。

技术实现思路

[0003]本申请实施例提供了一种检测代码覆盖率的方法、装置、设备及存储介质,用于提高检测代码覆盖率的速度。
[0004]一方面,本申请实施例提供了一种检测代码覆盖率的方法,该方法包括:
[0005]对测试对象关联的各个源代码文件分别进行编译,获得所述各个源代码文件各自对应的代码覆盖信息文件;
[0006]将获得的各个代码覆盖信息文件划分为多个文件集合;
[0007]并行从所述多个文件集合包含的各个代码覆盖信息文件中提取相应的代码覆盖信息;
[0008]基于获得的各个代码覆盖信息,确定所述测试对象的代码覆盖率。
[0009]一方面,本申请实施例提供了一种检测代码覆盖率的装置,该装置包括:
[0010]编译模块,用于对测试对象关联的各个源代码文件分别进行编译,获得所述各个源代码文件各自对应的代码覆盖信息文件;
[0011]分组模块,用于将获得的各个代码覆盖信息文件划分为多个文件集合;
[0012]提取模块,用于并行从所述多个文件集合包含的各个代码覆盖信息文件中提取相应的代码覆盖信息;
[0013]测试模块,用于基于获得的各个代码覆盖信息,确定所述测试对象的代码覆盖率。
[0014]一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述检测代码覆盖率的方法的步骤。
[0015]一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述检测代码覆盖率的方法的步骤。
[0016]本申请实施例中,将各个代码覆盖信息文件划分为多个文件集合,然后并行从各个文件集合包含的代码覆盖信息文件中提取代码覆盖信息。通过对各个代码覆盖信息文件
分组并行处理,能有效提高提取代码覆盖信息速度。进一步地,基于并行从各个文件集合中提取的代码覆盖信息,确定测试对象的代码覆盖率,能有效提高检测代码覆盖率的速度。
附图说明
[0017]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本申请实施例适用的一种系统架构示意图;
[0019]图2为本申请实施例提供的一种检测代码覆盖率的方法的流程示意图;
[0020]图3为本申请实施例提供的一种合并info文件的方法的流程示意图;
[0021]图4为本申请实施例提供的一种合并info文件的方法的流程示意图;
[0022]图5为本申请实施例提供的一种检测代码覆盖率的方法的流程示意图;
[0023]图6为本申请实施例提供的一种生成info文件的方法的流程示意图;
[0024]图7为本申请实施例提供的一种info文件的示意图;
[0025]图8为本申请实施例提供的一种检测代码覆盖率的装置的结构示意图;
[0026]图9为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0027]为了使本专利技术的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0028]为了方便理解,下面对本专利技术实施例中涉及的名词进行解释。
[0029]代码覆盖率:代码覆盖率的意义在于分析未覆盖部分的代码,从而反推在前期代码设计是否充分,还可以检测出程序中的无用代码,反推在代码设计中思维混乱之处,提醒开发人员注意代码相关逻辑关系,提升代码的质量。因此,代码覆盖率检测正是帮助开发人员、测试人员提前发现问题,保证代码质量的好帮手。
[0030]lcov:一个测试代码覆盖率的程序。
[0031]Gcov:Gcov是一个测试代码覆盖率的程序,程序执行之后生成Gcda文件、Gcno文件。使用Gcov搭配GNU编译器套件(GNU Compiler Collection,GCC)可以将代码写得更高效,通过优化程序可以收集到一些基础的性能统计数据。比如:每一行代码执行的次数、每个源代码文件中实际被执行到的行数、每一个代码块执行使用的时间等。
[0032]Gcno文件:包含了代码计数器和源代码的映射关系。
[0033]Gcda文件:记录了每段代码具体的执行次数。
[0034]Info文件:Info文件包含一个或多个源代码文件所对应的代码覆盖率信息,一个源文件对应一条记录,其中,包括带全路径的源代码文件名、覆盖行、执行次数等。
[0035]下面对本申请实施例的设计思想进行介绍。
[0036]相关技术在检测代码覆盖率时,对于500份以上的覆盖率文件来说,需要五分钟左右的计算时间。这个计算速度影响到后面覆盖率结果合并、展示、反馈等流程,不利于覆盖
率测试的进行,影响整体的测试性能,同时对于测试人员来说使用体验也不佳。
[0037]鉴于此,本申请实施例提供了一种检测代码覆盖率的方法,该方法具体包括:对测试对象关联的各个源代码文件分别进行编译,获得各个源代码文件各自对应的代码覆盖信息文件。然后将获得的各个代码覆盖信息文件划分为多个文件集合,并行从多个文件集合包含的各个代码覆盖信息文件中提取相应的代码覆盖信息。之后再基于获得的各个代码覆盖信息,确定测试对象的代码覆盖率。
[0038]本申请实施例中,将各个代码覆盖信息文件划分为多个文件集合,然后并行从各个文件集合包含的代码覆盖信息文件中提取代码覆盖信息。通过对各个代码覆盖信息文件分组并行处理,能有效提高提取代码覆盖信息速度。进一步地,基于并行从各个文件集合中提取的代码覆盖信息,确定测试对象的代码覆盖率,能有效提高检测代码覆盖率的速度。
[0039]请参见图1,其为本申请实施例适用的一种系统架构的结构示意图,该系统架构至少包括终端设备101和服务器102。
[0040]终端设备101预先安装测试应用,测试应用可以用于测试不同应用的代码覆盖率,比如,即时通信应用、购物应用、视频应用等。测试应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种检测代码覆盖率的方法,其特征在于,包括:对测试对象关联的各个源代码文件分别进行编译,获得所述各个源代码文件各自对应的代码覆盖信息文件;将获得的各个代码覆盖信息文件划分为多个文件集合;并行从所述多个文件集合包含的各个代码覆盖信息文件中提取相应的代码覆盖信息;基于获得的各个代码覆盖信息,确定所述测试对象的代码覆盖率。2.如权利要求1所述的方法,其特征在于,所述并行从所述多个文件集合包含的各个代码覆盖信息文件中提取相应的代码覆盖信息,包括:分别针对各个文件集合,并行执行以下操作:针对一个文件集合,通过分别遍历所述一个文件集合包含的各个代码覆盖信息文件的执行链路,从各个代码覆盖信息文件中获取基本块信息和弧信息;从获得的基本块信息和弧信息中提取代码覆盖信息。3.如权利要求1~2任一所述的方法,其特征在于,所述基于获得的各个代码覆盖信息,确定所述测试对象的代码覆盖率,包括:将获得的各个代码覆盖信息合并,获得所述测试对象对应的总代码覆盖信息;根据所述测试对象对应的总代码覆盖信息,确定所述测试对象的代码覆盖率。4.如权利要求3所述的方法,其特征在于,所述将获得的各个代码覆盖信息进行合并,获得所述测试对象对应的总代码覆盖信息,包括:针对一个文件集合,将从所述一个文件集合中的各个代码覆盖信息文件中获得的代码覆盖信息合并,获得所述一个文件集合对应的集合代码覆盖信息;将各个文件集合对应的集合代码覆盖信息合并,获得所述测试对象对应的总代码覆盖信息。5.如权利要求3所述的方法,其特征在于,所述测试对象对应的总代码覆盖信息中包括所述测试对象关联的各个源代码文件中被编译的总代码行数和被执行的总代码行数;所述根据所述测试对象对应的总代码覆盖信息,确定所述测试对象的代码覆盖率,包括:将所述测试对象关联的各个源代码文件中被执行的总代码行数与所述测试对象关联的各个源代码文件中被编译的总代码行数的比值,作为所述测试对象的代码覆盖率。6.如权利要求3所述的方法,其特征在于,所述将获得的各个代码覆盖信息文件划分为多个文件集合,包括:按照代码覆盖信息文件对应的源代码文件的类型,将获得的各个代码覆盖信息文件划分为多个文件集合。7.一种检测代码覆盖率的装置,其特征在于,包括:编译模块,用于对测试对象关联的各个源...

【专利技术属性】
技术研发人员:梁颖霖
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1