[发明专利]一种源代码覆盖率确定方法及系统在审
申请号: | 202210472030.7 | 申请日: | 2022-04-29 |
公开(公告)号: | CN114817045A | 公开(公告)日: | 2022-07-29 |
发明(设计)人: | 杨帆;陈睿;刘亚威;江云松;施兰兰;贾春鹏;车小鹏;王峥 | 申请(专利权)人: | 北京轩宇信息技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 马全亮 |
地址: | 100190 北京市海淀区科学院*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 覆盖率 确定 方法 系统 | ||
本发明涉及一种高效的源代码覆盖率确定方法及系统。该方法在插桩时计算出MC/DC真值表,利用位向量压缩真值表并在采集过程中实时计算真值表覆盖情况,具有精度高、膨胀率低和执行速度快的优点。同时,该方法无需额外的辅助插桩点,也无需频繁I/O和输出大量信息,产生的数据量与现有的执行标记方式相当,从而实现了低膨胀率和快速的精确覆盖率分析。
技术领域
本发明涉及一种高效的源代码覆盖率确定方法及系统,属于程序测试技术领域。
背景技术
代码覆盖率是一种度量软件测试完整性的手段,描述程序中源代码被测试的比例和程度,属于白盒测试范畴。代码覆盖率可在单元测试、集成(组装)测试或系统测试环节进行统计,常用的覆盖率指标有语句(指令)覆盖率、分支(判定)覆盖率、MC/DC覆盖率、函数调用覆盖率,其中MC/DC覆盖率的覆盖级别最高,在安全关键领域的软件上要求达到100%。
源代码覆盖率一般有2种方法获取:
一种方法是结合目标码的覆盖率及目标码与源代码的映射关系计算源代码的覆盖率,该方法无需插桩,也不会增加程序的运行开销。专利CN112799942A公开了一种KeilC51软件源码和目标码覆盖率分析方法和系统,该发明利用Keil自身功能产生目标码覆盖率,通过M51文件推算出源代码覆盖率,然后根据结果对源文件上色;专利CN112540913A公开了一种根据CPU指令波形生成对应的CPU指令执行流程文件,然后根据指令与源代码对应关系推算出源代码覆盖率的方法。通过目标码覆盖率计算源代码覆盖率的方法仅限于具备目标码覆盖率和源码-目标码对应关系的情况,同时受编译器优化影响,计算结果可能不准确,且难以支持MC/DC覆盖率。
另一种方法是基于源代码插桩的覆盖率分析:在函数出入口、分支、条件和函数调用等位置插入探针代码,根据探针执行情况计算覆盖率。该方法优点是结果准确,可支持任意覆盖率的分析,插桩后的源码可在多种编译器下编译。此方法又细分为执行追踪和执行标记2种方式:①执行追踪指在执行过程中完整记录插桩点运行序列,专利CN101408862B公开了一种嵌入式程序覆盖率分析方法,该方法对代码插桩后,通过硬件采集桩点的信号进行覆盖率计算,其中采集信号过程使用执行追踪的方式,该方法优点是信息完整,缺点是频繁调用操作系统I/O导致执行速度大幅降低和记录数据占用大量空间;②执行标记方式则只记录插桩点是否执行,国外白盒测试工具Cantata等采用此方式,优点是执行速度快,记录数据占用空间小,缺点是只能记录最终状态,为了计算MC/DC覆盖率需要插入额外的辅助桩点,导致代码膨胀率较高,例如,当判定语句含有10个条件时,编译生成的目标码膨胀率达2倍以上,在极端情况下甚至存在膨胀率过大导致编译失败的问题。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供了一种高效的源代码覆盖率确定方法及系统,解决了传统插桩方法执行速度慢、代码膨胀率高、覆盖率计算结果不准确的问题。
本发明的技术解决方案是:
一种高效的源代码覆盖率确定方法,包括如下步骤:
(1)对源代码覆盖率插桩,在函数入口、出口、分支、条件和函数调用处插入探针代码,执行到探针代码时进行对应的记录操作;
(2)在插桩时通过静态分析计算出每个判定节点的MC/DC真值表;
(3)生成插桩后代码、插桩信息文件和函数控制流程图CFG文件;
(4)插桩后代码中使用桩点执行记录表记录每个插桩点探针执行情况;
(5)插桩后代码执行过程中更新所述桩点执行记录表,当一个判定节点即将结束时根据其内部每个条件的状态找到对应真值表中覆盖组合的编号,更新map中对应的State部分;
(6)插桩后代码执行过程中重复步骤(5);
(7)插桩后代码执行结束后把桩点执行记录表和map输出;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京轩宇信息技术有限公司,未经北京轩宇信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210472030.7/2.html,转载请声明来源钻瓜专利网。