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所述的方法,其特征在于,所述方法还包括:若存在,则将所述文件目录数据发送至所述覆盖率服务器。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述文件目录数据用于由覆盖率服务器计算得到所述待检测文件的代码覆盖率。4.根据权利要求3所述的方法,其特征在于,所述根据所述覆盖率检测启动指令中的待检测文件和所述待检测文件的待检测版本号码,检测本地存储的文件目录数据中是否存在所述待检测文件的所述待检测版本号码对应的数据之前,所述方法包括:当本地不存在文件目录数据时,根据每个文件的文件名称和目录信息生成树形存储结构的所述文件目录数据;其中,所述树形存储结构的根节点下包括至少一层以目录信息以及文件名称逐层建立的子节点;每个节点的目录数据包括其下层子节点的目录数据的集合。5.根据权利要求4所述的方法,其特征在于,所述根据差异获取函数将所述文件目录数据中所述待检测文件的当前目录数据更新为所述待检测版本号码对应的新的目录数据,得到新的文件目录数据,包括:获取所述待检测文件的最新一次更新的版本号码对应的目录数据;根据所述待检测版本号码和所述文件目录数据中所述待检测文件的最新一次更新的版本号码,采用所述差异获取函数,获取所述待检测文件发生的变化;若所述变化为修改和或添加,对所述发生变化的代码进行代码解析,得到所述新的目录数据;若所述变化为删除,则直接删除所述待检测文件当前目录数据中被删除的部分,得到所述新的目录数据。6.一种覆盖率检测的启动装置,其特征在于,包括:获取模块,用于获取到覆盖率检测启动指令;处理模块,用于当所述获取模块获取到覆盖率检测启动指令时,根据所述覆盖率检测启动指令中的待检测文件和所述待检...
【专利技术属性】
技术研发人员:衣建中,
申请(专利权)人:网易杭州网络有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。