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

技术编号:14355258 阅读:90 留言:0更新日期:2017-01-08 22:32
本发明专利技术实施例提供一种覆盖率检测方法、装置和设备,该方法包括:接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和文件的数据;根据每个执行数据中的启动路径和服务器地址,获取执行数据对应的文件的程序执行数据;解析获取每个执行数据对应的文件的源代码文件的总代码行数;根据每个文件对应的程序执行数据和总代码行数,计算获取每个文件当前的覆盖率。通过对接收到服务器的多个执行数据,根据服务器地址、启动路径等从多个执行数据中获取文件的程序执行数据,该执行数据综合了多路径执行结果,获取到的文件的覆盖率能够真实的反应该文件的代码总体的执行情况。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种覆盖率检测方法、装置和设备
技术介绍
代码覆盖率测试,是软件测试过程中最重要的测试方法和测试效果衡量标准之一,覆盖率指的是源代码执行过程中被测试所覆盖到代码的比例和程度,通常用百分比表示。对不同的编程语言来说,都有相应的检测代码覆盖率的方法。目前较主流的游戏服务器架构之一,是基于C++底层和Python上层构建实现。目前针对Python代码覆盖率的检测,最常用的是基于python类库coverage的技术方案。具体的是利用Python的sys模块中提供settrace函数,跟踪代码的执行情况,将覆盖率数据存储到Collector中的Stack中。每当开始采集时,Collector不断执行入栈操作,停止采集时,通过出栈操作即可获取已采集的覆盖率信息。然而,由于游戏服务器在启动时,往往会同时启动多个进程来处理游戏客户端的请求,所以相应的,每个进程所执行到的代码并不完全一样,游戏服务器一般会根据不同进程的压力进行请求的分配和处理,所以采取传统的方法进行检测,会导致不同游戏进程的覆盖率结果不同,不能够真实地反映代码总体的执行情况。
技术实现思路
本专利技术实施例提供一种覆盖率检测方法、装置和设备,用于解决采取传统的方法进行检测,会导致不同游戏进程的覆盖率结果不同,不能够真实地反映代码总体的执行情况的问题。本专利技术第一方面提供一种覆盖率检测方法,包括:接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和文件的数据;根据每个执行数据中的启动路径和服务器地址,获取执行数据对应的文件的程序执行数据;解析获取每个执行数据对应的文件的源代码文件的总代码行数;根据每个文件对应的程序执行数据和总代码行数,计算获取每个文件当前的覆盖率。可选的,方法还包括:将服务器上执行的每个文件当前的覆盖率进行显示。可选的,根据每个执行数据中的启动路径和服务器地址,获取执行数据对应的文件的程序执行数据,包括:根据每个执行数据中的启动路径和服务器地址,将启动路径和服务器地址均相同的执行数据中的文件的数据进行合并,得到文件对应的程序执行数据;其中,每个文件的程序执行数据包括文件被执行的代码行号。可选的,根据每个文件对应的程序执行数据和总代码行数,计算获取每个文件当前的覆盖率,包括:根据每个文件被执行的代码行号,获取文件中已执行代码的行数Le;根据文件的已执行代码的行数Le和文件的总代码行数Lt,采用R=Le/Lt计算得到文件当前的覆盖率R。可选的,解析获取每个执行数据对应的文件的源代码文件的总代码行数,包括:对每个文件对应的源代码文件进行解析处理,剔除源代码文件中的空白行和注释行,得到每个文件的源代码文件的总代码行数。本专利技术第二方面提供一种覆盖率检测方法,包括:在执行多个文件的程序代码的过程中,通过多个进程分别调用数据收集函数实时获取文件的执行数据,执行数据至少为两个;向覆盖率服务端发送至少两个执行数据,以使覆盖率服务器根据至少两个执行数据获取每个文件当前的覆盖率;其中,每个执行数据包括正在执行文件的启动路径、游戏服务器地址和文件的数据。可选的,方法还包括:将每个文件的执行数据进行存储;执行数据包括文件的文件名称和文件被执行的代码行号。可选的,将每个文件的程序执行数据进行存储,包括:根据文件的文件名称,检测本地是否存在与文件对应的程序执行数据;若存在,则在本地不存在文件被执行的代码行号时,将文件被执行的代码行号存储在程序执行数据中;否则,在本地增加以文件名称为索引的文件对应的程序执行数据。本专利技术第三方面提供一种覆盖率检测装置,包括:接收模块,用于接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和文件的数据;处理模块,用于根据每个执行数据中的启动路径和服务器地址,获取执行数据对应的文件的程序执行数据;处理模块还用于解析获取每个执行数据对应的文件的源代码文件的总代码行数;处理模块还用于根据每个文件对应的程序执行数据和总代码行数,计算获取每个文件当前的覆盖率。可选的,装置还包括:显示模块,用于将服务器上执行的每个文件当前的覆盖率进行显示。可选的,处理模块具体用于:根据每个执行数据中的启动路径和服务器地址,将启动路径和服务器地址均相同的执行数据中的文件的数据进行合并,得到文件对应的程序执行数据;其中,每个文件的程序执行数据包括文件被执行的代码行号。可选的,处理模块具体用于:根据每个文件被执行的代码行号,获取文件中已执行代码的行数Le;根据文件的已执行代码的行数Le和文件的总代码行数Lt,采用R=Le/Lt计算得到文件当前的覆盖率R。可选的,处理模块具体用于:对每个文件对应的源代码文件进行解析处理,剔除源代码文件中的空白行和注释行,得到每个文件的源代码文件的总代码行数。本专利技术第四方面提供一种覆盖率检测装置,包括:处理模块,用于在执行多个文件的程序代码的过程中,通过多个进程分别调用数据收集函数实时获取文件的执行数据,执行数据至少为两个;发送模块,用于向覆盖率服务端发送至少两个执行数据,以使覆盖率服务器根据至少两个执行数据获取每个文件当前的覆盖率;其中,每个执行数据包括正在执行文件的启动路径、游戏服务器地址和文件的数据。可选的,装置还包括:存储模块,用于将每个文件的执行数据进行存储;执行数据包括文件的文件名称和文件被执行的代码行号。可选的,存储模块具体用于:根据文件的文件名称,检测本地是否存在与文件对应的程序执行数据;若存在,则在本地不存在文件被执行的代码行号时,将文件被执行的代码行号存储在程序执行数据中;否则,在本地增加以文件名称为索引的文件对应的程序执行数据。本专利技术第五方面提供一种服务器,包括:存储有程序指令的存储器、接收器和用于控制程序指令执行的处理器;接收器用于接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和文件的数据;处理器用于:根据每个执行数据中的启动路径和服务器地址,获取执行数据对应的文件的程序执行数据;解析获取每个执行数据对应的文件的源代码文件的总代码行数;根据每个文件对应的程序执行数据和总代码行数,计算获取每个文件当前的覆盖率。本专利技术第六方面提供一种服务器,包括:存储有程序指令的存储器、用于控制程序指令执行的处理器和发送器;处理器用于在执行多个文件的程序代码的过程中,通过多个进程分别调用数据收集函数实时获取文件的执行数据,执行数据至少为两个;发送器用于向覆盖率服务端发送至少两个执行数据,以使覆盖率服务器根据至少两个执行数据获取每个文件当前的覆盖率;其中,每个执行数据包括正在执行文件的启动路径、游戏服务器地址和文件的数据。本专利技术实施例提供的覆盖率检测方法、装置和设备,覆盖率检测端接收服务器发送的多个执行数据,并根据每个执行数据中的启动路径和服务器地址,获取执行数据对应的文件的程序执行数据,然后对文件的源代码文件解析获取总代码行号,计算得到覆盖率,该过程中采用的程序执行数据综合了多路径执行结果,获取到的文件的覆盖率能够真实的反应该文件的代码总体的执行情况。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面本文档来自技高网...
覆盖率检测方法、装置和设备

【技术保护点】
一种覆盖率检测方法,其特征在于,包括:接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和所述文件的数据;根据每个所述执行数据中的启动路径和服务器地址,获取所述执行数据对应的文件的程序执行数据;解析获取每个执行数据对应的文件的源代码文件的总代码行数;根据每个文件对应的所述程序执行数据和总代码行数,计算获取每个文件当前的覆盖率。

【技术特征摘要】
1.一种覆盖率检测方法,其特征在于,包括:接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和所述文件的数据;根据每个所述执行数据中的启动路径和服务器地址,获取所述执行数据对应的文件的程序执行数据;解析获取每个执行数据对应的文件的源代码文件的总代码行数;根据每个文件对应的所述程序执行数据和总代码行数,计算获取每个文件当前的覆盖率。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述服务器上执行的每个文件当前的覆盖率进行显示。3.根据权利要求1或2所述的方法,其特征在于,所述根据每个所述执行数据中的启动路径和服务器地址,获取所述执行数据对应的文件的程序执行数据,包括:根据每个执行数据中的启动路径和服务器地址,将启动路径和服务器地址均相同的执行数据中的文件的数据进行合并,得到所述文件对应的程序执行数据;其中,每个文件的程序执行数据包括所述文件被执行的代码行号。4.根据权利要求3所述的方法,其特征在于,所述根据每个文件对应的所述程序执行数据和总代码行数,计算获取每个文件当前的覆盖率,包括:根据每个文件被执行的代码行号,获取所述文件中已执行代码的行数Le;根据所述文件的所述已执行代码的行数Le和所述文件的总代码行数Lt,采用R=Le/Lt计算得到所述文件当前的覆盖率R。5.根据权利要求1或2所述的方法,其特征在于,所述解析获取每个执行数据对应的文件的源代码文件的总代码行数,包括:对每个文件对应的源代码文件进行解析处理,剔除所述源代码文件中的空白行和注释行,得到每个文件的源代码文件的总代码行数。6.一种覆盖率检测方法,其特征在于,包括:在执行多个文件的程序代码的过程中,通过多个进程分别调用数据收集函数实时获取文件的执行数据,所述执行数据至少为两个;向覆盖率服务端发送至少两个执行数据,以使所述覆盖率服务器根据所述至少两个执行数据获取每个文件当前的覆盖率;其中,每个执行数据包括正在执行文件的启动路径、游戏服务器地址和所述文件的数据。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:将每个文件的执行数据进行存储;所述执行数据包括所述文件的文件名称和所述文件被执行的代码行号。8.根据权利要求7所述的方法,其特征在于,所述将每个文件的程序执行数据进行存储,包括:根据所述文件的文件名称,检测本地是否存在与所述文件对应的程序执行数据;若存在,则在本地不存在所述文件被执行的代码行号时,将所述文件被执行的代码行号存储在所述程序执行数据中;否则,在本地增加以所述文件名称为索引的所述文件对应的所述程序执行数据。9.一种覆盖率检测装置,其特征在于,包括:接收模块,用于接收服务器发送的至少两个执行数据;每个执行数据包括正在执行文件的启动路径、服务器地址和所述文件的数据;处理模块,用于根据每个所述执行数据中的启动路径和服务器地址,获取所述执行数据对应的文件的程序执行数据;所述处理模块还用于解析获取每个执行数据对应的文件的源代码文件的总代码行数;所述处理模块还用于根据每个文件对应的所述程序执行数据和总代码行数,计算获...

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

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

1