CN105988926B - 多版本测试数据的处理方法和装置 - Google Patents

多版本测试数据的处理方法和装置 Download PDF

Info

Publication number
CN105988926B
CN105988926B CN201510083374.9A CN201510083374A CN105988926B CN 105988926 B CN105988926 B CN 105988926B CN 201510083374 A CN201510083374 A CN 201510083374A CN 105988926 B CN105988926 B CN 105988926B
Authority
CN
China
Prior art keywords
code
version
current version
coverage
code coverage
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.)
Active
Application number
CN201510083374.9A
Other languages
English (en)
Other versions
CN105988926A (zh
Inventor
袁宜霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201510083374.9A priority Critical patent/CN105988926B/zh
Publication of CN105988926A publication Critical patent/CN105988926A/zh
Application granted granted Critical
Publication of CN105988926B publication Critical patent/CN105988926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开一种多版本测试数据的处理方法,包括:获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖率;对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;获取当前版本的代码覆盖率;将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。本发明还公开一种多版本测试数据的处理装置。本发明实现了多个版本之间的测试数据的合并处理,不但便于查看,而且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率以及软件开发效率。

Description

多版本测试数据的处理方法和装置
技术领域
本发明涉及网络技术领域,尤其涉及多版本测试数据的处理方法和装置。
背景技术
随着智能终端的快速发展,应用于智能终端上的应用也越来越丰富。开发者要开发一款应用时,需要对开发的源文件进行多次测试,测试成功后才能发布给用户使用。而每一次测试后均将产生对应的测试文件,若需要了解该应用的测试过程,必须打开每个测试文件进行查看,给开发者增加了不便,从而降低了应用的开发效率。
发明内容
本发明实施例的主要目的在于提供一种多版本测试数据的处理方法和装置,旨在提高了应用开发效率。
为实现上述目的,本发明实施例提供了一种多版本测试数据的处理方法,包括以下步骤:
获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖率;
对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;
获取当前版本的代码覆盖率;
将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。
此外,为实现上述目的,本发明实施例还提供了一种多版本测试数据的处理装置,包括:
版本差异化模块,用于获取当前版本与前一版本的差异化结果;
代码覆盖率获取模块,用于获取前一版本的代码覆盖率,以及获取当前版本的代码覆盖率;
差异化处理模块,用于对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;
合并模块,用于将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。
本发明实施例利用版本代码差异化处理和覆盖率测试处理,先根据两个版本之间的代码差异化处理结果,对前一版本的代码覆盖率进行差异化处理,然后再将处理后的前一版本的代码覆盖率与当前版本的代码覆盖率进行合并处理,获得两个版本的总的代码覆盖率。因此,本发明实施例实现了两个版本之间的测试数据的合并处理,不但便于查看,而且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率以及应用开发效率。
附图说明
图1为本发明多版本测试数据的处理系统一示例的结构示意图;
图2为本发明多版本测试数据的处理系统另一示例的结构示意图;
图3为本发明图2中测试服务器的硬件架构示意图;
图4为本发明多版本测试数据的处理装置第一实施例的功能模块示意图;
图5为本发明两版本的源文件的差异化结果及代码行对应关系的示例图;
图6为本发明多版本测试数据的处理装置中合并处理模块的功能模块示意图;
图7为本发明多版本测试数据的处理装置第二实施例的功能模块示意图;
图8为本发明多版本测试数据的处理方法第一实施例的流程示意图;
图9为本发明多版本测试数据的处理方法对前一版本的代码覆盖率进行差异化处理的细化流程示意图;
图10为本发明多版本测试数据的处理方法对差异化处理后的前一版本的代码覆盖率和当前版本的代码覆盖率进行合并处理的细化流程示意图;
图11为本发明多版本测试数据的处理方法第二实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的核心思想为:本发明提供一种多版本测试数据的处理方案,该方案中,通过将多版本测试数据进行整合,不但便于查看,而且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率以及软件开发效率。
本发明中,版本测试数据主要包括代码覆盖率,当然还可包括其他的测试数据。另外,本发明实施例主要以手机的版本测试为例进行描述,当然还可以适用于其他终端的版本测试,例如PC、平板电脑、掌上电脑、数码设备等智能电子设备。
如图1所示,若开发者需要开发一款应用于手机上的应用app,则可以利用测试设备200进行代码的编写,并在编写完代码后生成可在测试客户端100上运行的可执行文件,并控制该可执行文件在测试客户端100上运行。该测试客户端100用于根据测试设备200的控制运行开发者开发的应用app,并获得测试信息和测试日志。然后该测试客户端100将该测试信息和测试日志发送至测试设备200,以供开发者查看。
如图2所示,若开发者需要开发一款应用于手机上的应用app,则可以利用自己的开发终端进行代码的编码,例如开发终端300a、开发终端300b、开发终端300c。在编写完代码后,将编写好的代码上传至测试服务器400上,并提交测试请求。测试服务器400接收到该测试请求后,将生成可在测试客户端100上运行的可执行文件,并控制该可执行文件在测试客户端100上运行。该测试客户端100用于根据测试设备200的控制运行开发者开发的应用app,并获得测试信息和测试日志。然后该测试客户端100将该测试信息和测试日志发送至测试服务器400。测试服务器400将该测试信息和测试日志发送至开发端,以供开发者查看。基于安全的考虑,该测试服务器400与开发终端将位于同一安全网络中,例如局域网、虚拟专用网络等等。
由于开发者在将开发的应用app发布之前,需要经过反复的测试,例如集成测试、回归测试,并根据测试结果进行代码的修改,因此,开发者将通过版本号记录每次代码的修改及测试。为了实现发布之前的多个版本的测试数据的整合,本发明提出了一种多版本测试数据的处理装置,该处理装置可以独立设置,也可以设置在上述测试设备200或测试服务器400中。
如图3所示,以测试服务器400为例,该测试服务器可包括处理器101、存储器102、通讯模块103、处理装置500、覆盖率测试装置600、代码管理装置700及数据总线104。其中,数据总线104用于测试服务器400中的各组件之间的数据通信。该通讯模块103用于测试服务器400与外部设备的通讯,该外部设备可包括终端、服务器等等。该通讯模块103可包括一个或多个组件,例如有线通讯单元、无线通讯单元等等。存储器102用于存储测试服务器400运行的操作系统以及用户交互数据等等。当然,若处理装置500、覆盖率测试装置600、代码管理装置700为软件结构时,其也可存储在存储器102中,供处理器101调用。该存储器102可包括内部存储器和外部存储器,例如记忆卡或外接存储卡等等。处理器101作为测试服务器400的处理中心,用于数据处理、调动其他组件进行工作等等。例如,该处理器101根据开发者的请求,调取存储器102上相应的程序进行执行,以实现开发者所请求的代码测试等功能。
可以理解的是,上述测试服务器400并不限定于上述组件,还可以根据具体的应用增加其他组件,例如显示屏105、按键组件106、电源107等等。其中,按键组件106用于接收用户输入的信息,并将其发送至处理器101进行处理;显示屏104用于接收处理器101发送的信息,并将其以相应的形式展示给用户,例如显示屏的图像显示及扬声器的声音显示等等。可以理解的是,该显示屏105也可用于接收用户输入的信息,例如触摸屏,则按键组件106可包括测试服务器400上的物理按键和该触摸屏上的虚拟按键。电源用于对测试服务器400的各组件的运行进行电源供应。
如图4所示,上述多版本测试数据的处理装置包括:
版本差异化模块110,用于获取当前版本与前一版本的差异化结果;
代码覆盖率获取模块120,用于获取前一版本的代码覆盖率,以及获取当前版本的代码覆盖率;
差异化处理模块130,用于根据所述当前版本与前一版本的差异化结果对所述前一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;
合并处理模块140,用于将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。
具体地,本发明实施例中,通过处理器101调用上述代码管理装置700进行版本的差异化处理,并获得差异化结果,并将该差异化结果发送至版本差异化模块110。该代码管理装置700主要用于管理各开发app的版本,同时该代码管理装置700可以使用svn diff命令获得两个版本的差异,并生成差异化结果。例如,某款应用app的两个版本经过差异化后的结果如下:
$svn diff -r2:3rules.txt
(1)Index:rules.txt //显示文件
(2)============================== //分隔符
(3)---rules.txt(revision 2) //老版本用“-”表示
(4)+++rules.txt(revision 3) //新版本用“+”表示
(5)@@-1,4+1,4@@ //老版本显示1~4行;新版本显示1~4行
(6)Be kind to others //两个版本都有
(7)-Freedom=Chocolate Ice Cream //只有老版本有
(8)+Freedom=Responsibility //只有新版本有
(9)Everything in moderation //两个版本都有
(10)Chew with your mouth open //两个版本都有
根据上述差异化结果可以得出两个版本(即revision2和revision3)之间的差异。
通过处理器101调用上述覆盖率测试装置600进行代码覆盖率的测试,并获得测试版本的代码覆盖率,然后将其发送至代码覆盖率获取模块120。具体为:测试客户端100上将安装覆盖率包,当测试客户端100上运行测试文件后,将生成.gcda文件,并将生成的.gcda文件发送至测试服务器400。同时覆盖率测试装置600上将存储有.gcno文件。当接收到测试客户端100返回的.gcda文件时,通过测试工具,例如gcov、lcov,将.gcda文件和.gcno文件结合在一起生成覆盖率文件。该覆盖率文件具体格式如下:
TN:<Test name>表示测试用例名称,即通过geninfo中的--test-name选项来命名的测试用例名称,默认为空;
SF:<File name>表示带全路径的源代码文件名;
FN:<函数起始行号>,<函数名>;
FNDA:<函数被执行的次数>,<函数名>;
FNF:<函数总数>;
FNH:<函数总数中被执行到的个数>;
DA:<代码行号>,<当前行被执行到的次数>;
LF:<counts>代码有效行总数;
LH:<counts>代码有效行总数中被执行到的个数;
end_of_record一条“记录”结束符
上述DA记录中,将记录源文件中所有代码被执行的情况。若源文件中某代码行未被执行,则该代码行对应的DA记录中被执行到的次数为0。
由于应用app的源文件可能不止一个,因此在覆盖率测试装置600进行覆盖率测试时,将对每个源文件进行覆盖率测试,并生成覆盖率文件。然后再将该测试版本中所有的覆盖率文件合并,生成该应用app的测试版本对应的覆盖率文件。本发明实施例中,该覆盖率文件的后缀名为.info。以应用app1为例,该应用app1进行覆盖率测试后,最终获得的覆盖率文件将为app1.info文件。该app1.info中包括应用app1中各源文件对应的代码覆盖率。
代码覆盖率获取模块120利用上述方式获得当前版本的代码覆盖率以及前一版本的代码覆盖率。然后差异化处理模块130将根据差异化获取模块110所获取的当前版本与前一版本的差异化结果,对所述前一版本的代码覆盖率进行差异化处理,以将前一版本的代码覆盖率与当前版本的代码覆盖率进行匹配处理,获得处理后的前一版本的代码覆盖率。最后,合并模块140将当前版本的代码覆盖率和前一版本的代码覆盖率进行合并处理,以获得包含当前版本代码覆盖率和前一版本的代码覆盖率的总代码覆盖率。
本发明实施例利用版本代码差异化处理和覆盖率测试处理,先根据两个版本之间的代码差异化处理结果,对前一版本的代码覆盖率进行差异化处理,然后再将处理后的前一版本的代码覆盖率与当前版本的代码覆盖率进行合并处理,获得两个版本的总的代码覆盖率。因此,本发明实施例实现了两个版本之间的测试数据的合并处理,不但便于查看,而且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率以及软件开发效率。
可以理解的是,上述实施例是以两个版本之间的测试数据的整合,但是本发明并不限定版本的数量,可以三个、四个,甚至更多。而且,该版本可以任意选择。另外,本发明实施例的测试数据的整合,既适用于全量的代码覆盖率整合,也适用于增量的代码覆盖率整合。
进一步地,上述差异化处理模块130用于:
根据所述当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系;
根据所述前一版本的代码行与当前版本的代码行的对应关系,对所述前一版本的代码覆盖率的代码执行行号进行更新。
具体地,上述处理器101调用代码管理装置700的差异化命令,以获得两个版本的差异化结果,并将其发送给差异化处理模块130。该差异化处理模块130则根据当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系。以版本2的源文件A和版本3的源文件A为例,如图5所示,由版本2和版本3的差异化结果可知,该版本3的源文件A在版本2的源文件A的基础上增加了4行代码,即版本3源文件A中的第8行-第11行。因此,版本2的源文件A的代码行与版本3的源文件A的代码行的映射关系如图5所示的箭头所示。即版本2的源文件A的代码行的行号1-行号7与版本3的源文件A的代码行的行号1-7形成映射关系,版本2的源文件A的代码行的行号8-行号13与版本3的源文件A的代码行的行号12-行号17形成映射关系。
按照上述方式,获得两个版本之间的所有源文件的代码行的对应关系后,再根据该对应关系,对前一版本的代码覆盖率中各源文件对应的记录进行更新。具体为:以源文件A为例,若前一版本的该源文件A对应的代码覆盖率的DA记录中,DA的代码行号存在前一版本的代码行与当前版本的代码行的对应关系,则将该记录中DA的代码行号更新为存在对应关系的当前版本的代码行。例如,以图5中的对应关系为例,该源文件A对应的代码覆盖率中DA记录的更新将如下表1所示:
表1.源文件A对应的代码覆盖率的DA记录更新前后对比
更新前 更新后
DA:<1><5> DA:<1><5>
DA:<7><3> DA:<7><3>
DA:<8><0> DA:<12><0>
DA:<13><1> DA:<17><1>
由上表可知,经过上述更新,获得的前一版本的源文件A对应的代码覆盖率的DA记录与当前版本的源文件A对应的代码覆盖率的DA记录匹配,以便于后续的代码覆盖率的合并时直接根据DA记录中的代码行号进行合并。
根据上述方法,可以将前一版本的各源文件对应的代码覆盖率进行更新,获得处理后的前一版本的代码覆盖率文件。
进一步地,如图6所示,上述合并处理模块140包括:
行号比较单元141,用于比较所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号;
更新单元142,用于根据所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号的比较结果,对所述当前版本的代码覆盖率的代码执行记录进行更新。
获得处理后的前一版本的代码覆盖率文件后,行号比较单元141将比较当前版本的代码覆盖率的DA记录和前一版本的代码覆盖率的DA记录,获得比较结果。更新单元142则根据该比较结果,对所述当前版本的代码覆盖率的DA记录进行更新,例如两版本的代码覆盖率的DA记录中代码执行次数的合并,当前版本的代码覆盖率的代码有效总行数被执行到的次数,即LH记录。
具体为,上述更新单元142用于:
当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;
待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率中。
若两个版本的代码覆盖率的DA记录中代码行号一致,则将该两个版本的代码覆盖率的DA记录中的代码执行次数之和,更新至当前版本的代码覆盖率的该DA记录中,即DA:<代码行号><前一版本当前行被执行到的次数+当前版本当前行被执行到的次数>。若前一版本的代码覆盖率的DA记录中的代码行号不存在当前版本的代码覆盖率的DA记录中,则不做处理。
经过上述方法将当前版本的代码覆盖率的所有DA记录均更新后,计算当前版本的代码覆盖率的代码有效总行数被执行到的次数LH,并更新当前版本的代码覆盖率的LH记录。
进一步地,如图7所示,上述多版本测试数据的处理装置还包括:
页面生成模块150,用于生成所述当前版本和前一版本的总代码覆盖率的页面。
在对当前版本的代码覆盖率和前一版本的代码覆盖率进行合并后,生成合并后的代码覆盖率的html页面。具体为:调用genhtml命令,将合并后的代码覆盖率文件生成html页面,供开发者查看。
对应地,基于上述处理装置,本发明还提出了一种多版本测试数据的处理方法。如图8所示,该实施例中,多版本测试数据的处理方法可包括以下步骤:
步骤S110、获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖率;
步骤S120、对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;
步骤S130、获取当前版本的代码覆盖率;
步骤S140、将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。
具体为:通过处理器101调用上述代码管理装置700进行版本的差异化处理,并获得差异化结果。该代码管理装置700主要用于管理各开发app的版本,同时该代码管理装置700可以使用svn diff命令获得两个版本的差异,并生成差异化结果。
通过处理器101调用上述覆盖率测试装置600进行代码覆盖率的测试,获得当前版本的代码覆盖率和前一版本的代码覆盖率。具体为:测试客户端100上将安装覆盖率包,当测试客户端100上运行测试文件后,将生成.gcda文件,并将生成的.gcda文件发送至测试服务器400。同时覆盖率测试装置600上将存储有.gcno文件。当接收到测试客户端100返回的.gcda文件时,通过测试工具,例如gcov、lcov,将.gcda文件和.gcno文件结合在一起生成覆盖率文件。
然后,根据步骤S110所获取的当前版本与前一版本的差异化结果,对所述前一版本的代码覆盖率进行差异化处理,以将前一版本的代码覆盖率与当前版本的代码覆盖率进行匹配处理,获得处理后的前一版本的代码覆盖率。最后,将当前版本的代码覆盖率和前一版本的代码覆盖率进行合并处理,以获得包含当前版本代码覆盖率和前一版本的代码覆盖率的总代码覆盖率。
本发明实施例利用版本代码差异化处理和覆盖率测试处理,先根据两个版本之间的代码差异化处理结果,对前一版本的代码覆盖率进行差异化处理,然后再将处理后的前一版本的代码覆盖率与当前版本的代码覆盖率进行合并处理,获得两个版本的总的代码覆盖率。因此,本发明实施例实现了两个版本之间的测试数据的合并处理,不但便于查看,而且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率以及软件开发效率。
可以理解的是,上述实施例是以两个版本之间的测试数据的整合,但是本发明并不限定版本的数量,可以三个、四个,甚至更多。而且,该版本可以任意选择。另外,本发明实施例的测试数据的整合,既适用于全量的代码覆盖率整合,也适用于增量的代码覆盖率整合。
进一步地,如图9所示,上述步骤S130包括:
步骤S131、根据所述当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系;
步骤S132、根据所述前一版本的代码行与当前版本的代码行的对应关系,对所述前一版本的代码覆盖率的代码执行行号进行更新。
具体地,上述处理器101调用代码管理装置700的差异化命令,以获得两个版本的差异化结果,然后根据当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系。以版本2的源文件A和版本3的源文件A为例,如图5所示,由版本2和版本3的差异化结果可知,该版本3的源文件A在版本2的源文件A的基础上增加了4行代码,即版本3源文件A中的第8行-第11行。因此,版本2的源文件A的代码行与版本3的源文件A的代码行的映射关系如图5所示的箭头所示。即版本2的源文件A的代码行的行号1-行号7与版本3的源文件A的代码行的行号1-7形成映射关系,版本2的源文件A的代码行的行号8-行号13与版本3的源文件A的代码行的行号12-行号17形成映射关系。
按照上述方式,获得两个版本之间的所有源文件的代码行的对应关系后,再根据该对应关系,对前一版本的代码覆盖率中各源文件对应的记录进行更新。具体为:以源文件A为例,若前一版本的该源文件A对应的代码覆盖率的DA记录中,DA的代码行号存在前一版本的代码行与当前版本的代码行的对应关系,则将该记录中DA的代码行号更新为存在对应关系的当前版本的代码行。例如,以图5中的对应关系为例,该源文件A对应的代码覆盖率中DA记录的更新将如上表1所示。由上表可知,经过上述更新,获得的前一版本的源文件A对应的代码覆盖率的DA记录与当前版本的源文件A对应的代码覆盖率的DA记录匹配,以便于后续的代码覆盖率的合并时直接根据DA记录中的代码行号进行合并。
根据上述方法,可以将前一版本的各源文件对应的代码覆盖率进行更新,获得处理后的前一版本的代码覆盖率文件。
进一步地,如图10所示,上述步骤S140包括:
步骤S141、比较所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号;
步骤S142、根据所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号的比较结果,对所述当前版本的代码覆盖率的代码执行记录进行更新。
获得处理后的前一版本的代码覆盖率文件后,将比较当前版本的代码覆盖率的DA记录和前一版本的代码覆盖率的DA记录,获得比较结果。然后根据该比较结果,对所述当前版本的代码覆盖率的DA记录进行更新,例如两版本的代码覆盖率的DA记录中代码执行次数的合并,当前版本的代码覆盖率的代码有效总行数被执行到的次数,即LH记录。
上述步骤S142具体为:
当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;
待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率中。
具体地,若两个版本的代码覆盖率的DA记录中代码行号一致,则将该两个版本的代码覆盖率的DA记录中的代码执行次数之和,更新至当前版本的代码覆盖率的该DA记录中,即DA:<代码行号><前一版本当前行被执行到的次数+当前版本当前行被执行到的次数>。若前一版本的代码覆盖率的DA记录中的代码行号不存在当前版本的代码覆盖率的DA记录中,则不做处理。
经过上述方法将当前版本的代码覆盖率的所有DA记录均更新后,计算当前版本的代码覆盖率的代码有效总行数被执行到的次数LH,并更新当前版本的代码覆盖率的LH记录。
进一步地,如图11所示,上述步骤S140之后还包括:
步骤S150、生成所述当前版本和前一版本的总代码覆盖率的页面。
在对当前版本的代码覆盖率和前一版本的代码覆盖率进行合并后,生成合并后的代码覆盖率的html页面。具体为:调用genhtml命令,将合并后的代码覆盖率文件生成html页面,供开发者查看。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (5)

1.一种多版本测试数据的处理方法,其特征在于,所述多版本测试数据的处理方法包括以下步骤:
获取当前版本与前一版本的代码之间的差异化结果及获取前一版本的代码覆盖率;
根据所述差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系;
根据所述对应关系,对所述前一版本的代码覆盖率的代码执行行号进行更新;
获取当前版本的代码覆盖率;
比较所述当前版本的代码覆盖率的代码执行行号与更新后的所述前一版本的代码覆盖率的代码执行行号;
当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;
待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率中。
2.如权利要求1所述的多版本测试数据的处理方法,还包括:
生成所述当前版本和前一版本的总代码覆盖率的页面。
3.一种多版本测试数据的处理装置,其特征在于,所述多版本测试数据的处理装置包括:
版本差异化模块,用于获取当前版本与前一版本的代码之间的差异化结果;
代码覆盖率获取模块,用于获取前一版本的代码覆盖率,以及获取当前版本的代码覆盖率;
差异化处理模块,用于根据所述差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系;根据所述对应关系,对所述前一版本的代码覆盖率的代码执行行号进行更新;
合并模块,用于比较所述当前版本的代码覆盖率的代码执行行号与更新后的所述前一版本的代码覆盖率的代码执行行号;当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率中。
4.如权利要求3所述的多版本测试数据的处理装置,其特征在于,所述合并模块包括:
行号比较单元,用于比较所述当前版本的代码覆盖率的代码执行行号与更新后的所述前一版本的代码覆盖率的代码执行行号;
更新单元,用于当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率中。
5.如权利要求3-4任一项所述的多版本测试数据的处理装置,其特征在于,所述多版本测试数据的处理装置还包括:
页面生成模块,用于生成所述当前版本和前一版本的总代码覆盖率的页面。
CN201510083374.9A 2015-02-13 2015-02-13 多版本测试数据的处理方法和装置 Active CN105988926B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510083374.9A CN105988926B (zh) 2015-02-13 2015-02-13 多版本测试数据的处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510083374.9A CN105988926B (zh) 2015-02-13 2015-02-13 多版本测试数据的处理方法和装置

Publications (2)

Publication Number Publication Date
CN105988926A CN105988926A (zh) 2016-10-05
CN105988926B true CN105988926B (zh) 2019-06-07

Family

ID=57042425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510083374.9A Active CN105988926B (zh) 2015-02-13 2015-02-13 多版本测试数据的处理方法和装置

Country Status (1)

Country Link
CN (1) CN105988926B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977309B (zh) * 2016-10-25 2021-02-12 腾讯科技(北京)有限公司 一种数据处理方法及其装置、系统
CN106547698A (zh) * 2016-11-30 2017-03-29 网易(杭州)网络有限公司 覆盖率数据的处理方法、装置和服务器
CN108959059B (zh) * 2017-05-19 2020-12-25 腾讯科技(深圳)有限公司 一种测试方法以及测试平台
CN107957956A (zh) * 2017-12-26 2018-04-24 广州品唯软件有限公司 软件差异覆盖率的测试方法、装置及可读存储介质
CN108519945A (zh) * 2018-03-21 2018-09-11 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备
CN110209568B (zh) * 2018-04-24 2022-07-01 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备
CN108829580B (zh) * 2018-05-07 2022-09-23 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质
CN108829593B (zh) * 2018-06-05 2023-12-05 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质
CN109002395B (zh) * 2018-07-06 2020-11-24 京东数字科技控股有限公司 一种代码覆盖率管理方法和装置
CN109542761B (zh) * 2018-10-11 2022-03-11 平安科技(深圳)有限公司 软件质量评估方法、装置及存储介质
CN110008124A (zh) * 2019-03-29 2019-07-12 深圳前海微众银行股份有限公司 一种信息处理方法及装置
CN110928776A (zh) * 2019-11-15 2020-03-27 武汉极意网络科技有限公司 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备
CN110928786B (zh) * 2019-11-20 2024-04-02 中国工商银行股份有限公司 针对财务程序的测试方法和装置
CN111444087B (zh) * 2020-03-03 2023-12-01 北京齐尔布莱特科技有限公司 一种覆盖率数据处理方法、装置、计算设备及可读存储介质
CN112463620A (zh) * 2020-12-03 2021-03-09 广州品唯软件有限公司 安卓软件集成测试中的覆盖率测试方法、装置
CN112597041B (zh) * 2020-12-28 2023-01-20 上海品顺信息科技有限公司 代码覆盖率的跨分支合并方法、系统、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236600A (zh) * 2010-05-06 2011-11-09 无锡中星微电子有限公司 获得代码覆盖率的方法及装置
CN102722436A (zh) * 2012-05-29 2012-10-10 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN103095518A (zh) * 2011-11-08 2013-05-08 阿里巴巴集团控股有限公司 覆盖率测试处理方法、装置、覆盖率测试服务器及系统
CN103246600A (zh) * 2012-02-10 2013-08-14 广州博纳信息技术有限公司 软件测评快速校验方法
US8578344B2 (en) * 2010-06-17 2013-11-05 Microsoft Corporation Incremental compositional dynamic test generation
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN103631707A (zh) * 2012-08-27 2014-03-12 腾讯科技(深圳)有限公司 一种获取代码覆盖率的方法及装置
CN104298587A (zh) * 2013-07-15 2015-01-21 腾讯科技(深圳)有限公司 一种代码覆盖测试方法、装置和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030093716A1 (en) * 2001-11-13 2003-05-15 International Business Machines Corporation Method and apparatus for collecting persistent coverage data across software versions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236600A (zh) * 2010-05-06 2011-11-09 无锡中星微电子有限公司 获得代码覆盖率的方法及装置
US8578344B2 (en) * 2010-06-17 2013-11-05 Microsoft Corporation Incremental compositional dynamic test generation
CN103095518A (zh) * 2011-11-08 2013-05-08 阿里巴巴集团控股有限公司 覆盖率测试处理方法、装置、覆盖率测试服务器及系统
CN103246600A (zh) * 2012-02-10 2013-08-14 广州博纳信息技术有限公司 软件测评快速校验方法
CN103425573A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码测试信息收集方法及系统
CN102722436A (zh) * 2012-05-29 2012-10-10 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN103631707A (zh) * 2012-08-27 2014-03-12 腾讯科技(深圳)有限公司 一种获取代码覆盖率的方法及装置
CN104298587A (zh) * 2013-07-15 2015-01-21 腾讯科技(深圳)有限公司 一种代码覆盖测试方法、装置和系统

Also Published As

Publication number Publication date
CN105988926A (zh) 2016-10-05

Similar Documents

Publication Publication Date Title
CN105988926B (zh) 多版本测试数据的处理方法和装置
CN104536899B (zh) 一种基于智能集群的软件部署及其维护方法
CN109496419B (zh) 文件处理方法、装置和系统
CN108959059B (zh) 一种测试方法以及测试平台
CN104503780A (zh) 一种提供应用渠道包的方法和装置
CN110830234B (zh) 一种用户流量分配方法及装置
CN109712000A (zh) 重复投保限制方法、装置、设备及可读存储介质
CN105608382A (zh) 软件维护方法与软件问题判定方法以及其相应的装置
CN105786636B (zh) 一种系统修复方法及装置
CN114036439A (zh) 网站搭建方法、装置、介质及电子设备
CN107807830A (zh) 基于集群的医疗软件更新方法及服务器
US8307245B2 (en) Scenario creating apparatus, scenario creating method, and storage medium storing scenario creating program
CN112363938A (zh) 数据处理方法、装置、电子设备和存储介质
CN107608893B (zh) 一种压力测试调度方法、装置、调度服务器及计算设备
CN110888658B (zh) 应用程序中功能模块的动态化方法、装置及存储介质
CN102025555B (zh) Ip多媒体子系统性能测试的方法
CN105553671B (zh) 一种数字证书的管理方法、装置及系统
CN111352836A (zh) 一种压力测试方法及相关装置
CN113204425B (zh) 供进程管理内部线程的方法、装置、电子设备及存储介质
CN113032224A (zh) 一种信息采集方法、装置、电子设备及可读存储介质
CN115695416A (zh) 基于云存储服务的文件下载方法、装置、介质及设备
CN114650211A (zh) 故障修复方法、装置、电子设备和计算机可读存储介质
CN111400623B (zh) 用于搜索信息的方法和装置
CN114489603A (zh) 代码生成方法、装置、电子设备、介质和产品
CN112637254B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant