[发明专利]一种确定代码执行覆盖率的方法和装置有效
申请号: | 201210489469.7 | 申请日: | 2012-11-27 |
公开(公告)号: | CN103838666B | 公开(公告)日: | 2017-12-19 |
发明(设计)人: | 赵辉;王昭;徐建;李正文;刘哲文 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京鸿德海业知识产权代理事务所(普通合伙)11412 | 代理人: | 倪志华 |
地址: | 100085 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 确定 代码 执行 覆盖率 方法 装置 | ||
【技术领域】
本发明涉及计算机应用中的软件测试技术领域,特别涉及一种确定代码执行覆盖率的方法和装置。
【背景技术】
Shell脚本指放在一个文件中的一系列Linux命令和实用程序,在shell脚本的测试过程中,代码的行覆盖率是评价测试活动覆盖产品代码的一项重要指标,体现了代码执行覆盖状况。
现有确定shell脚本程序的代码执行覆盖状况的方式主要是通过系统的执行日志来判断代码的行覆盖率,诸如shcov工具。然而现有这种通过分析执行日志来统计行覆盖率的方式,由于忽略了被测脚本程序执行的细节,并不能真实反映程序的执行情况,尤其是在被测脚本程序出现命令跨行、文件重名时不能正确的确定被测脚本程序的执行覆盖状况,准确性较差,并且被测脚本程序使用诸如awk等处理命令时,awk内部的代码无法统计行覆盖率。
【发明内容】
有鉴于此,本发明提供了一种确定代码执行覆盖率的方法和装置,以便于提高所统计的被测脚本程序的执行覆盖状况的准确性。
具体技术方案如下:
一种确定代码执行覆盖率的方法,该方法包括:
S1、通过对被测脚本程序的解析确定可执行代码以及可执行代码的位置信息,利用可执行代码的位置信息生成key写入数据库;
S2、在所述被测脚本程序的执行过程中,将执行代码的执行状况信息在所述数据库中针对执行代码对应的key进行标注;
S3、利用所述数据库中的执行代码数量和可执行代码数量的比值确定所述被测脚本程序的执行覆盖率。
根据本发明一优选实施例,所述步骤S1具体包括:
S11、从解析器对被测脚本程序的解析结果中获取可执行代码;
S12、计算各可执行代码的签名并作为对应可执行代码的key写入数据库,其中所述可执行代码的签名由可执行代码所属的文件标识和可执行代码在被测脚本程序中的位置信息计算得到。
根据本发明一优选实施例,所述步骤S2具体包括:
S21、在代码执行装置执行被测脚本程序过程中获取执行代码;
S22、依据执行代码所属的文件标识和执行代码在被测脚本程序中的位置信息计算签名,针对所述数据库中该签名对应的key标注执行代码状态。
根据本发明一优选实施例,所述在被测脚本程序中的位置信息包括行号和行内偏移。
根据本发明一优选实施例,通过在所述解析器增加插件的方式使得所述解析器在针对被测脚本程序生成语法树的过程中对每个节点注入标识信息,所述标识信息包括每个节点的文件标识和在被测脚本程序中的位置信息,所述语法树的节点为可执行代码;通过在所述代码执行装置中增加插件的方式使得所述代码执行装置在执行到解析器生成的语法树的节点时,发送被执行节点的信息;
在所述步骤S11中,从所述语法树中获取可执行代码;
在所述步骤S21中,从所述代码执行装置发送的被执行节点的信息获取执行代码。
根据本发明一优选实施例,在所述步骤S2中在所述数据库中针对执行代码对应的key进一步标注执行次数,在向测试人员反馈所述执行覆盖率时,进一步反馈各执行代码的执行次数。
一种确定代码执行覆盖率的装置,该装置包括:
解析信息标注单元,用于通过对被测脚本程序的解析确定可执行代码以及可执行代码的位置信息,利用可执行代码的位置信息生成key写入数据库;
执行信息标注单元,用于在所述被测脚本程序的执行过程中,将执行代码的执行状况信息在所述数据库中针对执行代码对应的key进行标注;
标注信息解析单元,用于利用所述数据库中的执行代码数量和可执行代码数量的比值确定所述被测脚本程序的执行覆盖率。
根据本发明一优选实施例,所述解析信息标注单元具体包括:
第一代码获取模块,用于从解析器对被测脚本程序的解析结果中获取可执行代码;
第一信息标注模块,用于计算各可执行代码的签名并作为对应可执行代码的key写入数据库,其中所述可执行代码的签名由可执行代码所属的文件标识和可执行代码在被测脚本程序中的位置信息计算得到。
根据本发明一优选实施例,所述执行信息标注单元具体包括:
第二代码获取模块,用于在代码执行装置执行被测脚本程序过程中获取执行代码;
第二信息标注模块,用于依据执行代码所属的文件标识和执行代码在被测脚本程序中的位置信息计算签名,针对所述数据库中该签名对应的key标注执行代码状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210489469.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:具有检测结构的换刀装置
- 下一篇:一种电机辐板轴焊接专用分度支架