覆盖率检测方法、装置和设备制造方法及图纸

技术编号:14449204 阅读:130 留言:0更新日期:2017-01-18 09:58
本发明专利技术实施例提供一种覆盖率检测方法、装置和设备,该方法包括:接收服务器发送的程序执行数据;所述程序执行数据为所述服务器调用加密数据收集函数获取的所述服务器正在执行的文件的数据;所述文件为加密格式;解析获取所述文件对应的源代码文件的总代码行数;根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率,通过对加密的源文件代码进行处理得到总代码行数,结合接收到程序执行数据计算该加密文件的覆盖率,实现对加密格式的文件实时获取覆盖率数据。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种覆盖率检测方法、装置和设备
技术介绍
代码覆盖率测试,是软件测试过程中最重要的测试方法和测试效果衡量标准之一,覆盖率指的是源代码执行过程中被测试所覆盖到代码的比例和程度,通常用百分比表示。对不同的编程语言来说,都有相应的检测代码覆盖率的方法。目前较主流的游戏服务器架构之一,是基于C++底层和Python上层构建实现。目前针对Python代码覆盖率的检测,最常用的是基于python类库coverage的技术方案。具体的是利用Python的sys模块中提供settrace函数,跟踪代码的执行情况,将覆盖率数据存储到Collector中的Stack中。每当开始采集时,Collector不断执行入栈操作,停止采集时,通过出栈操作即可获取已采集的覆盖率信息。然而,由于一些软件和应用(如游戏服务器)是通过将待执行的文件编译成加密文件运行,即在实际运行过程中,待测试目录下,往往只有加密文件,而没有原始的文件。以python类库为例,采取的是利用python的序列化库marshal对加密文件进行序列化来获取文件内容,若对于加密编译后的游戏服务器端的加密文件进行该操作,获取的代码内容是乱码,无法获得代码总行数,也无法获取实际运行的文件名,导致无法采集到任何覆盖率数据。
技术实现思路
本专利技术实施例提供一种覆盖率检测方法、装置和设备,用于解决对于加密编译后的游戏服务器端的加密文件采用现有的方式,获取的代码内容是乱码,无法获得代码总行数,也无法获取实际运行的文件名,导致无法采集到任何覆盖率数据的问题。本专利技术实施例提供一种覆盖率检测方法,包括:接收服务器发送的程序执行数据;程序执行数据为服务器调用加密数据收集函数获取的服务器正在执行的文件的数据;文件为加密格式;解析获取文件对应的源代码文件的总代码行数;根据程序执行数据和总代码行数,计算获取文件当前的覆盖率。可选的,方法还包括:显示文件当前的覆盖率。可选的,程序执行数据包括服务器执行的文件被执行的代码行号,根据程序执行数据和总代码行数,计算获取文件当前的覆盖率,包括:根据被执行的代码行号,获取文件中已执行代码的行数;根据已执行代码的行数Le和总代码行数Lt,采用R=Le/Lt计算得到文件当前的覆盖率R。可选的,程序执行数据包括游戏服务器执行的文件的文件名称,则解析获取文件对应的源代码文件的总代码行数之前,方法还包括:根据加密前文件名称和加密后文件名称的对应关系,获取与文件的文件名称对应的文件加密前的文件名称;将文件的源代码文件路径替换为文件加密前的源代码文件路径,文件路径由文件的文件名称表示。可选的,解析获取文件对应的源代码文件的总代码行数,包括:对替换后的源代码文件路径中的源代码文件进行解析处理,剔除源代码文件中的空白行和注释行,得到源代码文件的总代码行数。本专利技术第二方面提供一种覆盖率检测方法,包括:在执行文件的程序代码的过程中,调用加密数据收集函数实时获取文件的程序执行数据;文件为加密格式;将程序执行数据发送给覆盖率服务端,以使覆盖率服务端根据程序执行数据获取文件当前的覆盖率。可选的,方法还包括:将程序执行数据进行存储;程序执行数据包括文件的文件名称和文件被执行的代码行号。可选的,将程序执行数据进行存储,包括:根据文件名称,检测本地是否存在与文件对应的程序执行数据;若存在,则在本地不存在文件被执行的代码行号时,将文件被执行的代码行号存储在程序执行数据中;否则,在本地增加以文件名称为索引的文件对应的程序执行数据。本专利技术第三方面提供一种覆盖率检测装置,包括:接收模块,用于接收服务器发送的程序执行数据;程序执行数据为服务器调用加密数据收集函数获取的服务器正在执行的文件的数据;文件为加密格式;处理模块,用于解析获取文件对应的源代码文件的总代码行数;处理模块还用于根据程序执行数据和总代码行数,计算获取文件当前的覆盖率。可选的,装置还包括:显示模块,用于显示文件当前的覆盖率。可选的,程序执行数据包括服务器执行的文件被执行的代码行号,处理模块具体用于:根据被执行的代码行号,获取文件中已执行代码的行数;根据已执行代码的行数Le和总代码行数Lt,采用R=Le/Lt计算得到文件当前的覆盖率R。可选的,程序执行数据包括游戏服务器执行的文件的文件名称,则处理模块还用于:根据加密前文件名称和加密后文件名称的对应关系,获取与文件的文件名称对应的文件加密前的文件名称;将文件的源代码文件路径替换为文件加密前的源代码文件路径,文件路径由文件的文件名称表示。可选的,处理模块具体用于:对替换后的源代码文件路径中的源代码文件进行解析处理,剔除源代码文件中的空白行和注释行,得到源代码文件的总代码行数。本专利技术第四方面提供一种覆盖率检测装置,包括:处理模块,用于在执行文件的程序代码的过程中,调用加密数据收集函数实时获取文件的程序执行数据;文件为加密格式;发送模块,用于将程序执行数据发送给覆盖率服务端,以使覆盖率服务端根据程序执行数据获取文件当前的覆盖率。可选的,装置还包括:存储模块,用于将程序执行数据进行存储;程序执行数据包括文件的文件名称和文件被执行的代码行号。可选的,存储模块具体用于:根据文件名称,检测本地是否存在与文件对应的程序执行数据;若存在,则在本地不存在文件被执行的代码行号时,将文件被执行的代码行号存储在程序执行数据中;否则,在本地增加以文件名称为索引的文件对应的程序执行数据。本专利技术第五方面提供一种服务器,包括:存储有程序指令的存储器、接收器和用于控制程序指令执行的处理器;接收器用于接收服务器发送的程序执行数据;程序执行数据为服务器调用加密数据收集函数获取的服务器正在执行的文件的数据;文件为加密格式;处理器用于:解析获取文件对应的源代码文件的总代码行数;根据程序执行数据和总代码行数,计算获取文件当前的覆盖率。本专利技术第六方面提供一种服务器,包括:存储有程序指令的存储器、用于控制程序指令执行的处理器和发送器;处理器用于在执行文件的程序代码的过程中,调用加密数据收集函数实时获取文件的程序执行数据;文件为加密格式;发送器用于将程序执行数据发送给覆盖率服务端,以使覆盖率服务端根据程序执行数据获取文件当前的覆盖率。本专利技术实施例提供的一种覆盖率检测方法、装置和设备,覆盖率检测端接收到文件执行端的服务器发送的程序执行数据,该程序执行数据为从加密的文件执行过程中获取的,覆盖率检测端对该程序执行数据对应的加密文件文件进行解析处理,得到该加密文件的源代码文件的总代码行数,再根据总代码行数和程序执行数据计算得到该加密文件的覆盖率,实现实时获取加密文件的覆盖率数据。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。图1为本专利技术实施例提供的覆盖率检测方法实例一的流程图;图2为本专利技术实施例提供的覆盖率检测方法实例二的流程图;图3为本专利技术实施例提供的覆盖率检测方法实例三的流程图;图4为本专利技术实施例提供的覆盖率检测装置实施例一的结构示意图;图5为本专利技术实施例提供的覆盖率检测装本文档来自技高网...

【技术保护点】
一种覆盖率检测方法,其特征在于,包括:接收服务器发送的程序执行数据;所述程序执行数据为所述服务器调用加密数据收集函数获取的所述服务器正在执行的文件的数据;所述文件为加密格式;解析获取所述文件对应的源代码文件的总代码行数;根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率。

【技术特征摘要】
1.一种覆盖率检测方法,其特征在于,包括:接收服务器发送的程序执行数据;所述程序执行数据为所述服务器调用加密数据收集函数获取的所述服务器正在执行的文件的数据;所述文件为加密格式;解析获取所述文件对应的源代码文件的总代码行数;根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:显示所述文件当前的所述覆盖率。3.根据权利要求1或2所述的方法,其特征在于,所述程序执行数据包括所述服务器执行的所述文件被执行的代码行号,所述根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率,包括:根据所述被执行的代码行号,获取所述文件中已执行代码的行数;根据所述已执行代码的行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件当前的覆盖率R。4.根据权利要求1或2所述的方法,其特征在于,所述程序执行数据包括所述服务器执行的所述文件的文件名称,则所述解析获取所述文件对应的源代码文件的总代码行数之前,所述方法还包括:根据加密前文件名称和加密后文件名称的对应关系,获取与所述文件的文件名称对应的所述文件加密前的文件名称;将所述文件的源代码文件路径替换为所述文件加密前的源代码文件路径,所述文件路径由所述文件的文件名称表示。5.根据权利要求4所述的方法,其特征在于,所述解析获取所述文件对应的源代码文件的总代码行数,包括:对替换后的源代码文件路径中的源代码文件进行解析处理,剔除所述源代码文件中的空白行和注释行,得到所述源代码文件的所述总代码行数。6.一种覆盖率检测方法,其特征在于,包括:在执行文件的程序代码的过程中,调用加密数据收集函数实时获取所述文件的程序执行数据;所述文件为加密格式;将所述程序执行数据发送给覆盖率服务端,以使所述覆盖率服务端根据所述程序执行数据获取所述文件当前的覆盖率。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:将所述程序执行数据进行存储;所述程序执行数据包括所述文件的文件名称和所述文件被执行的代码行号。8.根据权利要求7所述的方法,其特征在于,所述将所述程序执行数据进行存储,包括:根据所述文件名称,检测本地是否存在与所述文件对应的程序执行数据;若存在,则在本地不存在所述文件被执行的代码行号时,将所述文件被执行的代码行号存储在所述程序执行数据中;否则,在本地增加以所述文件名称为索引的所述文件对应的所述程序执行数据。9.一种覆盖率检测装置,其特征在于,包括:接收模块,用于接收服务器发送的程序执行数据;所述程序执行数据为所述服务器调用加密数据收集函数获取的所述服务器正在执行的文件的数据;所述文件为加密格式;处理模块,用于解析获取所述文件对应的源代码文件的总代码行数;所述处理模块还用于根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率。10...

【专利技术属性】
技术研发人员:衣建中赵亮
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1