【技术实现步骤摘要】
本专利技术涉及计算机
,尤其涉及一种覆盖率检测方法、装置和设备。
技术介绍
代码覆盖率测试,是软件测试过程中最重要的测试方法和测试效果衡量标准之一,覆盖率指的是源代码执行过程中被测试所覆盖到代码的比例和程度,通常用百分比表示。对不同的编程语言来说,都有相应的检测代码覆盖率的方法。目前较主流的游戏服务器架构之一,是基于C++底层和Python上层构建实现。目前针对Python代码覆盖率的检测,最常用的是基于python类库coverage的技术方案。具体的是利用Python的sys模块中提供settrace函数,跟踪代码的执行情况,将覆盖率数据存储到Collector中的Stack中。每当开始采集时,Collector不断执行入栈操作,停止采集时,通过出栈操作即可获取已采集的覆盖率信息。然而,由于一些软件和应用(如游戏服务器)是通过将待执行的文件编译成加密文件运行,即在实际运行过程中,待测试目录下,往往只有加密文件,而没有原始的文件。以python类库为例,采取的是利用python的序列化库marshal对加密文件进行序列化来获取文件内容,若对于加密编译后的游戏服务器端的加密文件进行该操作,获取的代码内容是乱码,无法获得代码总行数,也无法获取实际运行的文件名,导致无法采集到任何覆盖率数据。
技术实现思路
本专利技术实施例提供一种覆盖率检测方法、装置和设备,用于解决对于加密编译后的游戏服务器端的加密文件采用现有的方式,获取的代码内容是乱码,无法获得代码总行数,也无法获取实际运行的文件名,导致无法采集到任何覆盖率数据的问题。本专利技术实施例提供一种覆盖率检测 ...
【技术保护点】
一种覆盖率检测方法,其特征在于,包括:接收服务器发送的程序执行数据;所述程序执行数据为所述服务器调用加密数据收集函数获取的所述服务器正在执行的文件的数据;所述文件为加密格式;解析获取所述文件对应的源代码文件的总代码行数;根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率。
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。