多版本测试数据的处理方法和装置的制造方法

文档序号:10624701阅读:173来源:国知局
多版本测试数据的处理方法和装置的制造方法
【专利摘要】本发明公开一种多版本测试数据的处理方法,包括:获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖率;对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;获取当前版本的代码覆盖率;将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。本发明还公开一种多版本测试数据的处理装置。本发明实现了多个版本之间的测试数据的合并处理,不但便于查看,而且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率以及软件开发效率。
【专利说明】
多版本测试数据的处理方法和装置
技术领域
[0001] 本发明涉及网络技术领域,尤其涉及多版本测试数据的处理方法和装置。
【背景技术】
[0002] 随着智能终端的快速发展,应用于智能终端上的应用也越来越丰富。开发者要开 发一款应用时,需要对开发的源文件进行多次测试,测试成功后才能发布给用户使用。而每 一次测试后均将产生对应的测试文件,若需要了解该应用的测试过程,必须打开每个测试 文件进行查看,给开发者增加了不便,从而降低了应用的开发效率。

【发明内容】

[0003] 本发明实施例的主要目的在于提供一种多版本测试数据的处理方法和装置,旨在 提高了应用开发效率。
[0004] 为实现上述目的,本发明实施例提供了一种多版本测试数据的处理方法,包括W 下步骤:
[0005] 获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖率;
[0006] 对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差 异化处理,获得处理后的前一版本的代码覆盖率;
[0007] 获取当前版本的代码覆盖率;
[0008] 将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得 当前版本和前一版本的总代码覆盖率。
[0009] 此外,为实现上述目的,本发明实施例还提供了一种多版本测试数据的处理装置, 包括:
[0010] 版本差异化模块,用于获取当前版本与前一版本的差异化结果;
[0011] 代码覆盖率获取模块,用于获取前一版本的代码覆盖率,W及获取当前版本的代 码覆盖率;
[0012] 差异化处理模块,用于对所述当前版本与前一版本的差异化结果及所述前一版本 的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;
[0013] 合并模块,用于将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行 合并处理,获得当前版本和前一版本的总代码覆盖率。
[0014] 本发明实施例利用版本代码差异化处理和覆盖率测试处理,先根据两个版本之间 的代码差异化处理结果,对前一版本的代码覆盖率进行差异化处理,然后再将处理后的前 一版本的代码覆盖率与当前版本的代码覆盖率进行合并处理,获得两个版本的总的代码覆 盖率。因此,本发明实施例实现了两个版本之间的测试数据的合并处理,不但便于查看,而 且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率W及应用开发效率。
【附图说明】
[0015] 图1为本发明多版本测试数据的处理系统一示例的结构示意图;
[0016] 图2为本发明多版本测试数据的处理系统另一示例的结构示意图;
[0017] 图3为本发明图2中测试服务器的硬件架构示意图;
[0018] 图4为本发明多版本测试数据的处理装置第一实施例的功能模块示意图;
[0019] 图5为本发明两版本的源文件的差异化结果及代码行对应关系的示例图;
[0020] 图6为本发明多版本测试数据的处理装置中合并处理模块的功能模块示意图;
[0021] 图7为本发明多版本测试数据的处理装置第二实施例的功能模块示意图;
[0022] 图8为本发明多版本测试数据的处理方法第一实施例的流程示意图;
[0023] 图9为本发明多版本测试数据的处理方法对前一版本的代码覆盖率进行差异化 处理的细化流程示意图;
[0024] 图10为本发明多版本测试数据的处理方法对差异化处理后的前一版本的代码覆 盖率和当前版本的代码覆盖率进行合并处理的细化流程示意图;
[00巧]图11为本发明多版本测试数据的处理方法第二实施例的流程示意图。
[0026] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
【具体实施方式】
[0027] W下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此 处所描述的具体实施例仅仅用W解释本发明,并不用于限定本发明。
[0028] 本发明的核必思想为:本发明提供一种多版本测试数据的处理方案,该方案中,通 过将多版本测试数据进行整合,不但便于查看,而且还便于各版本在测试过程中的质量评 估,从而提高了版本测试效率W及软件开发效率。
[0029] 本发明中,版本测试数据主要包括代码覆盖率,当然还可包括其他的测试数据。另 夕b本发明实施例主要W手机的版本测试为例进行描述,当然还可W适用于其他终端的版 本测试,例如PC、平板电脑、掌上电脑、数码设备等智能电子设备。
[0030] 如图1所示,若开发者需要开发一款应用于手机上的应用app,则可W利用测试设 备200进行代码的编写,并在编写完代码后生成可在测试客户端100上运行的可执行文件, 并控制该可执行文件在测试客户端100上运行。该测试客户端100用于根据测试设备200 的控制运行开发者开发的应用app,并获得测试信息和测试日志。然后该测试客户端100将 该测试信息和测试日志发送至测试设备200, W供开发者查看。
[0031] 如图2所示,若开发者需要开发一款应用于手机上的应用app,则可W利用自己的 开发终端进行代码的编码,例如开发终端300a、开发终端30化、开发终端300c。在编写完代 码后,将编写好的代码上传至测试服务器400上,并提交测试请求。测试服务器400接收到 该测试请求后,将生成可在测试客户端100上运行的可执行文件,并控制该可执行文件在 测试客户端100上运行。该测试客户端100用于根据测试设备200的控制运行开发者开发 的应用app,并获得测试信息和测试日志。然后该测试客户端100将该测试信息和测试日志 发送至测试服务器400。测试服务器400将该测试信息和测试日志发送至开发端,W供开发 者查看。基于安全的考虑,该测试服务器400与开发终端将位于同一安全网络中,例如局域 网、虚拟专用网络等等。
[0032] 由于开发者在将开发的应用a卵发布之前,需要经过反复的测试,例如集成测试、 回归测试,并根据测试结果进行代码的修改,因此,开发者将通过版本号记录每次代码的修 改及测试。为了实现发布之前的多个版本的测试数据的整合,本发明提出了一种多版本测 试数据的处理装置,该处理装置可W独立设置,也可W设置在上述测试设备200或测试服 务器400中。
[0033] 如图3所示,W测试服务器400为例,该测试服务器可包括处理器101、存储器 102、通讯模块103、处理装置500、覆盖率测试装置600、代码管理装置700及数据总线104。 其中,数据总线104用于测试服务器400中的各组件之间的数据通信。该通讯模块103用于 测试服务器400与外部设备的通讯,该外部设备可包括终端、服务器等等。该通讯模块103 可包括一个或多个组件,例如有线通讯单元、无线通讯单元等等。存储器102用于存储测试 服务器400运行的操作系统W及用户交互数据等等。当然,若处理装置500、覆盖率测试装 置600、代码管理装置700为软件结构时,其也可存储在存储器102中,供处理器101调用。 该存储器102可包括内部存储器和外部存储器,例如记忆卡或外接存储卡等等。处理器101 作为测试服务器400的处理中必,用于数据处理、调动其他组件进行工作等等。例如,该处 理器101根据开发者的请求,调取存储器102上相应的程序进行执行,W实现开发者所请求 的代码测试等功能。
[0034] 可W理解的是,上述测试服务器400并不限定于上述组件,还可W根据具体的应 用增加其他组件,例如显示屏105、按键组件106、电源107等等。其中,按键组件106用于 接收用户输入的信息,并将其发送至处理器101进行处理;显示屏104用于接收处理器101 发送的信息,并将其W相应的形式展示给用户,例如显示屏的图像显示及扬声器的声音显 示等等。可W理解的是,该显示屏105也可用于接收用户输入的信息,例如触摸屏,则按键 组件106可包括测试服务器400上的物理按键和该触摸屏上的虚拟按键。电源用于对测试 服务器400的各组件的运行进行电源供应。
[0035] 如图4所示,上述多版本测试数据的处理装置包括:
[0036] 版本差异化模块110,用于获取当前版本与前一版本的差异化结果;
[0037] 代码覆盖率获取模块120,用于获取前一版本的代码覆盖率,W及获取当前版本的 代码覆盖率;
[0038] 差异化处理模块130,用于根据所述当前版本与前一版本的差异化结果对所述前 一版本的代码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率;
[0039] 合并处理模块140,用于将所述当前版本的代码覆盖率和所述前一版本的代码覆 盖率进行合并处理,获得当前版本和前一版本的总代码覆盖率。
[0040] 具体地,本发明实施例中,通过处理器101调用上述代码管理装置700进行版本的 差异化处理,并获得差异化结果,并将该差异化结果发送至版本差异化模块110。该代码管 理装置700主要用于管理各开发app的版本,同时该代码管理装置700可W使用svn diff 命令获得两个版本的差异,并生成差异化结果。例如,某款应用app的两个版本经过差异化 后的结果如下:
[0041] $svn diff -r2: Allies, txt
[0042] (1) Index:rules, txt //显不文件
[0043] 0)= = = = = = = = = = = = = = = = //分隔符
[0044] (3)---rules, txt (revision 2) //老版本用表不
[0045] (4)++甘ules. txt (revision 3) //新版本用"+ "表不
[0046] (5)@@-1, 4+1, 4@@ //老版本显示1~4行;新版本显示1~4行
[0047] (6) Be kind to others //两个版本都有
[0048] (7)-Freedom = Qiocolate Ice Cream //只有老版本有
[0049] (8)+Freedom = Responsibility //只有新版本有
[0050] 巧化veiything in moderation //两个版本都有
[0051] (10) Qiew with your mouth open //两个版本都有
[0052] 根据上述差异化结果可W得出两个版本(即revisions和revisions)之间的差 异。
[0053] 通过处理器101调用上述覆盖率测试装置600进行代码覆盖率的测试,并获得测 试版本的代码覆盖率,然后将其发送至代码覆盖率获取模块120。具体为:测试客户端100 上将安装覆盖率包,当测试客户端100上运行测试文件后,将生成.gcda文件,并将生成 的.gcda文件发送至测试服务器400。同时覆盖率测试装置600上将存储有.gcno文件。 当接收到测试客户端100返回的.gcda文件时,通过测试工具,例如gcovUcov,将.gcda文 件和.gcno文件结合在一起生成覆盖率文件。该覆盖率文件具体格式如下:
[0054] TN:<Test name〉表示测试用例名称,即通过geninfo中的一test-name选项来命 名的测试用例名称,默认为空;
[00巧]SF:〈File name〉表示带全路径的源代码文件名;
[005引 FN: <函数起始行号〉,< 函数名〉;
[0057] FNDA: <函数被执行的次数〉,< 函数名〉;
[0058] FNF:< 函数总数〉;
[0059] FNH:<函数总数中被执行到的个数〉;
[0060] DA: <代码行号〉,< 当前行被执行到的次数〉;
[0061] LF:〈counts〉代码有效行总数;
[006引 LH:〈counts〉代码有效行总数中被执行到的个数;
[0063] end_of_record -条"记录"结束符
[0064] 上述DA记录中,将记录源文件中所有代码被执行的情况。若源文件中某代码行未 被执行,则该代码行对应的DA记录中被执行到的次数为0。
[0065] 由于应用app的源文件可能不止一个,因此在覆盖率测试装置600进行覆盖率测 试时,将对每个源文件进行覆盖率测试,并生成覆盖率文件。然后再将该测试版本中所有的 覆盖率文件合并,生成该应用app的测试版本对应的覆盖率文件。本发明实施例中,该覆盖 率文件的后缀名为.info。W应用appl为例,该应用appl进行覆盖率测试后,最终获得的 覆盖率文件将为appl. in化文件。该appl. in化中包括应用appl中各源文件对应的代码 覆盖率。
[0066] 代码覆盖率获取模块120利用上述方式获得当前版本的代码覆盖率W及前一版 本的代码覆盖率。然后差异化处理模块130将根据差异化获取模块110所获取的当前版本 与前一版本的差异化结果,对所述前一版本的代码覆盖率进行差异化处理,W将前一版本 的代码覆盖率与当前版本的代码覆盖率进行匹配处理,获得处理后的前一版本的代码覆盖 率。最后,合并模块140将当前版本的代码覆盖率和前一版本的代码覆盖率进行合并处理, w获得包含当前版本代码覆盖率和前一版本的代码覆盖率的总代码覆盖率。
[0067] 本发明实施例利用版本代码差异化处理和覆盖率测试处理,先根据两个版本之间 的代码差异化处理结果,对前一版本的代码覆盖率进行差异化处理,然后再将处理后的前 一版本的代码覆盖率与当前版本的代码覆盖率进行合并处理,获得两个版本的总的代码覆 盖率。因此,本发明实施例实现了两个版本之间的测试数据的合并处理,不但便于查看,而 且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率W及软件开发效率。
[0068] 可W理解的是,上述实施例是W两个版本之间的测试数据的整合,但是本发明并 不限定版本的数量,可个、四个,甚至更多。而且,该版本可W任意选择。另外,本发明 实施例的测试数据的整合,既适用于全量的代码覆盖率整合,也适用于增量的代码覆盖率 整合。
[0069] 进一步地,上述差异化处理模块130用于:
[0070] 根据所述当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本 的代码行的对应关系;
[0071] 根据所述前一版本的代码行与当前版本的代码行的对应关系,对所述前一版本的 代码覆盖率的代码执行行号进行更新。
[0072] 具体地,上述处理器101调用代码管理装置700的差异化命令,W获得两个版本的 差异化结果,并将其发送给差异化处理模块130。该差异化处理模块130则根据当前版本 与前一版本的差异化结果,确定前一版本的代码行与当前版本的代码行的对应关系。W版 本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形成映射关系。
[0073] 按照上述方式,获得两个版本之间的所有源文件的代码行的对应关系后,再根据 该对应关系,对前一版本的代码覆盖率中各源文件对应的记录进行更新。具体为;W源文件 A为例,若前一版本的该源文件A对应的代码覆盖率的DA记录中,DA的代码行号存在前一 版本的代码行与当前版本的代码行的对应关系,则将该记录中DA的代码行号更新为存在 对应关系的当前版本的代码行。例如,W图5中的对应关系为例,该源文件A对应的代码覆 盖率中DA记录的更新将如下表1所示:
[0074] 表1.源文件A对应的代码覆盖率的DA记录更新前后对比
[00 巧]

阳076] 由上表可知,经过上述更新,获得的前一版本的源文件A对应的代码覆盖率的DA 记录与当前版本的源文件A对应的代码覆盖率的DA记录匹配,W便于后续的代码覆盖率的 合并时直接根据DA记录中的代码行号进行合并。
[0077] 根据上述方法,可W将前一版本的各源文件对应的代码覆盖率进行更新,获得处 理后的前一版本的代码覆盖率文件。
[007引进一步地,如图6所示,上述合并处理模块140包括:
[0079] 行号比较单元141,用于比较所述当前版本的代码覆盖率的代码执行行号与所述 前一版本的代码覆盖率的代码执行行号;
[0080] 更新单元142,用于根据所述当前版本的代码覆盖率的代码执行行号与所述前一 版本的代码覆盖率的代码执行行号的比较结果,对所述当前版本的代码覆盖率的代码执行 记录进行更新。
[0081] 获得处理后的前一版本的代码覆盖率文件后,行号比较单元141将比较当前版本 的代码覆盖率的DA记录和前一版本的代码覆盖率的DA记录,获得比较结果。更新单元142 则根据该比较结果,对所述当前版本的代码覆盖率的DA记录进行更新,例如两版本的代码 覆盖率的DA记录中代码执行次数的合并,当前版本的代码覆盖率的代码有效总行数被执 行到的次数,即LH记录。
[0082] 具体为,上述更新单元142用于:
[0083] 当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的 代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执 行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;
[0084] 待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码 执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆 盖率中。
[0085] 若两个版本的代码覆盖率的DA记录中代码行号一致,则将该两个版本的代码覆 盖率的DA记录中的代码执行次数之和,更新至当前版本的代码覆盖率的该DA记录中,即 DA ;<代码行号X前一版本当前行被执行到的次数+当前版本当前行被执行到的次数〉。 若前一版本的代码覆盖率的DA记录中的代码行号不存在当前版本的代码覆盖率的DA记录 中,则不做处理。
[0086] 经过上述方法将当前版本的代码覆盖率的所有DA记录均更新后,计算当前版本 的代码覆盖率的代码有效总行数被执行到的次数LH,并更新当前版本的代码覆盖率的LH 记录。
[0087] 进一步地,如图7所示,上述多版本测试数据的处理装置还包括:
[0088] 页面生成模块150,用于生成所述当前版本和前一版本的总代码覆盖率的页面。
[0089] 在对当前版本的代码覆盖率和前一版本的代码覆盖率进行合并后,生成合并后的 代码覆盖率的html页面。具体为;调用genhtml命令,将合并后的代码覆盖率文件生成 html页面,供开发者查看。
[0090] 对应地,基于上述处理装置,本发明还提出了一种多版本测试数据的处理方法。如 图8所示,该实施例中,多版本测试数据的处理方法可包括W下步骤:
[0091] 步骤S110、获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖 率;
[0092] 步骤S120、对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖 率进行差异化处理,获得处理后的前一版本的代码覆盖率;
[0093] 步骤S130、获取当前版本的代码覆盖率;
[0094] 步骤S140、将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并 处理,获得当前版本和前一版本的总代码覆盖率。
[0095] 具体为:通过处理器101调用上述代码管理装置700进行版本的差异化处理,并获 得差异化结果。该代码管理装置700主要用于管理各开发app的版本,同时该代码管理装 置700可W使用svn diff命令获得两个版本的差异,并生成差异化结果。
[0096] 通过处理器101调用上述覆盖率测试装置600进行代码覆盖率的测试,获得当前 版本的代码覆盖率和前一版本的代码覆盖率。具体为:测试客户端100上将安装覆盖率包, 当测试客户端100上运行测试文件后,将生成.gcda文件,并将生成的.gcda文件发送至测 试服务器400。同时覆盖率测试装置600上将存储有.gcno文件。当接收到测试客户端100 返回的.gcda文件时,通过测试工具,例如gcov、Icov,将.gcda文件和.gcno文件结合在 一起生成覆盖率文件。
[0097] 然后,根据步骤S110所获取的当前版本与前一版本的差异化结果,对所述前一版 本的代码覆盖率进行差异化处理,W将前一版本的代码覆盖率与当前版本的代码覆盖率进 行匹配处理,获得处理后的前一版本的代码覆盖率。最后,将当前版本的代码覆盖率和前一 版本的代码覆盖率进行合并处理,W获得包含当前版本代码覆盖率和前一版本的代码覆盖 率的总代码覆盖率。
[0098] 本发明实施例利用版本代码差异化处理和覆盖率测试处理,先根据两个版本之间 的代码差异化处理结果,对前一版本的代码覆盖率进行差异化处理,然后再将处理后的前 一版本的代码覆盖率与当前版本的代码覆盖率进行合并处理,获得两个版本的总的代码覆 盖率。因此,本发明实施例实现了两个版本之间的测试数据的合并处理,不但便于查看,而 且还便于各版本在测试过程中的质量评估,从而提高了版本测试效率W及软件开发效率。
[0099] 可W理解的是,上述实施例是W两个版本之间的测试数据的整合,但是本发明并 不限定版本的数量,可个、四个,甚至更多。而且,该版本可W任意选择。另外,本发明 实施例的测试数据的整合,既适用于全量的代码覆盖率整合,也适用于增量的代码覆盖率 整合。
[0100] 进一步地,如图9所示,上述步骤S130包括:
[0101] 步骤S131、根据所述当前版本与前一版本的差异化结果,确定前一版本的代码行 与当前版本的代码行的对应关系;
[0102] 步骤S132、根据所述前一版本的代码行与当前版本的代码行的对应关系,对所述 前一版本的代码覆盖率的代码执行行号进行更新。
[0103] 具体地,上述处理器101调用代码管理装置700的差异化命令,w获得两个版本的 差异化结果,然后根据当前版本与前一版本的差异化结果,确定前一版本的代码行与当前 版本的代码行的对应关系。W版本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 形成映射关系。
[0104] 按照上述方式,获得两个版本之间的所有源文件的代码行的对应关系后,再根据 该对应关系,对前一版本的代码覆盖率中各源文件对应的记录进行更新。具体为:W源文件 A为例,若前一版本的该源文件A对应的代码覆盖率的DA记录中,DA的代码行号存在前一 版本的代码行与当前版本的代码行的对应关系,则将该记录中DA的代码行号更新为存在 对应关系的当前版本的代码行。例如,W图5中的对应关系为例,该源文件A对应的代码覆 盖率中DA记录的更新将如上表1所示。由上表可知,经过上述更新,获得的前一版本的源 文件A对应的代码覆盖率的DA记录与当前版本的源文件A对应的代码覆盖率的DA记录匹 配,W便于后续的代码覆盖率的合并时直接根据DA记录中的代码行号进行合并。
[0105] 根据上述方法,可W将前一版本的各源文件对应的代码覆盖率进行更新,获得处 理后的前一版本的代码覆盖率文件。
[0106] 进一步地,如图10所示,上述步骤S140包括:
[0107] 步骤S141、比较所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代 码覆盖率的代码执行行号;
[010引步骤S142、根据所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代 码覆盖率的代码执行行号的比较结果,对所述当前版本的代码覆盖率的代码执行记录进行 更新。
[0109] 获得处理后的前一版本的代码覆盖率文件后,将比较当前版本的代码覆盖率的DA 记录和前一版本的代码覆盖率的DA记录,获得比较结果。然后根据该比较结果,对所述当 前版本的代码覆盖率的DA记录进行更新,例如两版本的代码覆盖率的DA记录中代码执行 次数的合并,当前版本的代码覆盖率的代码有效总行数被执行到的次数,即LH记录。
[0110] 上述步骤S142具体为:
[0111] 当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的 代码执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执 行到的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中;
[0112] 待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码 执行记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆 盖率中。
[0113] 具体地,若两个版本的代码覆盖率的DA记录中代码行号一致,则将该两个版本的 代码覆盖率的DA记录中的代码执行次数之和,更新至当前版本的代码覆盖率的该DA记录 中,即DA ;<代码行号X前一版本当前行被执行到的次数+当前版本当前行被执行到的次 数〉。若前一版本的代码覆盖率的DA记录中的代码行号不存在当前版本的代码覆盖率的 DA记录中,则不做处理。
[0114] 经过上述方法将当前版本的代码覆盖率的所有DA记录均更新后,计算当前版本 的代码覆盖率的代码有效总行数被执行到的次数LH,并更新当前版本的代码覆盖率的LH 下己〇
[0115] 进一步地,如图11所示,上述步骤S140之后还包括:
[0116] 步骤S150、生成所述当前版本和前一版本的总代码覆盖率的页面。
[0117] 在对当前版本的代码覆盖率和前一版本的代码覆盖率进行合并后,生成合并后的 代码覆盖率的html页面。具体为;调用genhtml命令,将合并后的代码覆盖率文件生成 html页面,供开发者查看。
[0118] W上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明 说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领 域,均同理包括在本发明的专利保护范围内。
【主权项】
1. 一种多版本测试数据的处理方法,其特征在于,所述多版本测试数据的处理方法包 括以下步骤: 获取当前版本与前一版本的差异化结果及获取前一版本的代码覆盖率; 对所述当前版本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化 处理,获得处理后的前一版本的代码覆盖率; 获取当前版本的代码覆盖率; 将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前 版本和前一版本的总代码覆盖率。2. 如权利要求1所述的多版本测试数据的处理方法,其特征在于,所述对所述当前版 本与前一版本的差异化结果及所述前一版本的代码覆盖率进行差异化处理,获得处理后的 前一版本的代码覆盖率包括: 根据所述当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本的代 码打的对应关系; 根据所述前一版本的代码行与当前版本的代码行的对应关系,对所述前一版本的代码 覆盖率的代码执行行号进行更新。3. 如权利要求1所述的多版本测试数据的处理方法,其特征在于,所述将所述当前版 本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前一版本的 总代码覆盖率包括: 比较所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代 码执行行号; 根据所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代 码执行行号的比较结果,对所述当前版本的代码覆盖率的代码执行记录进行更新。4. 如权利要求3所述的多版本测试数据的处理方法,其特征在于,所述根据所述当前 版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码执行行号的比较 结果,对所述当前版本的代码覆盖率的代码执行记录进行更新包括: 当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码 执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到 的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中; 待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行 记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率 中。5. 如权利要求1-4任一项所述的多版本测试数据的处理方法,其特征在于,所述将所 述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并处理,获得当前版本和前 一版本的总代码覆盖率之后还包括: 生成所述当前版本和前一版本的总代码覆盖率的页面。6. -种多版本测试数据的处理装置,其特征在于,所述多版本测试数据的处理装置包 括: 版本差异化模块,用于获取当前版本与前一版本的差异化结果; 代码覆盖率获取模块,用于获取前一版本的代码覆盖率,以及获取当前版本的代码覆 盖率; 差异化处理模块,用于对所述当前版本与前一版本的差异化结果及所述前一版本的代 码覆盖率进行差异化处理,获得处理后的前一版本的代码覆盖率; 合并模块,用于将所述当前版本的代码覆盖率和所述前一版本的代码覆盖率进行合并 处理,获得当前版本和前一版本的总代码覆盖率。7. 如权利要求6所述的多版本测试数据的处理装置,其特征在于,所述差异化处理模 块用于: 根据所述当前版本与前一版本的差异化结果,确定前一版本的代码行与当前版本的代 码打的对应关系; 根据所述前一版本的代码行与当前版本的代码行的对应关系,对所述前一版本的代码 覆盖率的代码执行行号进行更新。8. 如权利要求6所述的多版本测试数据的处理装置,其特征在于,所述合并处理模块 包括: 行号比较单元,用于比较所述当前版本的代码覆盖率的代码执行行号与所述前一版本 的代码覆盖率的代码执行行号; 更新单元,用于根据所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代 码覆盖率的代码执行行号的比较结果,对所述当前版本的代码覆盖率的代码执行记录进行 更新。9. 如权利要求8所述的多版本测试数据的处理装置,其特征在于,所述更新单元用于: 当所述当前版本的代码覆盖率的代码执行行号与所述前一版本的代码覆盖率的代码 执行行号一致时,将该代码执行行号对应的当前版本被执行到的次数与前一版本被执行到 的次数之和,更新至该代码执行行号对应的当前版本的代码执行记录中; 待所有的代码执行行号均比较结束,计算获得所述当前版本的代码覆盖率的代码执行 记录中当前版本的代码行被执行到的次数之和,并将其更新至所述当前版本的代码覆盖率 中。10. 如权利要求6-9任一项所述的多版本测试数据的处理装置,其特征在于,所述多版 本测试数据的处理装置还包括: 页面生成模块,用于生成所述当前版本和前一版本的总代码覆盖率的页面。
【文档编号】G06F11/36GK105988926SQ201510083374
【公开日】2016年10月5日
【申请日】2015年2月13日
【发明人】袁宜霞
【申请人】腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1