[发明专利]基于并行变异测试的代码覆盖率检测方法及装置在审
申请号: | 202110811712.1 | 申请日: | 2021-07-19 |
公开(公告)号: | CN113360411A | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | 周朝信;黄震人;熊小庆;文弘扬 | 申请(专利权)人: | 中国工商银行股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 刘熔;赵平 |
地址: | 100140 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 并行 变异 测试 代码 覆盖率 检测 方法 装置 | ||
本发明提供一种基于并行变异测试的代码覆盖率检测方法及装置,方法包括:将所有的单元测试任务进行划分处理得到多个任务子集;对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。本发明能够有效提升变异测试批量执行效率以及变异测试的准确性。
技术领域
本发明涉及计算机软件测试技术领域,具体涉及一种基于并行变异测试的代码覆盖率检测方法及装置。
背景技术
变异测试(Mutation Testing)也叫做“变异分析”,是一种在细节方面改进程序源代码的软件测试方法。变异测试最初是为了定位揭示测试单元的弱点。这个理论是:如果一个边缘被引入程序源代码,同时出现的程序源代码执行行为不受影响的情况下,这说明了变异代码没被执行过(产生了过剩代码)或者单侧单元无法定位错误。为了使之适用于所有情况,必须引入大量的变异,导致这个程序极大量的副本被编译和执行。
目前,开源框架pitest可以满足变异测试的需要,它会采集程序的指令覆盖情况,然后根据覆盖情况,来选择是否变异指令,决定变异后重新执行部分单元测试。针对覆盖情况的检测和指令变异,开源框架pitest是采用注入字节码指令、动态替换字节码来实现的,主进程中,以agent方式启动子进程,并和子进程通过套接字(socket)通信来传递信息,子进程收集覆盖情况或变异执行情况后,将消息传回主进程中,最后主进程来生成变异报告。
开源框架pitest在收集覆盖率时,在子进程中单线程执行,并且单元测试前后执行过程中,无法做到环境完全隔离,一方面导致了变异测试的性能低下,另一方面导致实例没有释放造成内存占用过高。
发明内容
针对现有技术中的问题,本发明提供一种基于并行变异测试的代码覆盖率检测方法及装置,能够提升变异测试的效率和准确性。
为解决上述技术问题,本发明提供以下技术方案:
第一方面,本发明提供一种基于并行变异测试的代码覆盖率检测方法,包括:
将所有的单元测试任务进行划分处理得到多个任务子集;
对每个所述任务子集分配一个子线程,控制所述子线程采集其对应的任务子集的代码覆盖信息;
接收每个所述子线程发送的其自身采集的代码覆盖信息并将接收的所述代码覆盖信息进行转换处理得到代码覆盖率。
其中,所述将所有的单元测试任务进行划分处理得到多个任务子集,包括:
确定所述单元测试任务的数量和每个子线程的任务处理数量;
根据所述单元测试任务的数量和每个子线程的任务处理数量确定子线程的数量;
按照所述子线程的数量对所述单元测试任务进行划分处理。
其中,所述控制所述子线程采集其对应的任务子集的代码覆盖信息,包括:
控制所述子线程开启子进程,通过所述子进程执行所述任务子集中的单元测试任务得到所述任务子集的代码覆盖信息;
通过套接字的通信方式接收所述子进程得到所述任务子集的代码覆盖信息。
其中,所述将接收的所述代码覆盖信息进行转换处理得到代码覆盖率,包括:
根据所述代码覆盖信息确定代码位置并对所述代码位置处的代码标记为被覆盖;
基于标记为被覆盖的代码确定所述代码覆盖率。
第二方面,本发明提供一种基于并行变异测试的代码覆盖率检测装置,包括:
划分模块,用于将所有的单元测试任务进行划分处理得到多个任务子集;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国工商银行股份有限公司,未经中国工商银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110811712.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种光伏发电站监控管理系统
- 下一篇:一种物料切割装置