[发明专利]覆盖率测试方法及覆盖率测试装置有效
申请号: | 201410394793.X | 申请日: | 2014-08-12 |
公开(公告)号: | CN105468505B | 公开(公告)日: | 2018-12-28 |
发明(设计)人: | 严明;邱学倩 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳翼盛智成知识产权事务所(普通合伙) 44300 | 代理人: | 黄威 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 覆盖率 测试 方法 装置 | ||
1.一种覆盖率测试方法,其特征在于,包括:
检测软件代码的执行函数的执行操作,并获取所述执行函数对应的脚本函数的函数位置、操作码以及操作码偏移;其中所述执行函数是指服务器提供的运行实际代码的各种函数;
对所述执行函数对应的脚本函数的函数位置、所述操作码以及所述操作码偏移进行记录,并生成执行函数表;其中所述脚本函数是指代码开发人员为了完成服务器中的各种代码操作而设置的函数;以及
在所述检测操作完毕后,将所述执行函数表与自定义函数表进行对比,获取所述软件代码的覆盖率;其中所述自定义函数表包括所述软件代码的所有脚本函数的函数位置、操作码、操作码偏移以及函数名;
所述检测软件代码的执行函数的执行操作的步骤包括:
在函数解析表的所有执行函数中设置相应的跳转函数,其中所述函数解析表用于查找所述执行函数对应的脚本函数的函数位置、操作码以及相应的操作码偏移;以及
通过所述跳转函数的跳转操作,检测所述执行函数的执行操作。
2.根据权利要求1所述的覆盖率测试方法,其特征在于,所述自定义函数表通过以下步骤生成:
在软件运行过程中,获取所述软件代码的所有所述脚本函数的函数位置以及函数名;
根据所述脚本函数的函数位置,获取所述脚本函数的字节码;
对所述脚本函数的字节码进行解析操作,获取所述脚本函数的操作码以及操作码偏移;以及
将所述软件代码中的所述脚本函数的操作码、操作码偏移、函数名以及函数位置保存为所述自定义函数表。
3.根据权利要求2所述的覆盖率测试方法,其特征在于,所述获取所述软件代码的所有所述脚本函数的函数位置以及函数名的步骤包括:
获取与所述软件代码对应的全局对象表和全局名字表,其中所述全局对象表包括所述软件代码中的所有对象的对象位置;所述全局名字表包括所述软件代码中的所有对象的对象名以及实例类别;以及
根据所述全局名字表中所有对象的实例类别,获取所述全局名字表中所有脚本函数的函数名,以及所述全局对象表中所有脚本函数的函数位置。
4.根据权利要求1所述的覆盖率测试方法,其特征在于,
所述对所述执行函数对应的脚本函数的函数位置、所述操作码以及所述操作码偏移进行记录的步骤包括:
通过跳转函数对所述执行函数对应的脚本函数的函数位置、所述操作码以及所述操作码偏移进行记录,并生成执行函数表;以及
跳转回所述函数解析表,以对所述执行函数进行执行操作。
5.根据权利要求1所述的覆盖率测试方法,其特征在于,所述将所述执行函数表与所述自定义函数表进行对比,获取所述软件代码的覆盖率的步骤包括:
判断所述执行函数表是否记录有所述脚本函数的所有操作码及相应的操作码偏移;以及
如所述执行函数表记录有所述脚本函数的所有操作码及相应的操作码偏移,则判断所述脚本函数对应的软件代码已被覆盖;否则判断所述脚本函数对应的软件代码未被覆盖。
6.根据权利要求5所述的覆盖率测试方法,其特征在于,所述自定义函数表还包括用于表示所述执行操作的源码,所述源码由所述操作码和相应的操作码偏移生成;
所述获取软件代码的覆盖率的步骤之后还包括:
以所述源码为单元,对所述脚本函数对应的软件代码的覆盖率进行统计。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410394793.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种筏板基础的防水构造
- 下一篇:多功能洒水车