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

技术编号:15541598 阅读:286 留言:0更新日期:2017-06-05 10:55
本发明专利技术实施例提供一种覆盖率检测的启动方法、装置和启动设备,该方法包括:当获取到覆盖率检测启动指令时,根据覆盖率检测启动指令中的待检测文件和待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在待检测文件的待检测版本号码对应的数据;若不存在,则根据差异获取函数将文件目录数据中待检测文件的当前目录数据更新为待检测版本号码对应的新的目录数据,得到新的文件目录数据;将新的文件目录数据发送至覆盖率服务器。采用该方法,可避免在代码量较大的时候每次进行覆盖率检测都需要重新读取完整的目录并生成对应数据结构,有效缩短启动时间,降低性能消耗。

Starting method, device and starting device for coverage detection

The embodiment of the invention provides a device and a starting device coverage detect the start method, the method includes: when access to the coverage testing start command, according to the coverage detection start detected in the instruction and file version number detected file to be detected, if a file exists to detect corresponding test version the number of detected data stored locally in the data file directory; if not, according to the different access function will be detected file directory data in the current directory data update for the detected version number corresponding to the new directory data file directory data; file directory data to send new coverage server. Using this method, it can be avoided that when the code is large, every time the coverage detection needs to be re read the entire directory and generate the corresponding data structure, it can effectively shorten the startup time and reduce performance consumption.

【技术实现步骤摘要】
覆盖率检测的启动方法、装置和启动设备
本专利技术涉及计算机
,尤其涉及一种覆盖率检测的启动方法、装置和启动设备。
技术介绍
代码覆盖率测试,是软件测试过程中最重要的测试方法和测试效果衡量标准之一,覆盖率指的是源代码执行过程中被测试所覆盖到代码的比例和程度,通常用百分比表示。对不同的编程语言来说,都有相应的检测代码覆盖率的方法。在针对游戏服务器的python代码覆盖率检测的过程中,通常使用的技术方案是利用python自带的sys.settrace函数进行数据收集和处理,在停止采集之后,一次性地导出覆盖率数据报告。由于代码覆盖率检测的实时性要求,随着游戏规模的增大和项目的发展,需要测试的代码量越来越高,如何更好地维护和存储覆盖率测试中获取的覆盖率数据成为了必须解决的问题。一般来说,覆盖率数据,包括了文件覆盖率数据和目录覆盖率数据,每个文件的已执行过的代码行号集合,该文件总的可执行代码行号集合等等,而每当有新的覆盖率数据到来,比如某个文件的一些代码被执行,那么就需要重新计算当前文件、当前文件所在的目录甚至于总体的覆盖率数据。目前一种具体的获取覆盖率数据的方式是利用python的sys模块中提供settrace函数,跟踪代码的执行情况,将覆盖率数据存储到Collector中的Stack中。每当开始采集时,Collector不断执行入栈操作,停止采集时,通过出栈操作即可获取已采集的覆盖率数据。然而,每次启动覆盖率检测,都需要读取所有代码的目录结构,并且需要解析每个文件的可执行代码行总数,因此当项目规模和代码量较大时,启动这一步骤会带来极大的性能和时间消耗,而代码又在不断地迭代开发中,启动操作十分频繁。
技术实现思路
本专利技术实施例提供一种覆盖率检测的启动方法、装置和启动设备,用于解决每次启动覆盖率检测,都需要读取所有代码的目录结构,并且需要解析每个文件的可执行代码行总数,因此当项目规模和代码量较大时,启动这一步骤会带来极大的性能和时间消耗的问题。本专利技术第一方面提供一种覆盖率检测的启动方法,包括:当获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据;若不存在,则根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据;将所述新的文件目录数据发送至覆盖率服务器。可选的,所述方法还包括:若存在,则将所述文件目录数据发送至所述覆盖率服务器。可选的,所述方法还包括:所述文件目录数据用于由覆盖率服务器计算得到所述待检测文件的代码覆盖率。可选的,所述根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据之前,所述方法包括:当本地不存在文件目录数据时,根据每个文件的文件名称和目录信息生成树形存储结构的所述文件目录数据;其中,所述树形存储结构的根节点下包括至少一层以目录信息以及文件名称逐层建立的子节点;每个节点的目录数据包括其下层子节点的目录数据的集合。可选的,所述根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据,包括:获取所述待检测文件的最新一次更新的版本号码对应的目录数据;根据所述待检测版本号码和所述文件目录数据中所述待检测文件的最新一次更新的版本号码,采用所述差异获取函数,获取所述待检测文件发生的变化;若所述变化为修改和或添加,对所述发生变化的代码进行代码解析,得到所述新的目录数据;若所述变化为删除,则直接删除所述待检测文件当前目录数据中被删除的部分,得到所述新的目录数据。本专利技术第二方面提供一种覆盖率检测的启动装置,包括:获取模块,用于获取到覆盖率检测启动指令;处理模块,用于当所述获取模块获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据;若不存在,则所述处理模块还用于根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据;发送模块,用于将所述新的文件目录数据发送至覆盖率服务器。可选的,所述发送模块还用于在文件目录数据中存在所述待检测文件的所述待检测版本号码对应的数据时,将所述文件目录数据发送至所述覆盖率服务器。可选的,所述处理模块获取的所述文件目录数据用于由覆盖率服务器计算得到所述待检测文件的代码覆盖率。可选的,所述处理模块还用于:当本地不存在文件目录数据时,根据每个文件的文件名称和目录信息生成树形存储结构的所述文件目录数据;其中,所述树形存储结构的根节点下包括至少一层以目录信息以及文件名称逐层建立的子节点;每个节点的目录数据包括其下层子节点的目录数据的集合。可选的,所述处理模块具体用于:获取所述待检测文件的最新一次更新的版本号码对应的目录数据;根据所述待检测版本号码和所述文件目录数据中所述待检测文件的最新一次更新的版本号码,采用所述差异获取函数,获取所述待检测文件发生的变化;若所述变化为修改和或添加,对所述发生变化的代码进行代码解析,得到所述新的目录数据;若所述变化为删除,则直接删除所述待检测文件当前目录数据中被删除的部分,得到所述新的目录数据。本专利技术第三方面提供一种启动设备,包括:存储有程序指令的存储器、用于控制程序指令执行的处理器以及发送器;所述处理器用于:当获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据;若不存在,则根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据;所述发送器用于将所述新的文件目录数据发送至覆盖率服务器。本专利技术实施例提供的覆盖率检测的启动方法、装置和启动设备,当获取到覆盖率检测启动指令时,运行端的服务器根据覆盖率检测启动指令中的待检测文件和待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在待检测文件的待检测版本号码对应的数据,若不存在,则根据差异获取函数将文件目录数据中待检测文件的当前目录数据更新为待检测版本号码对应的新的目录数据,得到新的文件目录数据,将新的文件目录数据发送至覆盖率服务器采用该方法,可避免在代码量较大的时候每次进行覆盖率检测都需要重新读取完整的目录并生成对应数据结构,有效缩短启动时间,降低性能消耗。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。图1为本专利技术实施例提供的覆盖率检测的启动方法实施例一的流程图;图2为本专利技术实施例提供的覆盖率检测的启动方法实施本文档来自技高网
...
覆盖率检测的启动方法、装置和启动设备

【技术保护点】
一种覆盖率检测的启动方法,其特征在于,包括:当获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据;若不存在,则根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据;将所述新的文件目录数据发送至覆盖率服务器。

【技术特征摘要】
1.一种覆盖率检测的启动方法,其特征在于,包括:当获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据;若不存在,则根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据;将所述新的文件目录数据发送至覆盖率服务器。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若存在,则将所述文件目录数据发送至所述覆盖率服务器。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述文件目录数据用于由覆盖率服务器计算得到所述待检测文件的代码覆盖率。4.根据权利要求3所述的方法,其特征在于,所述根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据之前,所述方法包括:当本地不存在文件目录数据时,根据每个文件的文件名称和目录信息生成树形存储结构的所述文件目录数据;其中,所述树形存储结构的根节点下包括至少一层以目录信息以及文件名称逐层建立的子节点;每个节点的目录数据包括其下层子节点的目录数据的集合。5.根据权利要求4所述的方法,其特征在于,所述根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据,包括:获取所述待检测文件的最新一次更新的版本号码对应的目录数据;根据所述待检测版本号码和所述文件目录数据中所述待检测文件的最新一次更新的版本号码,采用所述差异获取函数,获取所述待检测文件发生的变化;若所述变化为修改和或添加,对所述发生变化的代码进行代码解析,得到所述新的目录数据;若所述变化为删除,则直接删除所述待检测文件当前目录数据中被删除的部分,得到所述新的目录数据。6.一种覆盖率检测的启动装置,其特征在于,包括:获取模块,用于获取到覆盖率检测启动指令;处理模块,用于当所述获取模块获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检...

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

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

1