CN106547698A - 覆盖率数据的处理方法、装置和服务器 - Google Patents
覆盖率数据的处理方法、装置和服务器 Download PDFInfo
- Publication number
- CN106547698A CN106547698A CN201611083738.4A CN201611083738A CN106547698A CN 106547698 A CN106547698 A CN 106547698A CN 201611083738 A CN201611083738 A CN 201611083738A CN 106547698 A CN106547698 A CN 106547698A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- code
- variance data
- version number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种覆盖率数据的处理方法、装置和服务器,该方法包括:接收差异数据获取请求;差异数据获取请求包括文件的第一版本号和第二版本号,根据差异数据获取请求,通过差异获取函数获取版本号为第一版本号的文件与版本号为第二版本号的文件的之间的差异数据,再将差异数据进行显示,该方案中第二版本号的文件是第一版本号的文件的更新版本。根据需要获取不同版本之间的差异数据,并进行显示,直观的提供两次测试之间的对比情况,提高测试结果的可读性和指导性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种覆盖率数据的处理方法、装置和服务器。
背景技术
代码覆盖率测试,是软件测试过程中最重要的测试方法和测试效果衡量标准之一,覆盖率指的是源代码执行过程中被测试所覆盖到代码的比例和程度,通常用百分比表示。
对不同的编程语言来说,都有相应的检测代码覆盖率的方法。在针对游戏服务器的python代码覆盖率检测的过程中,通常使用的技术方案是利用python自带的sys.settrace函数进行数据收集和处理,在停止采集之后,一次性地导出覆盖率数据报告。由于代码覆盖率检测的实时性要求,随着游戏规模的增大和项目的发展,需要测试的代码量越来越高,如何更好地维护和存储覆盖率测试中获取的覆盖率数据成为了必须解决的问题。一般来说,覆盖率数据,包括了文件覆盖率数据和目录覆盖率数据,每个文件的已执行过的代码行号集合,该文件总的可执行代码行号集合等等,而每当有新的覆盖率数据到来,比如某个文件的一些代码被执行,那么就需要重新计算当前文件、当前文件所在的目录甚至于总体的覆盖率数据。目前一种具体的获取覆盖率数据的方式是利用python的sys模块中提供settrace函数,跟踪代码的执行情况,将覆盖率数据存储到Collector中的Stack中。每当开始采集时,Collector不断执行入栈操作,停止采集时,通过出栈操作即可获取已采集的覆盖率数据。
然而,前端服务器每次获取覆盖率报告,都会生成完整的覆盖率测试报告。对于需要多次执行覆盖率测试的用户而言,往往只关心两次测试之间的结果对比情况,由于项目代码量一般都比较大,完整的报告缺乏可读性和指导性。
发明内容
本发明实施例提供一种覆盖率数据的处理方法、装置和服务器,用于解决对于需要多次执行覆盖率测试的用户而言,往往只关心两次测试之间的结果对比情况,由于项目代码量一般都比较大,完整的报告缺乏可读性和指导性的问题。
本发明第一方面提供一种覆盖率数据的处理方法,包括:
接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
将所述差异数据进行显示。
可选的,所述根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,包括:
根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;
其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码;所述差异数据包括所述变化数据。
可选的,所述差异数据还包括覆盖率;所述覆盖率为根据同一版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值。
可选的,获取所述覆盖率,包括:
根据所述已执行代码行号,获取所述文件的已执行代码行数;
根据所述文件对应的源代码获取总代码行数;
根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
可选的,所述根据所述文件对应的源代码获取总代码行数,包括:
剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
本发明第二方面提供一种覆盖率数据的处理装置,包括:
接收模块,用于接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
处理模块,用于根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
显示模块,用于将所述差异数据进行显示。
可选的,所述处理模块具体用于:
根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;
其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码;所述差异数据包括所述变化数据。
可选的,所述处理模块获取到的所述差异数据还包括覆盖率;所述覆盖率为根据同一版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值。
可选的,所述处理模块具体用于:
根据所述已执行代码行号,获取所述文件的已执行代码行数;
根据所述文件对应的源代码获取总代码行数;
根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
可选的,所述处理模块具体用于:
剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
本发明第三方面提供一种服务器,包括:存储有程序指令的存储器、接收器、用于控制程序指令执行的处理器和显示器;
所述接收器用于接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
所述处理器用于根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
所述显示器用于将所述差异数据进行显示。
本发明实施例提供的覆盖率数据的处理方法、装置和服务器,覆盖率检测端根据接收到的差异获取请求,获取请求中携带的第一版本号和第二版本号的文件之间的差异数据进行显示,相较于现有技术用户需要人为去对比两个版本的文件的差异,通过该方式可以直观的提高两个版本间的对比情况,直接对差异数据进行显示,也提高了测试结果的可读性和指导性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的覆盖率数据的处理方法实例一的流程图;
图2为本发明实施例提供的覆盖率数据的处理方法实例二的流程图;
图3a为本发明实施例提供的覆盖率数据的处理方法实现流程示意图;
图3b为本发明实施例提供的覆盖率数据的处理方法差异导出过程示意图;
图4为本发明实施例提供的覆盖率数据的处理装置实施例一的结构示意图;
图5为本发明实施例提供的服务器实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的覆盖率数据的处理方法实例一的流程图,如图1所示,该方案的执行主体为覆盖率服务器或者其他的用于获取覆盖率的设备,该覆盖率数据的处理方法的具体实现步骤为:
步骤S101,接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号。
在本实施例中,在文件程序代码的测试过程中,测试人员需要获取某些版本的文件之间的差异或者测试报告的过程时,通过前段的输入接口选择文件,并输入该文件的至少两个版本号,即上述的第一版本号和第二版本号。生成差异数据获取请求发送至该覆盖率服务器。
覆盖率服务器接收到的差异数据获取请求中至少包括两个版本号,如果测试人员需要同时获取多个版本的文件之间的差异数据时,也可以输入三个或者以上的版本号,对此本方案不做限制。
步骤S102,根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据。
在本步骤中,第一版本号和第二版本号分别是该文件的两个不同版本的标识,使得覆盖率服务器能够根据两个版本号找到不同的代码以及覆盖率等内容。
本方案提供的获取该差异数据的方法是采用差异获取函数(svn),即根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码。该差异数据包括变化数据。
例如:先使用svn diff Revision1:Revision2–summarize命令,获取该文件的两个版本之间代码的总变化,该变化包括哪些文件和目录发生了添加/删除/修改操作。对于发生了添加、删除操作的文件,直接存储到svn差异数据中,并加以标记。进一步地,对于发生了修改的文件,再使用svn diff来获取该文件在两个版本之间哪些行发生了修改等。
优选的,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本。
步骤S103,将所述差异数据进行显示。
将得到的差异数据进行显示或者推送,以使测试人员能够得到该文件的两个版本之间的差异。
该方案中,所述差异数据还可以包括覆盖率数据差异;所述覆盖率数据差异用于表示所述第一版本号的所述文件的覆盖率数据与所述第二版本号的所述文件的覆盖率数据之间的差异。
可选的,所述差异数据还可以包括覆盖率差异;所述覆盖率差异用于表示所述第一版本号的所述文件的覆盖率与所述第二版本号的所述文件的覆盖率之间的差异。
可选的,所述差异数据还包括可以代码执行差异;所述代码执行差异用于表示所述文件的所述第一版本号对应的代码的执行情况和所述文件的第二版本号对应的代码的执行情况之间的差异。
本实施例提供的覆盖率数据的处理方法,覆盖率检测端根据接收到的差异获取请求,获取请求中携带的第一版本号和第二版本号的文件之间的差异数据进行显示,相较于现有技术用户需要人为去对比两个版本的文件的差异,通过该方式可以直观的提高两个版本间的对比情况,直接对差异数据进行显示,也提高了测试结果的可读性和指导性。
图2为本发明实施例提供的覆盖率数据的处理方法实例二的流程图,如图2所示,在上述实施例的基础上,该差异数据还可以包括覆盖率,即包括该文件的两个版本的覆盖率,这里的覆盖率是根据每个版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值,具体的计算步骤如下:
步骤S201,根据所述已执行代码行号,获取所述文件的已执行代码行数。
在本步骤中,覆盖率服务器根据版本号查询到该文件在每个版本下的执行数据,其中包括文件已执行代码行号,则可将执行过的代码行数作为已经执行代码的行数之和,例如:获取到的已执行代码行号为50,则认为该文件的代码已经执行了50行,或者,数据显示某文件,第1,3-10,55行已经发生了执行事件,那么此时已执行代码行数的值应当为1+8+1=10行。根据该种方式得到某一版本的文件中已执行代码行数。
步骤S202,根据所述文件对应的源代码获取总代码行数。
在该方案中,根据文件的源代码获取总行数的一种具体方式为剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
具体的,覆盖率服务器从运行端接收到的数据中只有对该文件的执行的相关数据,并没有该文件的总代码行数,因此该覆盖率服务器需要对该文件的源代码文件进行解析,将其中注释行和空白行等无关程序实质的非代码行进行剔除,并统计得到该源代码文件的总代码行数。
步骤S203,根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
利用上述两个步骤获得的数据,在此处通过公式采用R=Le/Lt即可计算出当前文件的实时覆盖率R。其中,Le表示已执行代码的行数,Lt表示总代码行数。
本实施例提供的覆盖率数据的处理方法,在上述实施例的基础上,在差异数据中增加显示两个版本的文件的覆盖率,除了显示两个版本的文件的代码的变化,还可以直接提供出覆盖率,更直观的提供两次测试之间的对比情况,提高测试结果的可读性和指导性,有效提高用户体验。
在前述两个实施例的基础上,下面以覆盖率服务器为例,对本方案提出的覆盖率数据的处理方法进行详细说明。
本方案主要由覆盖率数据处理服务端(即覆盖率服务器)和覆盖率采集客户端(游戏服务器)组成。其中覆盖率数据处理服务端,主要功能是通过websocket接收和处理来自客户端的数据。客户端嵌入到待测试的游戏服务器脚本中,使用python的sys.settrace收集数据。本方案完整的采集流程,分为数据采集,数据发送,版本差异数据导出,覆盖率差异数据导出四步。首先通过sys.settrace采集每个待测试文件的被执行过的代码行号,并解析源码文件获取可执行代码行号数据。接下来,通过websocket将缓存中的数据发送到数据处理服务端。在执行了多次测试后,由于相同版本的覆盖率数据会不断刷新,服务端最后只会保留不同代码版本的测试结果。
前端指定两次覆盖率测试的文件的版本号,利用svn获取对应项目代码的两个不同版本之间的文件变化情况,利用上一步的结果以及两次覆盖率测试数据的变化导出覆盖率差异数据。
图3a为本发明实施例提供的覆盖率数据的处理方法实现流程示意图;如图3a所示,该过程主要分为数据采集及发送,前端指定需导出差异的代码版本,svn获取代码文件变化及最终的覆盖率差异数据导出等四步。
第一步、数据采集及发送
首先进行初始化,分为启动覆盖率数据处理服务端和嵌入覆盖率采集客户端到游戏服务器脚本中两个部分。覆盖率服务端基于Tornado构建,主要功能是通过websocket接收来自通过一定规则(见下文中的进程标识步骤)标识的客户端的数据,并定时将同一游戏服务器的数据合并和处理。在游戏服务器启动测试之前,首先启动覆盖率服务端,等待客户端连接和收集数据。
对于客户端,在游戏服务器中启动不同进程的脚本中,添加使用线程启动websocket连接的代码,具体如下:
ws=websocket.WebSocket("ws://websocket_address/")
thread_ws=threading.Thread(target=ws.run)
thread_ws.start()
该线程用于在每个游戏服务器进程启动websocket并连接到覆盖率服务器后,进行定时的数据发送。
嵌入游戏服务器的客户端,主要通过添加如下代码实现数据采集:
即利用python自带的sys.settrace方法,在游戏服务器脚本运行过程中,每当发生了代码执行事件(event),就会调用trace方法进行跟踪,其中frame表示python运行过程中的栈帧,event表示发生的事件(例如执行了某一行代码,或者调用了某个函数等)。使用frame.f_code.co_filename获取被执行的文件名称fliename,使用frame.f_lineno获取当前执行的代码行号,然后调用collect方法进行数据收集,该方法主要是使用了字典(python的一种内置数据结构,以键-值对格式存储数据)的形式,将数据以文件名为键,以被执行的代码行号集合为值的形式存储,举例如下:
其中root/directory1/.../file1表示被测试的代码文件的路径,set([lineno11,lineno12,lineno13...])表示一个集合,该集合中的元素有lineno11,lineno12,lineno13等等,每个元素表示file1中进行覆盖率测试时,被执行过的行号(lineno)。
每当间隔时间到时,就将采集到的数据,通过websocket发送至覆盖率服务端,即按照一定的时间间隔向覆盖率服务器发送采集到的数据。
第二步、前端指定不同代码版本
通过多次执行第一步骤,可以得到多次测试的结果。在覆盖率测试中,同一版本的代码覆盖率数据,一般是求并,即合并多次采集的同版本的覆盖率数据结果,而不同版本之间数据,由于很多文件发生了修改/添加/删除等操作,无法进行直接的合并,必须做差异处理。
每次测试之后,服务端维护一个测试版本号和测试结果对应的数据字典:
当前端需要选择显示差异数据时,首先在服务端传送过去的测试历史数据中,选择两个版本号,比如Revision1和Revision2,然后将这两个版本号发回至服务端
第三步、svn导出文件变化
图3b为本发明实施例提供的覆盖率数据的处理方法差异导出过程示意图,由于每两个版本之间的数据,除了覆盖率数据的差异之外,还会出现一些文件和目录的添加/修改/删除等,所以在导出覆盖率差异数据之前,首先要确认对应文件本身有没有发生变化,如图3b所示,首先使用svn diff Revision1:Revision2–summarize命令,获取两个版本之间代码的总变化,该变化包括哪些文件和目录发生了添加/删除/修改操作。对于发生了添加、删除操作的文件,直接存储到svn差异数据中,并加以标记。
对于发生了修改的文件,再使用svn diff来获取该文件在两个版本之间哪些行发生了修改,具体代码如下:
即通过正则来解析svn diff的结果,最终导出line_change_cur,即新版本中,哪些行是与旧版本的代码不同的,将该数据一共汇总到svn差异数据中。
第四步、获取覆盖率差异数据
如第一步中所示,覆盖率数据格式如下:
首先直接对比新旧版本的coverage_data,通过枚举扫描的方法,将存在于新版本coverage_data中,且与旧版本coverage_data数据不同的字段抽出,组成待筛选的临时数据集合,该集合以发生变化的文件名为键,以新旧版本行号集合中不同的行号且存在于新版本行号集合中的行号作为值。
接下来根据第3步骤的svn差异结果,在新版本的数据中进行文件名称的搜索,如果发生了删除,则从临时数据集合中删除该文件;如果发生了添加,则直接添加该文件对应的字段和覆盖率行号集合;如果发生了修改,则在该文件对应的行号集合中,首先删除存在line_change_pre中的行号,然后加入在line_change_cur中的行号。
通过以上过程,最终获取待差异数据。
本发明提供的覆盖率数据的处理方法,覆盖率服务器根据差异数据获取请求,通过差异获取函数获取版本号为第一版本号的文件与版本号为第二版本号的文件的之间的差异数据,再将差异数据进行显示,该方案中第二版本号的文件是第一版本号的文件的更新版本。根据需要获取不同版本之间的差异数据,并进行显示,直观的提供两次测试之间的对比情况,提高测试结果的可读性和指导性。
图4为本发明实施例提供的覆盖率数据的处理装置实施例一的结构示意图,如图4所示,本实施例提供的覆盖率数据的处理装置10包括:
接收模块11,用于接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
处理模块12,用于根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
显示模块13,用于将所述差异数据进行显示。
本实施例提供的覆盖率数据的处理装置,用于执行前述任一实施例提供的方法技术方案,其实现原理和技术效果类似,在此不再赘述。
在本发明覆盖率数据的处理装置的实施例二中,所述处理模块12具体用于:
根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;
其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码;所述差异数据包括所述变化数据。
可选的,所述处理模块12获取到的所述差异数据还包括覆盖率;所述覆盖率为根据同一版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值。
可选的,所述处理模块12具体用于:
根据所述已执行代码行号,获取所述文件的已执行代码行数;
根据所述文件对应的源代码获取总代码行数;
根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
可选的,所述处理模块12具体用于:
剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
本实施例提供的覆盖率数据的处理装置,用于执行前述任一实施例提供的方法技术方案,其实现原理和技术效果类似,在此不再赘述。
图5为本发明实施例提供的服务器实施例一的结构示意图,如图5所示,该服务器可以被具体实现为:存储有程序指令的存储器21、接收器22、用于控制程序指令执行的处理器23和显示器24;
所述接收器22用于接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
所述处理器23用于根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
所述显示器24用于将所述差异数据进行显示。
可选的,所述处理器23具体用于:
根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;
其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码;所述差异数据包括所述变化数据。
可选的,所述处理器23获取到的所述差异数据还包括覆盖率;所述覆盖率为根据同一版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值。
可选的,所述处理器23具体用于:
根据所述已执行代码行号,获取所述文件的已执行代码行数;
根据所述文件对应的源代码获取总代码行数;
根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
可选的,所述处理器23具体用于:
剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
本实施例提供的服务器,用于执行前述任一实施例提供的方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
在上述任一服务器的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetictape)、软盘(英文:floppy disk)、光盘(英文:optical disc)及其任意组合。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (11)
1.一种覆盖率数据的处理方法,其特征在于,包括:
接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
将所述差异数据进行显示。
2.根据权利要求1所述的方法,其特征在于,所述根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,包括:
根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;
其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码;所述差异数据包括所述变化数据。
3.根据权利要求1或2所述的方法,其特征在于,所述差异数据还包括覆盖率;所述覆盖率为根据同一版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值。
4.根据权利要求3所述的方法,其特征在于,获取所述覆盖率,包括:
根据所述已执行代码行号,获取所述文件的已执行代码行数;
根据所述文件对应的源代码获取总代码行数;
根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
5.根据权利要求4所述的方法,其特征在于,所述根据所述文件对应的源代码获取总代码行数,包括:
剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
6.一种覆盖率数据的处理装置,其特征在于,包括:
接收模块,用于接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
处理模块,用于根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
显示模块,用于将所述差异数据进行显示。
7.根据权利要求6所述的装置,其特征在于,所述处理模块具体用于:
根据所述第一版本号和所述第二版本号,采用差异获取函数获取所述文件两个版本之间的变化数据;
其中,所述变化数据为所述文件的两个版本之间发生变化的已执行代码和/或总代码;所述差异数据包括所述变化数据。
8.根据权利要求6或7所述的装置,其特征在于,所述处理模块获取到的所述差异数据还包括覆盖率;所述覆盖率为根据同一版本号下的所述文件的已执行代码行号和所述文件对应的源代码获取的覆盖率数值。
9.根据权利要求8所述的装置,其特征在于,所述处理模块具体用于:
根据所述已执行代码行号,获取所述文件的已执行代码行数;
根据所述文件对应的源代码获取总代码行数;
根据所述已执行代码行数Le和所述总代码行数Lt,采用R=Le/Lt计算得到所述文件的覆盖率R。
10.根据权利要求9所述的装置,其特征在于,所述处理模块具体用于:
剔除所述源代码中的空白行和注释行,得到所述文件对应的源代码的总代码行数。
11.一种服务器,其特征在于,包括:存储有程序指令的存储器、接收器、用于控制程序指令执行的处理器和显示器;
所述接收器用于接收差异数据获取请求;所述差异数据获取请求包括文件的第一版本号和第二版本号;
所述处理器用于根据所述差异数据获取请求,通过差异获取函数获取版本号为所述第一版本号的所述文件与版本号为所述第二版本号的所述文件的之间的差异数据,其中,所述第二版本号的所述文件是所述第一版本号的所述文件的更新版本;
所述显示器用于将所述差异数据进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611083738.4A CN106547698A (zh) | 2016-11-30 | 2016-11-30 | 覆盖率数据的处理方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611083738.4A CN106547698A (zh) | 2016-11-30 | 2016-11-30 | 覆盖率数据的处理方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106547698A true CN106547698A (zh) | 2017-03-29 |
Family
ID=58396020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611083738.4A Pending CN106547698A (zh) | 2016-11-30 | 2016-11-30 | 覆盖率数据的处理方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547698A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107957956A (zh) * | 2017-12-26 | 2018-04-24 | 广州品唯软件有限公司 | 软件差异覆盖率的测试方法、装置及可读存储介质 |
CN108519945A (zh) * | 2018-03-21 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法、装置及存储设备 |
CN108959059A (zh) * | 2017-05-19 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种测试方法以及测试平台 |
CN109426604A (zh) * | 2017-08-22 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 代码开发的监控方法及设备 |
CN110292775A (zh) * | 2019-07-01 | 2019-10-01 | 网易(杭州)网络有限公司 | 获取差异数据的方法及装置 |
CN110727602A (zh) * | 2019-10-23 | 2020-01-24 | 网易(杭州)网络有限公司 | 覆盖率数据的处理方法、装置及存储介质 |
CN110990265A (zh) * | 2019-11-12 | 2020-04-10 | 苏州洞察云信息技术有限公司 | 一种覆盖率确定方法、装置及存储介质 |
CN111104319A (zh) * | 2019-12-13 | 2020-05-05 | 北京同邦卓益科技有限公司 | 一种代码覆盖率测试方法、装置、电子设备及存储介质 |
CN112148590A (zh) * | 2020-08-27 | 2020-12-29 | 浙江大搜车融资租赁有限公司 | 一种代码覆盖率的确定方法、装置及设备 |
CN112306847A (zh) * | 2019-07-31 | 2021-02-02 | 深圳市腾讯计算机系统有限公司 | 覆盖率数据的生成方法、装置及系统 |
CN117349150A (zh) * | 2023-09-22 | 2024-01-05 | 乾升利信息技术(上海)有限公司 | 一种覆盖率数据处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
CN105988926A (zh) * | 2015-02-13 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
WO2016167760A1 (en) * | 2015-04-15 | 2016-10-20 | Hewlett Packard Enterprise Development Lp | Code coverage information |
-
2016
- 2016-11-30 CN CN201611083738.4A patent/CN106547698A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988926A (zh) * | 2015-02-13 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
WO2016167760A1 (en) * | 2015-04-15 | 2016-10-20 | Hewlett Packard Enterprise Development Lp | Code coverage information |
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959059A (zh) * | 2017-05-19 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种测试方法以及测试平台 |
CN109426604A (zh) * | 2017-08-22 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 代码开发的监控方法及设备 |
CN107957956A (zh) * | 2017-12-26 | 2018-04-24 | 广州品唯软件有限公司 | 软件差异覆盖率的测试方法、装置及可读存储介质 |
CN108519945A (zh) * | 2018-03-21 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法、装置及存储设备 |
CN110292775A (zh) * | 2019-07-01 | 2019-10-01 | 网易(杭州)网络有限公司 | 获取差异数据的方法及装置 |
CN112306847A (zh) * | 2019-07-31 | 2021-02-02 | 深圳市腾讯计算机系统有限公司 | 覆盖率数据的生成方法、装置及系统 |
CN112306847B (zh) * | 2019-07-31 | 2024-09-20 | 深圳市腾讯计算机系统有限公司 | 覆盖率数据的生成方法、装置及系统 |
CN110727602A (zh) * | 2019-10-23 | 2020-01-24 | 网易(杭州)网络有限公司 | 覆盖率数据的处理方法、装置及存储介质 |
CN110727602B (zh) * | 2019-10-23 | 2024-02-06 | 网易(杭州)网络有限公司 | 覆盖率数据的处理方法、装置及存储介质 |
CN110990265A (zh) * | 2019-11-12 | 2020-04-10 | 苏州洞察云信息技术有限公司 | 一种覆盖率确定方法、装置及存储介质 |
CN110990265B (zh) * | 2019-11-12 | 2023-10-03 | 苏州洞察云信息技术有限公司 | 一种覆盖率确定方法、装置及存储介质 |
CN111104319A (zh) * | 2019-12-13 | 2020-05-05 | 北京同邦卓益科技有限公司 | 一种代码覆盖率测试方法、装置、电子设备及存储介质 |
CN112148590A (zh) * | 2020-08-27 | 2020-12-29 | 浙江大搜车融资租赁有限公司 | 一种代码覆盖率的确定方法、装置及设备 |
CN117349150A (zh) * | 2023-09-22 | 2024-01-05 | 乾升利信息技术(上海)有限公司 | 一种覆盖率数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547698A (zh) | 覆盖率数据的处理方法、装置和服务器 | |
US20070169004A1 (en) | Automatic failure analysis of code development options | |
CN107423048B (zh) | 数据收集的方法、装置、介质和计算设备 | |
US20170132119A1 (en) | Method and device for retrieving test case based on code coverage | |
US8122292B2 (en) | Debugging of business flows deployed in production servers | |
US9704115B2 (en) | Automating workflow participation | |
US20120331449A1 (en) | Device, method and computer program product for evaluating a debugger script | |
CN107145437B (zh) | 一种java注解测试方法及装置 | |
US20110145793A1 (en) | Method and apparatus to semantically connect independent build and test processes | |
CN106682036A (zh) | 一种数据交换系统及其交换方法 | |
US20080276129A1 (en) | Software tracing | |
CN102012857A (zh) | 一种对Web页面进行自动化测试的装置及方法 | |
CN106502901A (zh) | 覆盖率检测方法、装置和设备 | |
CN111339118A (zh) | 基于Kubernetes的资源变更历史记录方法及装置 | |
CA2675692C (en) | Compiler-assisted program source code filter | |
CN109976888B (zh) | 一种数据扫描方法、装置、设备和存储介质 | |
CN111143434A (zh) | 数据智能核对方法、装置、设备及存储介质 | |
CN106407126B (zh) | 覆盖率数据的处理方法、装置和服务器 | |
CN106919374B (zh) | 一种脚本生成方法和装置 | |
US20150169292A1 (en) | Computer-readable recording medium storing program for managing scripts, script management device, and script management method | |
US20030142146A1 (en) | Method and system for displaying actions and historical content in an output view | |
CN106528411A (zh) | 覆盖率检测方法、装置和设备 | |
US8136101B2 (en) | Threshold search failure analysis | |
US20070168969A1 (en) | Module search failure analysis | |
US7770183B2 (en) | Indirect event stream correlation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170329 |
|
RJ01 | Rejection of invention patent application after publication |