[发明专利]覆盖率测试方法及覆盖率测试装置有效
申请号: | 201410394793.X | 申请日: | 2014-08-12 |
公开(公告)号: | CN105468505B | 公开(公告)日: | 2018-12-28 |
发明(设计)人: | 严明;邱学倩 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳翼盛智成知识产权事务所(普通合伙) 44300 | 代理人: | 黄威 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 覆盖率 测试 方法 装置 | ||
本发明提供一种覆盖率测试方法及覆盖率测试装置,该覆盖率测试方法包括:检测执行函数的执行操作,并获取执行函数对应的脚本函数的函数位置、操作码以及操作码偏移;对脚本函数的函数位置、操作码以及操作码偏移进行记录,并生成执行函数表;以及在检测操作完毕后,将执行函数表与自定义函数表进行对比,获取软件代码的覆盖率。本发明还提供一种覆盖率测试装置,本发明的覆盖率测试方法及覆盖率测试装置通过设置自定义函数表与执行函数表进行对比,以生成代码覆盖率,并可通过自定义函数表有效的兼容各种软件代码,整个测试过程简单。
技术领域
本发明涉及软件测试领域,特别是涉及一种软件代码的覆盖率测试方法及覆盖率测试装置。
背景技术
在C/C++软件开发的质量保证体系中,覆盖率(软件中代码的运行比率)测试通常是一种有效发现问题的手段,通过代码覆盖率的分析,可以快速定位到哪些代码是没有运行的,从而构造相应的测试案例来覆盖这些代码,以发现软件设计中的错误。
目前软件代码覆盖率测试广泛使用的是开源gcov工具,gcov工具是集成在gcc(GNU Compiler Collection,GUN编译器套件)中的一个检测代码覆盖率的工具,它通过编译阶段(即将源代码编译成可执行代码),在源代码中插入探针函数(插入探针函数也称为插桩,用来标识代码的运行次数),来记录代码是否运行,并根据记录的运行信息分析出软件代码行、函数、分支的覆盖情况。
但是使用gcov工具进行软件代码的覆盖率测试具有以下几个缺点:
一、gcov工具需要在检测代码时插入探针函数,因此该软件发布时,需要对软件代码进行重新编译,以将探针函数去除,因此该覆盖率测试的过程较为复杂。
二、由于虚拟机执行的软件代码需要了解虚拟机转换机制才能进行很好的编译,因此对于虚拟机执行的非编译类的软件代码无法进行探针函数的插入操作,进而无法进行软件代码的覆盖率测试。
故现有的覆盖率测试方法的测试过程较为复杂,且不能对所有的软件代码均进行有效的覆盖率测试。
发明内容
本发明实施例提供一种测试过程简单,且可对所有软件代码均可进行有效的覆盖率测试的覆盖率测试方法及覆盖率测试装置,以解决现有的覆盖率测试方法及覆盖率测试装置的测试过程复杂,且不能对所有的软件代码均进行有效的覆盖率测试的技术问题。
为解决上述问题,本发明提供的技术方案如下:
本发明实施例提供一种覆盖率测试方法,其包括:
检测执行函数的执行操作,并获取所述执行函数对应的脚本函数的函数位置、操作码以及相应的操作码偏移;
对所述执行函数对应的脚本函数的函数位置、所述操作码以及所述操作码偏移进行记录,并生成执行函数表;以及
在所述检测操作完毕后,将所述执行函数表与所述自定义函数表进行对比,获取软件代码的覆盖率;其中所述自定义函数表包括所述软件代码的所有脚本函数的函数位置、操作码、操作码偏移以及函数名。
本发明实施例还提供一种覆盖率测试装置,其包括:
执行函数获取模块,用于检测执行函数的执行操作,并获取所述执行函数对应的脚本函数的函数位置、操作码以及相应的操作码偏移;
参数记录模块,用于对所述执行函数对应的脚本函数的函数位置、所述操作码以及所述操作码偏移进行记录,并生成执行函数表;以及
覆盖率获取模块,用于在所述检测操作完毕后,将所述执行函数表与所述自定义函数表进行对比,获取软件代码的覆盖率;其中所述自定义函数表包括所述软件代码的所有脚本函数的函数位置、操作码、操作码偏移以及函数名。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410394793.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种筏板基础的防水构造
- 下一篇:多功能洒水车