基于并行变异测试的代码覆盖率检测方法及装置制造方法及图纸

技术编号:29983706 阅读:33 留言:0更新日期:2021-09-08 10:21
本发明专利技术提供一种基于并行变异测试的代码覆盖率检测方法及装置,方法包括:将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。本发明专利技术能够有效提升变异测试批量执行效率以及变异测试的准确性。测试批量执行效率以及变异测试的准确性。测试批量执行效率以及变异测试的准确性。

【技术实现步骤摘要】
基于并行变异测试的代码覆盖率检测方法及装置


[0001]本专利技术涉及计算机软件测试
,具体涉及一种基于并行变异测试的代码覆盖率检测方法及装置。

技术介绍

[0002]变异测试(Mutation Testing)也叫做“变异分析”,是一种在细节方面改进程序源代码的软件测试方法。变异测试最初是为了定位揭示测试单元的弱点。这个理论是:如果一个边缘被引入程序源代码,同时出现的程序源代码执行行为不受影响的情况下,这说明了变异代码没被执行过(产生了过剩代码)或者单侧单元无法定位错误。为了使之适用于所有情况,必须引入大量的变异,导致这个程序极大量的副本被编译和执行。
[0003]目前,开源框架pitest可以满足变异测试的需要,它会采集程序的指令覆盖情况,然后根据覆盖情况,来选择是否变异指令,决定变异后重新执行部分单元测试。针对覆盖情况的检测和指令变异,开源框架pitest是采用注入字节码指令、动态替换字节码来实现的,主进程中,以agent方式启动子进程,并和子进程通过套接字(socket)通信来传递信息,子进程收集覆盖情况或变异执行情况后,将消息传回主进程中,最后主进程来生成变异报告。
[0004]开源框架pitest在收集覆盖率时,在子进程中单线程执行,并且单元测试前后执行过程中,无法做到环境完全隔离,一方面导致了变异测试的性能低下,另一方面导致实例没有释放造成内存占用过高。

技术实现思路

[0005]针对现有技术中的问题,本专利技术提供一种基于并行变异测试的代码覆盖率检测方法及装置,能够提升变异测试的效率和准确性。
[0006]为解决上述技术问题,本专利技术提供以下技术方案:
[0007]第一方面,本专利技术提供一种基于并行变异测试的代码覆盖率检测方法,包括:
[0008]将所有的单元测试任务进行划分处理得到多个任务子集;
[0009]对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;
[0010]接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
[0011]其中,所述将所有的单元测试任务进行划分处理得到多个任务子集,包括:
[0012]确定所述单元测试任务的数量和每个子线程的任务处理数量;
[0013]根据所述单元测试任务的数量和每个子线程的任务处理数量确定子线程的数量;
[0014]按照所述子线程的数量对所述单元测试任务进行划分处理。
[0015]其中,所述控制所述子线程采集其对应的任务子集的代码覆盖信息,包括:
[0016]控制所述子线程开启子进程,通过所述子进程执行所述任务子集中的单元测试任务得到所述任务子集的代码覆盖信息;
[0017]通过套接字的通信方式接收所述子进程得到所述任务子集的代码覆盖信息。
[0018]其中,所述将接收的所述代码覆盖信息进行转换处理得到代码覆盖率,包括:
[0019]根据所述代码覆盖信息确定代码位置并对所述代码位置处的代码标记为被覆盖;
[0020]基于标记为被覆盖的代码确定所述代码覆盖率。
[0021]第二方面,本专利技术提供一种基于并行变异测试的代码覆盖率检测装置,包括:
[0022]划分模块,用于将所有的单元测试任务进行划分处理得到多个任务子集;
[0023]采集模块,对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;
[0024]处理模块,用于接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
[0025]其中,所述划分模块包括:
[0026]任务单元,用于确定所述单元测试任务的数量和每个子线程的任务处理数量;
[0027]线程单元,用于根据所述单元测试任务的数量和每个子线程的任务处理数量确定子线程的数量;
[0028]划分单元,用于按照所述子线程的数量对所述单元测试任务进行划分处理。
[0029]其中,所述采集模块包括:
[0030]执行单元,用于控制所述子线程开启子进程,通过所述子进程执行所述任务子集中的单元测试任务得到所述任务子集的代码覆盖信息;
[0031]传输单元,用于通过套接字的通信方式接收所述子进程得到所述任务子集的代码覆盖信息。
[0032]其中,所述处理模块包括:
[0033]标记单元,用于根据所述代码覆盖信息确定代码位置并对所述代码位置处的代码标记为被覆盖;
[0034]处理单元,用于基于标记为被覆盖的代码确定所述代码覆盖率。
[0035]第三方面,本专利技术提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的基于并行变异测试的代码覆盖率检测方法的步骤。
[0036]第四方面,本专利技术提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的基于并行变异测试的代码覆盖率检测方法的步骤。
[0037]由上述技术方案可知,本专利技术提供一种基于并行变异测试的代码覆盖率检测方法及装置,将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。能够有效提升变异测试批量执行效率以及变异测试的准确性。
附图说明
[0038]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
[0039]图1为本专利技术实施例中的基于并行变异测试的代码覆盖率检测方法的流程示意图。
[0040]图2为本专利技术实施例中的基于并行变异测试的代码覆盖率检测方法中步骤S101的流程示意图。
[0041]图3为本专利技术实施例中的基于并行变异测试的代码覆盖率检测方法中步骤S102的流程示意图。
[0042]图4为本专利技术实施例中的基于并行变异测试的代码覆盖率检测方法中步骤S103的流程示意图。
[0043]图5为本专利技术实施例中的基于并行变异测试的代码覆盖率检测方法的流程图。
[0044]图6为本专利技术实施例中的基于并行变异测试的代码覆盖率检测装置的结构示意图。
[0045]图7为本专利技术实施例中的电子设备的结构示意图。
具体实施方式
[0046]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于并行变异测试的代码覆盖率检测方法,其特征在于,包括:将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。2.根据权利要求1所述的基于并行变异测试的代码覆盖率检测方法,其特征在于,所述将所有的单元测试任务进行划分处理得到多个任务子集,包括:确定所述单元测试任务的数量和每个子线程的任务处理数量;根据所述单元测试任务的数量和每个子线程的任务处理数量确定子线程的数量;按照所述子线程的数量对所述单元测试任务进行划分处理。3.根据权利要求1所述的基于并行变异测试的代码覆盖率检测方法,其特征在于,所述控制所述子线程采集其对应的任务子集的代码覆盖信息,包括:控制所述子线程开启子进程,通过所述子进程执行所述任务子集中的单元测试任务得到所述任务子集的代码覆盖信息;通过套接字的通信方式接收所述子进程得到所述任务子集的代码覆盖信息。4.根据权利要求1所述的基于并行变异测试的代码覆盖率检测方法,其特征在于,所述将接收的所述代码覆盖信息进行转换处理得到代码覆盖率,包括:根据所述代码覆盖信息确定代码位置并对所述代码位置处的代码标记为被覆盖;基于标记为被覆盖的代码确定所述代码覆盖率。5.一种基于并行变异测试的代码覆盖率检测装置,其特征在于,包括:划分模块,用于将所有的单元测试任务进行划分处理得到多个任务子集;采集模块,对每个所述任务子集分配一个子线程,控制所述子线程采集其对应...

【专利技术属性】
技术研发人员:周朝信黄震人熊小庆文弘扬
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

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

1