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

技术编号:14416538 阅读:88 留言:0更新日期:2017-01-12 09:32
本发明专利技术实施例提供一种覆盖率检测方法、装置和设备,该方法包括:实时接收服务器发送的程序执行数据;所述程序执行数据为所述服务器调用数据收集函数获取的所述服务器正在执行的文件的数据;解析获取所述文件对应的源代码文件的总代码行数;根据所述程序执行数据和所述总代码行数,计算获取所述文件当前的覆盖率,不需要额外增加命令,在测试过程中也不需要不断的停止和开始,通过实时接收服务器发送的文件数据,并对该文件数据进行分析处理,能够得到该服务器的实时覆盖率。

【技术实现步骤摘要】

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

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

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

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

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

1