CN113342635A - 差异代码覆盖率的获取、差异代码文件发送方法及装置 - Google Patents

差异代码覆盖率的获取、差异代码文件发送方法及装置 Download PDF

Info

Publication number
CN113342635A
CN113342635A CN202010136502.2A CN202010136502A CN113342635A CN 113342635 A CN113342635 A CN 113342635A CN 202010136502 A CN202010136502 A CN 202010136502A CN 113342635 A CN113342635 A CN 113342635A
Authority
CN
China
Prior art keywords
code
difference
file
target version
information
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
Application number
CN202010136502.2A
Other languages
English (en)
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 CN202010136502.2A priority Critical patent/CN113342635A/zh
Publication of CN113342635A publication Critical patent/CN113342635A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test 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)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种差异代码覆盖率的获取、差异代码文件发送方法及装置,属于计算机技术领域。本申请实施例通过目标版本代码的差异代码文件和插桩数据,根据所述差异代码文件和所述插桩数据,来获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异,进而确定差异代码覆盖率,直接在差异代码文件的基础上进行差异代码覆盖率获取步骤,而无需对全量的目标版本代码进行差异代码覆盖率获取步骤,能够得到更精准的结果,且可以有效提高获取效率。

Description

差异代码覆盖率的获取、差异代码文件发送方法及装置
技术领域
本申请涉及计算机技术领域,特别涉及一种差异代码覆盖率的获取、差异代码文件发送方法及装置。
背景技术
在对编写完成的代码进行测试时,大部分测试框架只能提供一个整体的代码覆盖率报告,缺少差异代码覆盖率。然而在review和测试代码的时候,往往想要得到这次改动的文件的差异代码覆盖率,来强制新的代码都能满足较高的覆盖率,也杜绝开发随意提交代码而测试人员不知道而漏侧的情况。
目前,差异代码覆盖率的获取方法通常是终端将编写后的全部代码发送至服务器,由服务器计算全量的代码覆盖率,再根据差异化代码去计算差异代码覆盖率。由于需要先计算全量的代码覆盖率,从测试到结果出来耗时较长,因而,上述方法的获取效率低,结果也不够精准。
发明内容
本申请实施例提供了一种差异代码覆盖率的获取、差异代码文件发送方法及装置,能够提高获取效率,提高结果的精准度。该技术方案如下:
一方面,提供了一种差异代码覆盖率的获取方法,该方法包括:
获取目标版本代码的差异代码文件和所述目标版本代码的插桩数据;
根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异信息;
根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率。
在一种可能实现方式中,所述方法还包括:
获取所述目标版本代码的差异代码文件的第一标注信息;
获取所述其他版本代码的差异代码文件的第二标注信息,所述第一标注信息和所述第二标注信息包括代码修改者信息和代码测试者信息中至少一项;
根据所述第一标注信息、所述第二标注信息以及所述目标版本代码和所述其他版本代码的合并版本代码的差异代码覆盖率,生成覆盖率报告。
一方面,提供了一种差异代码文件发送方法,所述方法包括:
向服务器发送目标版本代码,由所述服务器根据所述目标版本代码以及所述目标版本代码修改前的原始版本代码,获取目标版本代码的差异代码信息;
接收所述服务器发送的差异代码信息;
根据所述差异代码信息,从所述目标版本代码中,提取差异代码文件;
将所述差异代码文件发送至所述服务器,所述差异代码文件用于获取差异代码覆盖率。
在一种可能实现方式中,所述原始版本代码由所述服务器根据原始版本代码的版本号从目标服务器中获取得到。
在一种可能实现方式中,所述差异代码信息为差异文件列表;
所述根据所述差异代码信息,从所述目标版本代码中,提取差异代码文件,包括:
从所述目标版本中,提取所述差异文件列表所指示的代码文件作为差异代码文件。
一方面,提供了一种差异代码覆盖率的获取装置,所述装置包括:
数据获取模块,用于获取目标版本代码的差异代码文件和所述目标版本代码的插桩数据;
信息获取模块,用于根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异信息;
覆盖率获取模块,用于根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率。
在一种可能实现方式中,所述差异信息至少包括差异行信息;
所述信息获取模块,用于根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述原始版本代码之间的差异行信息。
在一种可能实现方式中,所述差异信息还包括差异化日志信息;
所述信息获取模块,还用于根据所述差异代码文件和所述插桩数据,获取从所述原始版本代码变更到所述目标版本代码的差异化日志信息。
在一种可能实现方式中,所述覆盖率获取模块,用于根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率,获取所述差异代码文件中被测试的比例,将所述比例作为所述目标版本代码的差异代码覆盖率。
在一种可能实现方式中,所述装置还包括:
生成模块,用于根据所述差异信息、差异代码文件或所述插桩数据中至少一项,以及所述差异代码覆盖率,生成覆盖率报告。
在一种可能实现方式中,所述数据获取模块还用于获取其他版本代码的差异代码文件;
所述覆盖率获取模块,还用于获取所述其他版本代码的第一差异代码覆盖率;
所述信息获取模块,还用于响应于所述其他版本代码对应的原始版本文件与所述目标版本代码对应的原始代码文件相同,获取所述其他版本代码和所述目标版本代码的差异代码文件之间的文件差异信息;
所述装置还包括:
转换模块,用于根据所述文件差异信息,将所述目标版本代码的差异代码覆盖率转换为所述其他版本代码的第二差异代码覆盖率;
所述覆盖率获取模块,还用于根据所述第一差异代码覆盖率和所述第二差异代码覆盖率,获取所述目标版本代码和所述其他版本代码的合并版本代码的差异代码覆盖率。
在一种可能实现方式中,所述信息获取模块,还用于获取所述目标版本代码的差异代码文件的第一标注信息;
所述信息获取模块,还用于获取所述其他版本代码的差异代码文件的第二标注信息,所述第一标注信息和所述第二标注信息包括代码修改者信息和代码测试者信息中至少一项;
所述生成模块,还用于根据所述第一标注信息、所述第二标注信息以及所述目标版本代码和所述其他版本代码的合并版本代码的差异代码覆盖率,生成覆盖率报告。
一方面,提供了一种差异代码文件发送装置,所述装置包括:
发送模块,用于向服务器发送目标版本代码,由所述服务器根据所述目标版本代码以及所述目标版本代码修改前的原始版本代码,获取目标版本代码的差异代码信息;
接收模块,用于接收所述服务器发送的差异代码信息;
提取模块,用于根据所述差异代码信息,从所述目标版本代码中,提取差异代码文件;
所述发送模块,还用于将所述差异代码文件发送至所述服务器,所述差异代码文件用于获取差异代码覆盖率。
在一种可能实现方式中,所述原始版本代码由所述服务器根据原始版本代码的版本号从目标服务器中获取得到。
在一种可能实现方式中,所述差异代码信息为差异文件列表;
所述提取模块用于从所述目标版本中,提取所述差异文件列表所指示的代码文件作为差异代码文件。
一方面,提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的差异代码覆盖率的获取方法或差异代码文件发送方法所执行的操作。
一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的差异代码覆盖率的获取方法或差异代码文件发送方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例通过目标版本代码的差异代码文件和插桩数据,根据所述差异代码文件和所述插桩数据,来获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异,进而确定差异代码覆盖率,直接在差异代码文件的基础上进行差异代码覆盖率获取步骤,而无需对全量的目标版本代码进行差异代码覆盖率获取步骤,能够得到更精准的结果,且可以有效提高获取效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种差异代码覆盖率的获取方法的实施环境;
图2是本申请实施例提供的一种差异代码文件发送方法的流程图;
图3是本申请实施例提供的一种差异代码文件发送方法的流程图;
图4是本申请实施例提供的一种差异代码覆盖率的获取方法的流程图;
图5是本发明实施例提供的一种差异代码覆盖率的实施环境;
图6是本申请实施例提供的一种差异代码覆盖率的获取方法的流程图;
图7是本申请实施例提供的一种差异代码覆盖率的获取装置的结构示意图;
图8是本申请实施例提供的一种差异代码文件发送装置的结构示意图;
图9是本申请实施例提供的一种终端900的结构示意图;
图10是本申请实施例提供的一种服务器1000的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
以下,对本申请涉及到的术语进行解释。
代码覆盖率:源代码中被测试的比例。
差异代码覆盖率:修改的源代码中被测试的比例。
插桩:是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。
图1是本申请实施例提供的一种差异代码覆盖率的获取方法的实施环境,该实施环境中可以包括终端101和服务器102,终端101和服务器102的数量均可以为一个或多个,本申请实施例对此不作限定。其中,该终端101可以通过有线或无线网络与服务器102连接。
在本申请实施例中,开发人员能够终端101上编写代码,并将编写好的代码发送至服务器102。开发人员也可以在终端101上对代码进行修改,并将修改后的代码发送至服务器102,由服务器102与终端101通过交互,分析修改后的代码中的差异代码覆盖率。当然,该终端101还可以对代码进行测试,本申请实施例对此不作限定。
在一种可能实现方式中,该服务器102中可以包括用于获取差异代码覆盖率的服务器以及为代码进行版本管理的服务器,当然,该两种服务器还可以用于执行其他业务逻辑,该服务器102中也可以包括其他类型的服务器,本申请实施例对此不作限定。
下面通过图2所示实施例和图4实施例,分别对差异代码文件发送方法和差异代码覆盖率的获取方法的流程进行说明,图2是本申请实施例提供的一种差异代码文件发送方法的流程图,参见图2,该方法可以包括以下步骤:
201、终端获取目标版本代码。
一般地,开发人员通常可以编写代码,编写完成后,存储下来测试,后续再在该代码基础上修改,得到新版本的代码。需要说明的是,还可以包括多个开发人员同时对代码进行修改,得到多个版本的代码。该目标版本代码可以为开发人员在某个版本代码的基础上修改得到的代码。在此可以称该某个版本代码为该目标版本代码修改前的原始版本代码。
该目标版本代码可以为开发人员在该终端上编写得到,也可以是在其他终端上编写得到并发送至该终端。相应的,该终端获取该目标版本代码的过程则可以包括两种情况,在情况一中,终端可以从本次缓存文件中获取该目标版本代码。在情况二中,终端可以从其他终端中获取该目标版本代码。本申请实施例对此不作限定。
202、终端向服务器发送目标版本代码。
203、服务器接收该目标版本代码。
204、服务器获取该目标版本代码修改前的原始版本代码。
服务器接收到该目标版本代码后,需要分析该目标版本代码相较于原始版本代码修改了哪些内容,因而,服务器可以获取原始版本代码,再进行后续的步骤,来确定本次修改内容。
在一种可能实现方式中,可以对开发人员编写完的代码进行版本管理,这样服务器可以根据版本号,确定需要对比的代码是哪个版本的代码。具体地,该原始版本代码由该服务器根据原始版本代码的版本号从目标服务器中获取得到。这样对代码进行版本管理,在多个开发人员对同一代码进行修改或者开发人员对代码进行反复修改时,能够准确地追溯代码修改历程。
其中,该目标服务器可以为具有版本管理的服务器。开发人员编写完代码后,可以提交到该目标服务器,目标服务器为其生成版本号,并与代码对应存储。该目标服务器可以根据原始版本代码的版本号,查询到原始版本代码,将其打包后发送至该服务器。
205、服务器根据该目标版本代码以及该目标版本代码修改前的原始版本代码,获取目标版本代码的差异代码信息。
服务器获取到目标版本代码以及原始版本代码后,即可对比两个版本代码,确定从原始版本代码进行了哪些修改,得到了该目标版本代码,从而将这部分修改的信息作为差异代码信息。
在一种可能实现方式中,差异代码信息可以采用列表的方式,具体地,该差异代码信息为差异文件列表。这样通过差异代码信息,指示出变更的文件是哪些,从而后续终端可以根据该差异代码信息,提取出差异代码文件,仅向服务器发送出差异代码文件,而不用发送全量的代码,以减少数据传输,后续针对差异代码文件进行差异代码覆盖率计算,能够得到更精准的结果。
在一个具体示例中,上述对比过程,服务器可以对目标版本代码和原始版本代码进行逐行对比,以确定变更内容的位置,进而根据变更内容的位置生成差异文件列表。
206、服务器将差异代码信息发送至终端。
207、终端接收该服务器发送的差异代码信息。
208、终端根据该差异代码信息,从该目标版本代码中,提取差异代码文件。
终端接收到差异代码信息,即可根据该该差异代码信息所指示的差异代码所在位置,从该目标版本代码中,提取差异代码文件。
在该差异代码信息为差异文件列表的实现方式中,上述提取过程可以为:终端从该目标版本中,提取该差异文件列表所指示的代码文件作为差异代码文件。
209、终端将该差异代码文件发送至该服务器,该差异代码文件用于获取差异代码覆盖率。
终端提取得到差异代码文件后,可以对差异代码文件进行打包,将压缩包发送给服务器。
下面提供一个具体示例,参见图3,该具体示例中可以包括三方:客户端(即为终端)、后台服务器(即为上述服务器)和打包服务器(即为目标服务器)。打包服务器能够知道每个版本的版本号信息,因此,打包服务器可以将需要对比的版本号上报到后台服务器,后台服务器会记录打包服务器上来的对比版本号。当被测客户端需要上传覆盖率数据的时候会去后台服务器请求获取差异化文件(差异代码信息),由于后台服务器已经有了被对比版本信息,因此后台服务器可以根据被对比版本和客户端上报上来的当前版本计算出差异化的文件。不同的版本管理系统,可以采用不同的方式计算,例如,svn代码管理使用svndiff-r被对比版本:目标版本,git代码管理使用git diff被对比版本目标版本,即可获取到差异化的文件。后台服务器将计算结果的差异化文件列表返回给客户端。客户端根据返回的差异化文件列表打包这些差异化文件。客户端可以将打包好的差异化文件上传到后台服务器。这样后台只会收到差异化的文件,因此解压的文件数量也会全量少很多,并且计算覆盖率的时候文件更少也会更快。
本申请实施例通过向服务器发送目标版本代码,由服务器反馈差异代码信息,从而从目标版本代码中提取差异代码文件,向服务器发送该差异代码文件,而无需发送全量的目标版本代码进行差异代码覆盖率的获取,可以使得服务器针对差异代码文件进行更精准的差异代码覆盖率获取,得到更精准的结果。且无需对全量进行代码覆盖率获取,能够有效提高获取效率。
图4是本申请实施例提供的一种差异代码覆盖率的获取方法的流程图,参见图4,该方法可以包括:
401、服务器获取目标版本代码的差异代码文件。
该目标版本代码的差异代码文件可以由终端发送至该服务器,该差异代码文件用于体现目标版本代码与原始版本代码之间差异。该差异代码文件的获取过程可以参见图2所示实施例,在此不多做赘述。
402、服务器获取该目标版本代码的插桩数据。
该插桩数据中可以包括可执行的代码信息,其中,该插桩数据可以由终端对目标版本代码进行测试后,将其发送至目标服务器,服务器从目标服务器中获取。该插桩数据也可以由该终端直接发送至该服务器,本申请实施例对此不作限定。
服务器获取到差异代码文件,以及该目标版本代码的插桩数据,后续可以对目标版本代码与原始版本代码之间差异进行分析,进而根据该差异以及插桩数据确定差异代码覆盖率。
需要说明的是,该步骤401和步骤402为获取目标版本代码的差异代码文件和该目标版本代码的插桩数据的过程,服务器可以先执行步骤401,再执行步骤402,也可以先执行步骤402,再执行步骤401,也可以同时执行,二者的时序可以任意,本申请实施例对此不做限定。
403、服务器根据该差异代码文件和该插桩数据,获取该目标版本代码和该目标版本代码修改前的原始版本代码之间的差异信息。
服务器获取到差异代码文件和该插桩数据后,可以根据这两种数据,对比目标版本代码和原始版本代码之间具体的差异信息。其中,该差异信息可以为一种差异,也可以包括多种差异,相应的,该步骤403可以包括以下不同的实现方式。
在一种可能实现方式中,该差异信息至少包括差异行信息。具体地,服务器可以根据该差异代码文件和该插桩数据,获取该目标版本代码和该原始版本代码之间的差异行信息。在该过程中计算出变更的行,进而得到具体的差异代码,可以再根据差异代码的测试情况,执行后续步骤,确定差异代码覆盖率。
在一种可能实现方式中,该差异信息还可以包括差异化日志信息。具体地,服务器可以根据该差异代码文件和该插桩数据,获取从该原始版本代码变更到该目标版本代码的差异化日志信息。这样通过该差异化日志信息还可以获知从该原始版本代码变更到该目标版本代码的具体变更情况,通过该该差异化日志信息得到的差异代码覆盖率更准确。
404、服务器根据该差异信息、该差异代码文件以及该插桩数据,获取该目标版本代码的差异代码覆盖率。
服务器获取到多种信息后,可以综合该多种信息,计算该目标版本代码的差异代码覆盖率。具体地,服务器可以根据该差异信息、该差异代码文件以及该插桩数据,获取该目标版本代码的差异代码覆盖率,获取该差异代码文件中被测试的比例,将该比例作为该目标版本代码的差异代码覆盖率。
在一种可能实现方式中,服务器获取到差异代码覆盖率后,还可以生成覆盖率报告,以便于测试人员查看。具体地,服务器可以根据该差异信息、差异代码文件或该插桩数据中至少一项,以及该差异代码覆盖率,生成覆盖率报告。
在一种可能实现方式中,服务器可以获取到多个版本代码的差异代码文件,如果是针对同一个版本代码进行修改后得到的,还可以将覆盖率报告进行合并,这样对于差异化覆盖率的数据跟进将更加高效。具体地,服务器可以获取其他版本代码的差异代码文件,获取该其他版本代码的第一差异代码覆盖率。服务器可以响应于该其他版本代码对应的原始版本文件与该目标版本代码对应的原始代码文件相同,获取该其他版本代码和该目标版本代码的差异代码文件之间的文件差异信息,根据该文件差异信息,将该目标版本代码的差异代码覆盖率转换为该其他版本代码的第二差异代码覆盖率,根据该第一差异代码覆盖率和该第二差异代码覆盖率,获取该目标版本代码和该其他版本代码的合并版本代码的差异代码覆盖率。
在一种可能实现方式中,还可以提供更完整的差异化行的修改者和测试者信息,对于差异化覆盖率的数据跟进将更加高效和并且可以针对性的查看自己负责的模块。具体地,服务器可以获取该目标版本代码的差异代码文件的第一标注信息,获取该其他版本代码的差异代码文件的第二标注信息,该第一标注信息和该第二标注信息包括代码修改者信息和代码测试者信息中至少一项。服务器可以根据该第一标注信息、该第二标注信息以及该目标版本代码和该其他版本代码的合并版本代码的差异代码覆盖率,生成覆盖率报告。
对于标注信息,标注处理模块用于使得使用者可以更有效的使用覆盖率结果数据,支持对模块进行负责任的标注,支持对异常分支无法覆盖到的场景进行已覆盖的标注。
第一点、对文件进行标注
每个文件的展示大致如下:
Figure BDA0002397511340000111
在报告的首页会按照文件夹进行聚合,这样在首页会将子目录下的所有的文件信息进行聚合,聚合后查看报告也将更高效,在首页就能知道哪里目录是需要点进去进行进一步检查(review)的。在报告的首页会按照文件夹进行聚合,这样在首页会将子目录下的所有的文件信息进行聚合,聚合后查看报告也将更高效,在首页就能知道哪里目录是需要点进去进行进一步review的。
第二点、对异常分支未覆盖的行进行标注,举例如下,下面异常处理,由于这个异常测试很慢模拟,因此如果review确定这个分支没有问题,可以标记为已覆盖,标记完之后以后就不要再次确认这个未覆盖的场景了,只需要集中精力去跟进真正没有覆盖到的内容。
第三点、标注的内容合并到下个版本
当某个版本标注完成之后,如果后续还有版本数据测试,且是对比相同的版本,则会将当前版本的数据写入下个版本的报告中,这样测试使用者对于相同变更的代码不需要重复review。
参见图5,该方法可以通过数据上传模块、计算模块、标记处理模块、服务器以及数据库实现,数据上传模块用于将测试的覆盖率数据上传到后台,使得后续计算能根据差异化结果进行计算,节省计算耗时,计算模块用于将客户端上传的覆盖率数据和打包过程的插桩数据计算的到差异化覆盖率报告,并且将计算的到的多份报告进行合并,参见图6,具体如下
1)完成A版本的测试后,上传A版本的覆盖率数据到后台服务器
2)后台服务器收到A版本的覆盖率数据后解压
3)后台服务器向打包服务器请求打包过程插桩的数据,插桩数据里包含了代码的可执行信息
4)由于是需要计算差异化的覆盖率数据和展示差异化的日志,因此获取到差异化的变更行及其日志
5)根据以上步骤2、3、4中数据计算得到A版本差异化的覆盖率报告
6)如果此时上传上来的数据还有版本B,这时候需要进一步进行版本的合并,重复以上步骤2-5可以得到版本B的覆盖率数据
7)获取版本A和版本B的差异化数据,之后将上面A的覆盖率信息根据差异化信息转化为B版本的覆盖率信息
8)将转化后的B版本的覆盖率和当前获取到的B版本的覆盖率合并为一份覆盖率数据并生成报告。
本申请实施例通过目标版本代码的差异代码文件和插桩数据,根据该差异代码文件和该插桩数据,来获取该目标版本代码和该目标版本代码修改前的原始版本代码之间的差异,进而确定差异代码覆盖率,直接在差异代码文件的基础上进行差异代码覆盖率获取步骤,而无需对全量的目标版本代码进行差异代码覆盖率获取步骤,能够得到更精准的结果,且可以有效提高获取效率。
图7是本申请实施例提供的一种差异代码覆盖率的获取装置的结构示意图,该装置包括:
数据获取模块701,用于获取目标版本代码的差异代码文件和该目标版本代码的插桩数据;
信息获取模块702,用于根据该差异代码文件和该插桩数据,获取该目标版本代码和该目标版本代码修改前的原始版本代码之间的差异信息;
覆盖率获取模块703,用于根据该差异信息、该差异代码文件以及该插桩数据,获取该目标版本代码的差异代码覆盖率。
在一种可能实现方式中,该差异信息至少包括差异行信息;
该信息获取模块,用于根据该差异代码文件和该插桩数据,获取该目标版本代码和该原始版本代码之间的差异行信息。
在一种可能实现方式中,该差异信息还包括差异化日志信息;
该信息获取模块702,还用于根据该差异代码文件和该插桩数据,获取从该原始版本代码变更到该目标版本代码的差异化日志信息。
在一种可能实现方式中,该覆盖率获取模块703,用于根据该差异信息、该差异代码文件以及该插桩数据,获取该目标版本代码的差异代码覆盖率,获取该差异代码文件中被测试的比例,将该比例作为该目标版本代码的差异代码覆盖率。
在一种可能实现方式中,该装置还包括:
生成模块,用于根据该差异信息、差异代码文件或该插桩数据中至少一项,以及该差异代码覆盖率,生成覆盖率报告。
在一种可能实现方式中,该数据获取模块701还用于获取其他版本代码的差异代码文件;
该覆盖率获取模块703,还用于获取该其他版本代码的第一差异代码覆盖率;
该信息获取模块702,还用于响应于该其他版本代码对应的原始版本文件与该目标版本代码对应的原始代码文件相同,获取该其他版本代码和该目标版本代码的差异代码文件之间的文件差异信息;
该装置还包括:
转换模块,用于根据该文件差异信息,将该目标版本代码的差异代码覆盖率转换为该其他版本代码的第二差异代码覆盖率;
该覆盖率获取模块703,还用于根据该第一差异代码覆盖率和该第二差异代码覆盖率,获取该目标版本代码和该其他版本代码的合并版本代码的差异代码覆盖率。
在一种可能实现方式中,该信息获取模块702,还用于获取该目标版本代码的差异代码文件的第一标注信息;
该信息获取模块702,还用于获取该其他版本代码的差异代码文件的第二标注信息,该第一标注信息和该第二标注信息包括代码修改者信息和代码测试者信息中至少一项;
该生成模块,还用于根据该第一标注信息、该第二标注信息以及该目标版本代码和该其他版本代码的合并版本代码的差异代码覆盖率,生成覆盖率报告。
需要说明的是:上述实施例提供的差异代码覆盖率的获取装置在差异代码覆盖率的获取时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的差异代码覆盖率的获取装置与差异代码覆盖率的获取方法实施例属于同一构思,其具体实现过程详见差异代码覆盖率的获取方法实施例,这里不再赘述。
图8是本申请实施例提供的一种差异代码文件发送装置的结构示意图,该装置包括:
发送模块801,用于向服务器发送目标版本代码,由该服务器根据该目标版本代码以及该目标版本代码修改前的原始版本代码,获取目标版本代码的差异代码信息;
接收模块802,用于接收该服务器发送的差异代码信息;
提取模块803,用于根据该差异代码信息,从该目标版本代码中,提取差异代码文件;
该发送模块801,还用于将该差异代码文件发送至该服务器,该差异代码文件用于获取差异代码覆盖率。
在一种可能实现方式中,该原始版本代码由该服务器根据原始版本代码的版本号从目标服务器中获取得到。
在一种可能实现方式中,该差异代码信息为差异文件列表;
该提取模块用于从该目标版本中,提取该差异文件列表所指示的代码文件作为差异代码文件。
需要说明的是:上述实施例提供的差异代码文件发送装置在发送差异代码文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的差异代码文件发送装置与差异代码文件发送方法实施例属于同一构思,其具体实现过程详见差异代码文件发送方法实施例,这里不再赘述。
图9是本申请实施例提供的一种终端900的结构示意图,该终端900可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端900包括有:处理器901和存储器902。
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中各个实施例提供的差异代码覆盖率的获取方法或差异代码文件发送方法。
在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、触摸显示屏905、摄像头组件906、音频电路907、定位组件908和电源909中的至少一种。
外围设备接口903可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。
定位组件908用于定位终端900的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件908可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源909用于为终端900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。
加速度传感器911可以检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制触摸显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器912可以检测终端900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对终端900的3D动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器913可以设置在终端900的侧边框和/或触摸显示屏905的下层。当压力传感器913设置在终端900的侧边框时,可以检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在触摸显示屏905的下层时,由处理器901根据用户对触摸显示屏905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置终端900的正面、背面或侧面。当终端900上设置有物理按键或厂商Logo时,指纹传感器914可以与物理按键或厂商Logo集成在一起。
光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制触摸显示屏905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏905的显示亮度;当环境光强度较低时,调低触摸显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。
接近传感器916,也称距离传感器,通常设置在终端900的前面板。接近传感器916用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制触摸显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制触摸显示屏905从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图10是本申请实施例提供的一种服务器1000的结构示意图,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(CentralProcessing Units,CPU)1001和一个或一个以上的存储器1002,其中,该存储器1002中存储有至少一条程序代码,该至少一条程序代码由该处理器1001加载并执行以实现上述各个实施例提供的差异代码覆盖率的获取方法。当然,该服务器1000还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1000还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由终端中的处理器执行以完成上述实施例中差异代码覆盖率的获取方法。例如,该计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种差异代码覆盖率的获取方法,其特征在于,所述方法包括:
获取目标版本代码的差异代码文件和所述目标版本代码的插桩数据;
根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异信息;
根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率。
2.根据权利要求1所述的方法,其特征在于,所述差异信息至少包括差异行信息;
所述根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异信息,包括:
根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述原始版本代码之间的差异行信息。
3.根据权利要求2所述的方法,其特征在于,所述差异信息还包括差异化日志信息;
所述根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异信息,还包括:
根据所述差异代码文件和所述插桩数据,获取从所述原始版本代码变更到所述目标版本代码的差异化日志信息。
4.根据权利要求1所述的方法,其特征在于,所述根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率,包括:
根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率,获取所述差异代码文件中被测试的比例,将所述比例作为所述目标版本代码的差异代码覆盖率。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述差异信息、差异代码文件或所述插桩数据中至少一项,以及所述差异代码覆盖率,生成覆盖率报告。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取其他版本代码的差异代码文件;
获取所述其他版本代码的第一差异代码覆盖率;
响应于所述其他版本代码对应的原始版本文件与所述目标版本代码对应的原始代码文件相同,获取所述其他版本代码和所述目标版本代码的差异代码文件之间的文件差异信息;
根据所述文件差异信息,将所述目标版本代码的差异代码覆盖率转换为所述其他版本代码的第二差异代码覆盖率;
根据所述第一差异代码覆盖率和所述第二差异代码覆盖率,获取所述目标版本代码和所述其他版本代码的合并版本代码的差异代码覆盖率。
7.一种差异代码文件发送方法,其特征在于,所述方法包括:
向服务器发送目标版本代码,由所述服务器根据所述目标版本代码以及所述目标版本代码修改前的原始版本代码,获取目标版本代码的差异代码信息;
接收所述服务器发送的差异代码信息;
根据所述差异代码信息,从所述目标版本代码中,提取差异代码文件;
将所述差异代码文件发送至所述服务器,所述差异代码文件用于获取差异代码覆盖率。
8.一种差异代码覆盖率的获取装置,其特征在于,所述装置包括:
数据获取模块,用于获取目标版本代码的差异代码文件和所述目标版本代码的插桩数据;
信息获取模块,用于根据所述差异代码文件和所述插桩数据,获取所述目标版本代码和所述目标版本代码修改前的原始版本代码之间的差异信息;
覆盖率获取模块,用于根据所述差异信息、所述差异代码文件以及所述插桩数据,获取所述目标版本代码的差异代码覆盖率。
9.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求6任一项所述的差异代码覆盖率的获取方法或如权利要求7所述的差异代码文件发送方法所执行的操作。
10.一种存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求6任一项或所述的差异代码覆盖率的获取方法或如权利要求7所述的差异代码文件发送方法所执行的操作。
CN202010136502.2A 2020-03-02 2020-03-02 差异代码覆盖率的获取、差异代码文件发送方法及装置 Pending CN113342635A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010136502.2A CN113342635A (zh) 2020-03-02 2020-03-02 差异代码覆盖率的获取、差异代码文件发送方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010136502.2A CN113342635A (zh) 2020-03-02 2020-03-02 差异代码覆盖率的获取、差异代码文件发送方法及装置

Publications (1)

Publication Number Publication Date
CN113342635A true CN113342635A (zh) 2021-09-03

Family

ID=77467284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010136502.2A Pending CN113342635A (zh) 2020-03-02 2020-03-02 差异代码覆盖率的获取、差异代码文件发送方法及装置

Country Status (1)

Country Link
CN (1) CN113342635A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706749A (zh) * 2022-03-03 2022-07-05 网宿科技股份有限公司 代码覆盖率的确定方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706749A (zh) * 2022-03-03 2022-07-05 网宿科技股份有限公司 代码覆盖率的确定方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN110674022B (zh) 行为数据获取方法、装置及存储介质
CN111274155B (zh) 动态库的内存操作记录方法、装置、设备及存储介质
CN111338910B (zh) 日志数据处理、显示方法、装置、设备及存储介质
CN108132790B (zh) 检测无用代码的方法、装置及计算机存储介质
CN111192005A (zh) 政务业务处理方法、装置、计算机设备及可读存储介质
CN111752817A (zh) 页面加载时长的确定方法、装置、设备及存储介质
CN111949680A (zh) 数据处理方法、装置、计算机设备及存储介质
CN110275836A (zh) 虚幻引擎应用的安全测试方法、装置及存储介质
CN111737100A (zh) 数据获取方法、装置、设备及存储介质
CN111338933A (zh) 埋点验证方法、装置、设备及存储介质
CN111858382A (zh) 应用程序测试方法、装置、服务器、系统及存储介质
CN112052167A (zh) 生成测试脚本代码的方法和装置
CN111797017B (zh) 存储日志的方法、装置、测试设备及存储介质
CN113342635A (zh) 差异代码覆盖率的获取、差异代码文件发送方法及装置
CN111370096A (zh) 交互界面的显示方法、装置、设备及存储介质
CN111241451A (zh) 网页处理方法、装置、计算机设备及存储介质
CN113688043B (zh) 应用程序测试方法、装置、服务器、iOS设备及介质
CN113971123A (zh) 应用程序测试方法、装置、测试终端和存储介质
CN113268234A (zh) 页面生成方法、装置、终端和存储介质
CN113312249A (zh) 日志数据生成方法、日志数据显示方法及装置
CN111858367A (zh) 代码覆盖率测试方法、系统、装置、电子设备及存储介质
CN112000576A (zh) 代码数据的检测方法、装置、设备及存储介质
CN113342645B (zh) 测试业务功能的方法、装置、设备及存储介质
CN112860261A (zh) 静态代码检查方法、装置、计算机设备及可读存储介质
CN114071119B (zh) 资源的测试方法、装置、电子设备及存储介质

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