买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】代码检测方法以及代码检测装置_腾讯科技(深圳)有限公司_201610122040.2 

申请/专利权人:腾讯科技(深圳)有限公司

申请日:2016-03-02

公开(公告)日:2020-06-26

公开(公告)号:CN107153608B

主分类号:G06F11/36(20060101)

分类号:G06F11/36(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.06.26#授权;2018.01.12#实质审查的生效;2017.09.12#公开

摘要:本发明提供一种代码检测方法,其包括:使用测试用例对测试代码进行代码覆盖率测试,以获取检测代码的代码覆盖率信息;根据未执行测试代码的代码参数,获取未执行测试代码对应的代码函数;根据未执行测试代码对应的代码函数,获取代码函数对应的上层调用函数;根据上层调用函数,获取相应的再测试用例;使用再测试用例对未执行测试代码进行代码覆盖率测试。本发明还提供一种代码检测装置,本发明的代码检测方法及代码检测装置通过根据上层调用函数获取的再测试用例对未执行测试代码进行代码覆盖率测试,可较好的完成代码的完成检测,同时检测成本低、检测时间短且检测步骤较为简单。

主权项:1.一种代码检测方法,其特征在于,包括:使用测试用例对测试代码进行代码覆盖率测试,以获取所述测试代码的代码覆盖率信息;其中所述代码覆盖率信息包括未执行测试代码的代码参数;根据所述未执行测试代码的代码参数,获取所述未执行测试代码对应的代码函数;根据所述未执行测试代码对应的代码函数,获取所述代码函数对应的上层调用函数;根据所述上层调用函数,获取相应的再测试用例,包括:判断所述上层调用函数在所述测试用例中的使用次数是否为零;如为零,则使用所述上层调用函数创建所述再测试用例;以及使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。

全文数据:代码检测方法以及代码检测装置技术领域[0001]本发明涉及检测领域,特别是涉及一种代码检测方法及代码检测装置。背景技术[0002]随着科技的发展,终端上使用的应用越来越多,每个应用投入时间之前都会进行应用测试,如应用代码的覆盖率测试,以保证发布应用的质量。[0003]现有的应用代码的覆盖率测试均是由测试人员排查是否具有未被覆盖的函数或代码行;如由测试人员手工逐个排查哪些文件的哪些函数或代码没有被检测覆盖到,并要测试人员思考增加什么测试用例才能覆盖这些函数或者代码。[0004]上述应用代码的覆盖率检测具有两个缺陷:[0005]一、该覆盖率检测具有一定的技术门槛,需要测试人员对开发代码足够了解,否则无法判断代码可能影响的测试范围。[0006]二、对于未覆盖代码的再覆盖检测操作需要测试人员根据未覆盖代码找到相应的上层调用函数,这个非常耗时以及繁琐。[0007]因此现有的代码检测流程的成本较高、检测时间较长以及检测步骤较为繁琐。发明内容[0008]本发明实施例提供一种检测成本低、检测时间短且检测步骤较为简单的代码检测方法及代码检测装置;以解决现有的代码检测方法及代码检测装置的检测成本较高、检测时间较长以及检测步骤较为繁琐的技术问题。[0009]本发明实施例提供一种代码检测方法,其包括:[0010]使用测试用例对测试代码进行代码覆盖率测试,以获取所述检测代码的代码覆盖率信息;其中所述代码覆盖率信息包括未执行测试代码的代码参数;[0011]根据所述未执行测试代码的代码参数,获取所述未执行测试代码对应的代码函数;[0012]根据所述未执行测试代码对应的代码函数,获取所述代码函数对应的上层调用函数;[0013]根据所述上层调用函数,获取相应的再测试用例;以及[0014]使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。[0015]本发明实施例还提供一种代码检测装置,其包括:[GG16]代码覆盖率信息获取模块,用于使用测试用例对测试代码进行代码覆盖率测试,以获取所述检测代码的代码覆盖率信息;其中所述代码覆盖率信息包括未执行测试代码的代码参数;[G017]代码函数获取模块,用于根据所述未执行测试代码的代码参数,获取所述未执行测试代码对应的代码函数;[0018]上层调用函数获取模块,用于根据所述未执行测试代码对应的代码函数,获取所还代妈凼数对应的上层调用函数;[0019]再测试用例获取模块,用于根据所述上层调用函数,获取相应的再测试用例;以及[0020]测试模块,用于使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。[0021]相较于现有技术的代码检测方法及代码检测装置,本发明的代码检测方法及代码检测装置通过根据上层调用函数获取的再测试用例对未执行测试代码进行代码覆盖率测试,可较好的完成代码的完整检测,同时检测成本低、检测时间短且检测步骤较为简单;解决了现有的代码检测方法及代码检测装置的检测成本较高、检测时间较长以及检测步骤较为繁琐的技术问题。附图说明[00221图1为本发明的代码检测方法的第一优选实施例的流程图;[0023]图2为本发明的代码检测方法的第二优选实施例的流程图;[0024]图3为本发明的代码检测方法的第二优选实施例的步骤5205的流程图;[0025]图4为本发明的代码检测装置的第一优选实施例的结构示意图;[0026]图5为本发明的代码检测装置的第二优选实施例的结构示意图;[0027]图6为本发明的代码检测装置的第二优选实施例的代码函数获取模块的结构示意图;[00281图7为本发明的代码检测装置的第二优选实施例的再测试用例获取模块的结构示意图;[00291图8为本发明的代码检测方法及代码检测装置的具体实施例的流程图;[0030]图9为本发明的代码检测装置所在的电子设备的工作环境结构示意图。具体实施方式[0031]j青参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。[0032]在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。[0033]本发明的代码检测装置可使用各种电子设备进行实施,该电子设备包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备比如移动电话、个人数字助理PDA、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。但该电子设备优选为代码检测服务器,以较好的完成代码的完整检测。[0034]请参照图1,图1为本发明的代码检测方法的第一优选实施例的流程图。本优选实施例的代码检测方法可使用上述的电子设备进行实施,本优选实施例的代码检测方法包括:[0035]步骤S101,使用测试用例对测试代码进行代码覆盖率测试,以获取检测代码的代码覆盖率信息;[0036]步骤S102,根据未执行测试代码的代码参数,获取未执行测试代码对应的代码函数;[0037]步骤S103,根据未执行测试代码对应的代码函数,获取代码函数对应的上层调用函数;[0038]步骤S104,根据上层调用函数,获取相应的再测试用例;[0039]步骤S105,使用再测试用例对未执行测试代码进行代码覆盖率测试;[0040]下面详细说明本优选实施例的代码检测方法的各步骤的具体流程。[0041]在步骤S101中,代码测试装置使用测试用例对测试代码进行覆盖率测试,其中测试用例j为根据该测试代码专门设计的应用测试流程,目的在于检测所有的测试代码能否正常运行。由于测试用例可能不能对所有的测试代码进行检测,因此代码检测装置对检测代码检测完成后,会有测试覆盖率统计,从而获取检测代码的代码覆盖率信息。其中代码覆盖率信息包括测试代码中的未执行测试代码的代码参数,该代码参数可为未执行测试代码的代码位置等。随后转到步骤S102。[0042]在步骤S102中,代码测试装置根据步骤S101获取的未执行测试代码的代码参数,获取未执行测试代码对应的代码函数。由于每行测试代码可能不能单独运行,其均为某个代码函数的一部分,因此这里通过未执行测试代码的代码参数,获取未执行测试代码对应的代码函数,以便后续对该未执行测试代码进行再检测。随后转到步骤8103。[0043]在步骤Sl〇3中,代码测试装置根据步骤S102获取的未执行测试代码对应的代码函数,获取代码函数对应的上层调用函数。该上层调用函数为可以调用代码函数的上层函数,如代码函数为通用键盘输入view控件加载函数,则该代码函数的上层调用函数可为调整已用流量页面和操作的流量监控的流量监控函数以及设置日历的本地提醒页面和操作的日历壁纸设置函数。流量监控函数和日历壁纸设置函数运行时均需要调用通用键盘输入view控件加载函数。随后转到步骤S104。[0044]在步骤S104中,代码测试装置根据步骤S103获取的上层调用函数,获取使用该上层调用函数的再测试用例。如上层调用函数为流量监控函数,则再测试用例可为对终端的当前游戏应用的流量进行监控的流量监控用例等。随后转到步骤;3105。[0045]在步骤S105中,代码测试装置使用步骤S104获取的再测试用例对步骤S101获取的未执行测试代码进行代码覆盖率测试。由于再测试用例是根据未执行测试代码设置的,因此可以较好的完成代码的完整检测。[0046]这样即完成了本优选实施例的代码检测方法的代码检测过程。[0047]本优选实施例的代码检测方法通过根据上层调用函数获取的再测试用例对未执行测试代码进行代码覆盖率测试,可较好的完成代码的完整检测,同时检测成本低、检测时间短且检测步骤较为简单。L〇〇48」iff参妝图2,图2为本发明的代码检测方法的第二优选实施例的流程图。本优选实施例的代码检测方法可使用上述的电子设备进行实施,本优选实施例的代码检测方法包括:[00491步骤S201,通过覆盖率测试工具,使用测试用例对测试代码进行代码覆盖率测试,以获取检测代码的代码覆盖率信息;[0050]步骤S202,获取未执行测试代码的代码行;[0051]步骤S203,获取未执行测试代码的代码行对应的代码函数;[0052]步骤S204,使用静态代码扫描工具对未执行测试代码对应的代码函数进行扫描,以获取代码函数对应的上层调用函数,其中静态代码扫描工具包括代码函数与至少一个上层调用函数的对应关系;[0053]步骤S2〇5,根据上层调用函数,获取相应的再测试用例;[00M]步骤S2〇6,通过覆盖率测试工具,使用再测试用例对未执行测试代码进行代码覆盖率测试。[0055]下面详细说明本优选实施例的代码检测方法的各步骤的具体流程。[0056]在步骤S201中,代码测试装置通过lcov等覆盖率测试工具,使用测试用例对测试代码进行覆盖率测试,其中测试用例为根据该测试代码专门设计的应用测试流程,目的在于检测所有的测试代码能否正常运行。由于测试用例可能不能对所有的测试代码进行检测,因此代码检测装置对检测代码检测完成后,会有测试覆盖率统计,从而获取检测代码的代码覆盖率信息。其中代码覆盖率信息包括测试代码中的未执行测试代码的代码参数,该代码参数可为未执行测试代码的代码行、未执行测试代码的代码执行次数以及未执行测试代码的代码有效性等。随后转到步骤S202。[0057]在步骤S2〇2中,代码测试装置获取步骤S2〇l获取的未执行测试代码的代码行,即代码位置,随后转到步骤S203。[0058]在步骤S203中,代码测试装置获取步骤S202中的代码位置的未执行测试代码对应的代码函数。由于每行测试代码可能不能单独运行,其均为某个代码函数的一部分,因此这里通过未执行测试代码的代码行,获取未执行测试代码对应的代码函数,以便后续对该未执行测试代码进行再检测。随后转到步骤S204。[0059]在步骤S2〇4中,代码测试装置使用静态代码扫描工具(例如understand以及doxygen等对步骤S203获取的未执行测试代码对应的代码函数进行扫描,由于静态代码扫描工具包括代码函数以及至少一个上层调用函数的对应关系,该上层调用函数为可以调用代码函数的上层函数;因此代码测试装置可获取该代码函数对应的上层调用函数。随后转到步骤S205。[0060]在步骤S2〇5中,代码测试装置根据步骤S204获取的上层调用函数,获取使用该上层调用函数的再测试用例。具体请参照图3,图3为本发明的代码检测方法的第二优选实施例的步骤S205的流程图。该步骤S205包括:[0061]步骤S301,判断上层调用函数在测试用例中的使用次数是否为零;如为零,则转到步骤S302;如不为零,则转到步骤S303。[0062]步骤S3〇2,上层调用函数在测试用例中的使用次数为零,则说明该上层调用函数没有在之前的测试用例中使用过,则可使用上层调用函数创建再测试用例;随后转到步骤S206〇[0063]步骤S303,上层调用函数在测试用例中的使用次数不为零,则说明该上层调用函数在之前的测试用例中使用过,因此不会使用该上层调用函数创建再测试用例。随后转到步骤S206。[00M]在步骤S206中,代码测试装置通过lc〇v等覆盖率测试工具,使用步骤S205获取的再测试用例对步骤S201获取的未执行测试代码进行代码覆盖率测试。由于再测试用例是根据未执行测试代码设置的,因此可以较好的完成代码的完整检测。[0065]这样即完成了本优选实施例的代码检测方法的代码检测过程。[0066]在第一优选实施例的基础上,本优选实施例的代码检测方法使用静态代码扫描工具进行上层调用函数的获取,使得获取的上层调用函数更加全面准确;通过对上层调用函数的使用次数的判断,进一步提高了再测试用例的检测准确性。[0067]本发明还提供一种代码检测装置,请参照图4,图4为本发明的代码检测装置的第一优选实施例的结构示意图。该代码检测装置40包括代码覆盖率信息获取模块41、代码函数获取模块42、上层调用函数获取模块43、再测试用例获取模块44以及测试模块45。[0068]代码覆盖率信息获取模块41用于使用测试用例对测试代码进行代码覆盖率测试,以获取检测代码的代码覆盖率信息;其中代码覆盖率信息包括未执行测试代码的代码参数。代码函数获取模块42用于根据未执行测试代码的代码参数,获取未执行测试代码对应的代码函数。上层调用函数获取模块43用于根据未执行测试代码对应的代码函数,获取代码函数对应的上层调用函数。再测试用例获取模块44用于根据上层调用函数,获取相应的再测试用例。测试模块45用于使用再测试用例对未执行测试代码进行代码覆盖率测试。[0069]本优选实施例的代码检测装置40使用时,代码覆盖率信息获取模块41使用测试用例对测试代码进行覆盖率测试,其中测试用例为根据该测试代码专门设计的应用测试流程,目的在于检测所有的测试代码能否正常运行。由于测试用例可能不能对所有的测试代码进行检测,因此代码覆盖率信息获取模块41对检测代码检测完成后,会有测试覆盖率统计,从而获取检测代码的代码覆盖率信息。其中代码覆盖率信息包括测试代码中的未执行测试代码的代码参数,该代码参数可为未执行测试代码的代码位置等。[0070]随后代码函数获取模块42根据代码覆盖率信息获取模块41获取的未执行测试代码的代码参数,获取未执行测试代码对应的代码函数。由于每行测试代码可能不能单独运行,其均为某个代码函数的一部分,因此这里通过未执行测试代码的代码参数,获取未执行测试代码对应的代码函数,以便后续对该未执行测试代码进行再检测。[0071]然后上层调用函数获取模块43根据代码函数获取模块42获取的未执行测试代码对应的代码函数,获取代码函数对应的上层调用函数。该上层调用函数为可以调用代码函数的上层函数,如代码函数为通用键盘输入view控件加载函数,则该代码函数的上层调用函数可为调整已用流量页面和操作的流量监控的流量监控函数以及设置日历的本地提醒页面和操作的日历壁纸设置函数。流量监控函数和日历壁纸设置函数运行时均需要调用通用键盘输入view控件加载函数。[0072]随后再测试用例获取模块44根据上层调用函数获取模块43获取的上层调用函数,获取使用该上层调用函数的再测试用例。如上层调用函数为流量监控函数,则再测试用例可为对终端的当前游戏应用的流量进行监控的监控函数等。[0073]最后测试模块45使用再测试用例获取模块44获取的再测试用例对代码覆盖率信息获取模块获取的未执行测试代码进行代码覆盖率测试。由于再测试用例是根据未执行测试代码设置的,因此可以较好的完成代码的完整检测。[0074]这样即完成了本优选实施例的代码检测装置40的代码检测过程。[0075]本优选实施例的代码检测装置通过根据上层调用函数获取的再测试用例对未执行测试代码进行代码覆盖率测试,可较好的完成代码的完整检测,同时检测成本低、检测时间短且检测步骤较为简单。[0076]请参照图5,图5为本发明的代码检测装置的第二优选实施例的结构示意图。该代码检测装置5〇包括代码覆盖率信息获取模块51、代码函数获取模块52、上层调用函数获取模块53、再测试用例获取模块54以及测试模块55。[0077]该代码覆盖率信息获取模块51用于通过覆盖率测试工具,使用测试用例对测试代码进行代码覆盖率测试;代码函数获取模块52用于根据未执行测试代码的代码参数,获取未执行测试代码对应的代码函数;上层调用函数获取模块53用于使用静态代码扫描工具对未执行测试代码对应的代码函数进行扫描,以获取代码函数对应的上层调用函数,其中静态代码扫描工具包括代码函数与至少一个上层调用函数的对应关系;再测试用例获取模块54用于根据上层调用函数,获取相应的再测试用例;测试模块55用于使用再测试用例对未执行测试代码进行代码覆盖率测试。[0078]请参照图6,图6为本发明的代码检测装置的第二优选实施例的代码函数获取模块的结构示意图。该代码函数获取模块52包括代码行获取单元61以及代码函数获取单元62。代码行获取单元61用于获取未执行测试代码的代码行;代码函数获取单元62用于获取未执行测试代码的代码行对应的代码函数。[0079]请参照图7,图7为本发明的代码检测装置的第二优选实施例的再测试用例获取模块的结构示意图。再测试用例获取模块54包括判断单元71以及再测试用例创建单元72。判断单元71用于判断上层调用函数在测试用例中的使用次数是否为零。再测试用例创建单元72用于使用上层调用函数创建再测试用例。[0080]本优选实施例的代码检测装置50使用时,首先代码覆盖率信息获取模块51通过lcov等覆盖率测试工具,使用测试用例对测试代码进行覆盖率测试,其中测试用例为根据该测试代码专门设计的应用测试流程,目的在于检测所有的测试代码能否正常运行。由于测试用例可能不能对所有的测试代码进行检测,因此代码检测装置对检测代码检测完成后,会有测试覆盖率统计,从而获取检测代码的代码覆盖率信息。其中代码覆盖率信息包括测试代码中的未执行测试代码的代码参数,该代码参数可为未执行测试代码的代码行、未执行测试代码的代码执行次数以及未执行测试代码的代码有效性等。[0081]随后代码函数获取模块52的代码行获取单元61获取代码覆盖率信息获取模块获取的未执行测试代码的代码行,即代码位置。[0082]然后代码函数获取模块52的代码函数获取单元62获取该代码位置的未执行测试代码对应的代码函数。由于每行测试代码可能不能单独运行,其均为某个代码函数的一部分,因此这里通过未执行测试代码的代码行,获取未执行测试代码对应的代码函数,以便后续对该未执行测试代码进行再检测。[0083]随后上层调用函数获取模块53使用静态代码扫描工具(例如understand以及doxygen等对代码函数获取模块52获取的未执行测试代码对应的代码函数进订扫描,由于静态代码扫描工具包括代码函数以及至少一个上层调用函数的对应关系,该上层调用函数为可以调用代码函数的上层函数;因此上层调用函数获取模块53可获取该代码函数对应的上层调用函数。[0084]再测试用例获取模块54根据上层调用函数获取模块53获取的上层调用函数,获取使用该上层调用函数的再测试用例。具体为:[0085]再测试用例获取模块54的判断单元71判断上层调用函数在测试用例中的使用次数是否为零;如上层调用函数在测试用例中的使用次数为零,则说明该上层调用函数没有在之前的测试用例中使用过,则再测试用例获取模块54的再测试用例创建单元72使用上层调用函数创建再测试用例。如上层调用函数在测试用例中的使用次数不为零,则说明该上层调用函数在之前的测试用例中使用过,因此再测试用例获取模块54不会使用该上层调用函数创建再测试用例。[0086]最后测试模块55通过lcov等覆盖率测试工具,使用再测试用例获取模块54获取的再测试用例对代码覆盖率信息获取模块获取的未执行测试代码进行代码覆盖率测试。由于再测试用例是根据未执行测试代码设置的,因此可以较好的完成代码的完整检测。[0087]这样即完成了本优选实施例的代码检测装置50的代码检测过程。[0088]在第一优选实施例的基础上,本优选实施例的代码检测装置使用静态代码扫描工具进行上层调用函数的获取,使得获取的上层调用函数更加全面准确;通过对上层调用函数的使用次数的判断,进一步提高了再测试用例的检测准确性。[0089]下面通过一具体实施例说明本发明的代码检测方法及代码检测装置的具体工作原理。请参照图8,图8为本发明的代码检测方法及代码检测装置的具体实施例的流程图。该具体实施例使用代码检测服务器进行实施,该代码检测过程包括:[0090]步骤S801,代码检测装置通过覆盖率测试工具lcov,使用测试用例对测试代码进行覆盖率测试,获取代码覆盖率信息,如代码覆盖率信息.info文件,具体的代码覆盖率信息.info文件如下所示:[0091]SF:ApplicationsXcode3.appX.m[0092]FN:126,_CGPointApplyAffineTransforra[0093]FNDA:0,_CGPointApplyAffineTransform[0094]FNF:1[0095]FNH:0[0096]DA:129,4098624[0097]DA:130,4098624[0098]DA:131,4098624[0099]DA:132,0[0100]LF:3[0101]LH:3[0102]End_of_record[0103]其中SF为文件名;FN为函数起始行以及函数名;FNDA为函数执行次数以及函数名;FNF为函数总数;FNH为函数总数中被执行到的个数;DA为代码行号以及当前行被执行到的次数;LF为代码有效行总数;LH为代码有效行总数中被执行到的个数;end_of_reC3;rd为“记录”结束符。^_[0104]步骤S802,从步骤S8〇l中可知第I32行的代码为未执行测试代码,然后代码测试装置获取该未执行测试代码对应的代码函数。这里该代码函数为MshareUI_MInputListView.m-[MInputListViewreload],该代码函数对应的知识库内容为通用键盘输入view控件加载函数。[0105]步骤S8〇3,代码测试装置使用understand以及doxygen两种静态代码扫描工具对上述未执行测试代码对应的代码函数进行扫描,从而获取与该代码函数对应的上层调用函数。在本具体实施例中,代码函数[0106]MshareUI—MInputListView.m-[MInputListViewreload]的上层调用函数为MMAdjustUUsedTrafficViewController.m-[MAdjustUsedTrafficViewControllerviewDidload],调整已用流量页面和操作的流量监控函数;以及[0107]MMffallpaperNotificationController.m-[MffalIpaperNotificationControllerviewDidload],设置日历的本地提醒页面和操作的日历壁纸设置函数。[0108]步骤S804,代码测试装置获取流量监控函数和日历壁纸设置函数在测试用例中的使用次数,这里如流量监控函数在测试用例中的使用次数为0次,日历壁纸设置函数在测试用例中的使用次数为2次,由于日历壁纸设置函数在测试用例中已经使用过,因此这里使用流量监控函数创建再测试用例,如再测试用例可为对终端的当前游戏应用的流量进行监控的流量监控用例等。[0109]步骤S805,代码测试装置使用步骤S804获取的再测试用例对步骤S804获取的未执行测试代码进行代码覆盖率测试。由于再测试用例是根据未执行测试代码设置的,因此可以较好的完成代码的完整检测。[0110]这样即完成了本具体实施例的代码测试方法的代码检测过程。[0111]本发明的代码检测方法及代码检测装置通过根据上层调用函数获取的再测试用例对未执行测试代码进行代码覆盖率测试,可较好的完成代码的完整检测,同时检测成本低、检测时间短且检测步骤较为简单;解决了现有的代码检测方法及代码检测装置的检测成本较高、检测时间较长以及检测步骤较为繁琐的技术问题。[0112]如本申请所使用的术语“组件”、“模块”、“系统”、“接口”、“进程”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以有在于执行的进程和或线程内,并且组件可以位于一个计算机上和或分布在两个或更多计算机之间。[0113]而且,要求保护的主题可以被实现为使用标准编程和或工程技术产生软件、固件、硬件或其任意组合以控制计算机实现所公开的主题的方法、装置或制造品。本文所使用的术语“制造品”旨在包含可从任意计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将认识到可以对该配置进行许多修改,而不脱离要求保护的主题的范围或精神。[0114]图9和随后的讨论提供了对实现本发明所述的信息展示装置所在的电子设备的工作环境的简短、概括的描述。图9的工作环境仅仅是适当的工作环境的一个实例并且不旨在建议关于工作环境的用途或功能的范围的任何限制。实例电子设备912包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理PDA、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。[0115]尽管没有要求,但是在“计算机可读指令”被一个或多个电子设备执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。[0116]图9图示了包括本发明的信息展示装置的一个或多个实施例的电子设备912的实例。在一种配置中,电子设备912包括至少一个处理单元916和存储器918。根据电子设备的确切配置和类型,存储器9丨8可以是易失性的(比如RAM、非易失性的(比如ROM、闪存等或二者的某种组合。该配置在图9中由虚线914图示。[0117]在其他实施例中,电子设备912可以包括附加特征和或功能。例如,设备912还可以包括附加的存储装置例如可移除和或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图9中由存储装置920图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置920中。存储装置920还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器918中由例如处理单元916执行。[0118]本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器918和存储装置920是计算机存储介质的实例。计算机存储介质包括但不限于1^11、1?0113£?1?011、闪存或其他存储器技术、00-1?01^、数字通用盘DVD或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被电子设备912访问的任何其他介质。任意这样的计算机存储介质可以是电子设备912的一部分。[0119]电子设备912还可以包括允许电子设备912与其他设备通信的通信连接926。通信连接926可以包括但不限于调制解调器、网络接口卡NIC、集成网络接口、射频发射器接收器、红外端口、USB连接或用于将电子设备912连接到其他电子设备的其他接口。通信连接9洲可以包括有线连接或无线连接。通信连接926可以发射和或接收通信媒体。[0120]术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“己调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“己调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。[0121]电子设备則2可以包括输入设备泊4,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和或任何其他输入设备。设备912中也可以包括输出设备922,比如一个或多个显示器、扬声器、打印机和或任意其他输出设备。输入设备924和输出设备922可以经由有线连接、无线连接或其任意组合连接到电子设备912。在一个实施例中,来自另一个电子设备的输入设备或输出设备可以被用作电子设备912的输入设备924或输出设备922。[0122]电子设备912的组件可以通过各种互连(比如总线连接。这样的互连可以包括外围组件互连PCI比如快速PCI、通用串行总线USB、火线(IEEE1394、光学总线结构等等。在另一个实施例中,电子设备912的组件可以通过网络互连。例如,存储器918可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。[0123]本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络928访问的电子设备930可以存储用于实现本发明所提供的一个或多个实施例的计算机可读指令。电子设备912可以访问电子设备930并且下载计算机可读指令的一部分或所有以供执行。可替代地,电子设备912可以按需要下载多条计算机可读指令,或者一些指令可以在电子设备912处执行并且一些指令可以在电子设备930处执行。[0124]本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被电子设备执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。[0125]而且,本文所使用的词语“优选的”意指用作实例、示例或例证。奉文描述为“优选的”任意方面或设计不必被解释为比其他方面或设计更有利。相反,词语“优选的”的使用旨在以具体方式提出概念。如本申请中所使用的术语“或”旨在意指包含的“或”而非排除的“或”。即,除非另外指定或从上下文中清楚,“X使用A或B”意指自然包括排列的任意一个。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在前述任一示例中得到满足。[0126]而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件例如元件、资源等执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能例如其在功能上是等价的)的任意组件除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征己经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。[0127]本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。[0128]综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。

权利要求:1.一种代码检测方法,其特征在于,包括:使用测试用例对测试代码进行代码覆盖率测试,以获取所述检测代码的代码覆盖率信息;其中所述代码覆盖率信息包括未执行测试代码的代码参数;根据所述未执行测试代码的代码参数,获取所述未执行测试代码对应的代码函数;根据所述未执行测试代码对应的代码函数,获取所述代码函数对应的上层调用函数;根据所述上层调用函数,获取相应的再测试用例;以及使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。2.根据权利要求1所述的代码检测方法,其特征在于,所述使用测试用例对测试代码进行代码覆盖率测试的步骤具体为:通过覆盖率测试工具,使用测试用例对测试代码进行代码覆盖率测试;所述使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试的步骤具体为:通过所述覆盖率测试工具,使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。3.根据权利要求1所述的代码检测方法,其特征在于,所述根据所述未执行测试代码的代码参数,获取所述未执行测试代码对应的代码函数的步骤包括:获取所述未执行测试代码的代码行;以及获取所述未执行测试代码的代码行对应的代码函数。4.根据权利要求1所述的代码检测方法,其特征在于,所述根据所述未执行测试代码对应的代码函数,获取所述代码函数对应的上层调用函数的步骤包括:使用静态代码扫描工具对所述未执行测试代码对应的代码函数进行扫描,以获取所述代码函数对应的上层调用函数,其中所述静态代码扫描工具包括所述代码函数与至少一个上层调用函数的对应关系。5.根据权利要求1所述的代码检测方法,其特征在于,所述根据所述上层调用函数,获取相应的再测试用例的步骤包括:判断所述上层调用函数在所述测试用例中的使用次数是否为零;如为零,则使用所述上层调用函数创建所述再测试用例。6.—种代码检测装置,其特征在于,包括:代码覆盖率信息获取模块,用于使用测试用例对测试代码进行代码覆盖率测试,以获取所述检测代码的代码覆盖率信息;其中所述代码覆盖率信息包括未执行测试代码的代码参数;代码函数获取模块,用于根据所述未执行测试代码的代码参数,获取所述未执行测试代码对应的代码函数;上层调用函数获取模块,用于根据所述未执行测试代码对应的代码函数,获取所述代码函数对应的上层调用函数;再测试用例获取模块,用于根据所述上层调用函数,获取相应的再测试用例;以及测试模块,用于使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。7.根据权利要求6所述的代码检测装置,其特征在于,所述代码覆盖率信息获取模块具体用于通过覆盖率测试工具,使用测试用例对测试代码进行代码覆盖率测试;所述测试模块具体用于通过所述覆盖率测试工具,使用所述再测试用例对所述未执行测试代码进行代码覆盖率测试。8.根据权利要求6所述的代码检测装置,其特征在于,所述代码函数获取模块包括:代码行获取单元,用于获取所述未执行测试代码的代码行;以及代码函数获取单元,用于获取所述未执行测试代码的代码行对应的代码函数。9.根据权利要求6所述的代码检测装置,其特征在于,所述上层调用函数获取模块具体用于使用静态代码扫描工具对所述未执行测试代码对应的代码函数进行扫描,以获取所述代码函数对应的上层调用函数,其中所述静态代码扫描工具包括所述代码函数与至少一个上层调用函数的对应关系。10.根据权利要求6所述的代码检测装置,其特征在于,所述再测试用例获取模块包括:判断单元,用于判断所述上层调用函数在所述测试用例中的使用次数是否为零;以及再测试用例创建单元,用于使用所述上层调用函数创建所述再测试用例。

百度查询: 腾讯科技(深圳)有限公司 代码检测方法以及代码检测装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。