掌桥专利:专业的专利平台
掌桥专利
首页

一种测试范围度量及测试覆盖检查的方法及系统

文献发布时间:2023-06-19 12:02:28


一种测试范围度量及测试覆盖检查的方法及系统

技术领域

本发明涉及软件测试领域,特别是涉及一种测试范围度量及测试覆盖检查的方法及系统。

背景技术

在当今的软件测试活动中,大部分软件版本的迭代发布都需要进行大量的手动测试,检查当前软件版本的发布质量,测试许多当前软件版本迭代中没有涉及到的软件模块,由此将占用大量的人力和时间成本。当前,提出了“精准测试”测试理念,而现有的“精准测试”存在如下问题:测试用例所涉及的范围未完全覆盖所有新增或者变动代码的函数,抑或新增修改代码的类或者函数影响到其他关联业务调用,那么将造成测试漏测,出现软件质量覆盖不全问题。

发明内容

基于上述问题,本申请实施例提供了一种测试范围度量及测试覆盖检查的方法及系统,旨在对待发布版本的快速、准确的测试;并通过链路拓扑检查、待测文件覆盖检查、代码覆盖率检查,完成待测版本质量检查,综合以上方法措施,缩小了测试范围、保障软件版本测试质量,节省大量时间和人力成本。

本申请实施例第一方面提供了一种测试范围度量及测试覆盖检查的方法,所述方法包括:

获取待发布版本和当前已发布版本;

通过文件对比工具,对比所述待发布版本和所述当前已发布版本的差异,生成改动范围文件;

根据所述当前已发布版本的链路拓扑,确定所述待发布版本的待测链路;

根据所述改动范围文件和所述待测链路,生成所述待发布版本的待测试范围;

根据所述待测试范围,确定对应于所述待测试范围的测试用例,利用所述测试用例对所述待测试范围进行测试。

可选地,所述根据所述当前已发布版本的链路拓扑,确定所述待发布版本的待测链路,包括:

通过单元测试和灰度测试,确定所述当前已发布版本的链路拓扑;

将所述待发布版本中对应的新增或者改动的代码单元、调用与被调用及关联的业务模块,更新到所述链路拓扑中,得到所述待发布版本的待测链路。

可选地,所述方法还包括:

在测试通过时,发布所述待发布版本;

在测试未通过时,则定位到所述待测试范围中的异常位置。

可选地,所述在测试通过时,发布所述待发布版本之前,所述方法还包括:

在测试通过时,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对所述测试用例的测试过程进行检查;

在确定所述测试用例完全覆盖所述待测试范围时,发布所述待发布版本;

在确定所述测试用例未完全覆盖所述待测试范围时,修正所述测试用例。

可选地,所述通过文件对比工具,对比所述待发布版本和所述当前已发布版本的差异,生成改动范围文件,包括:

对比所述待发布版本和所述当前已发布版本的差异,标记所述待发布版本中的改动内容,得到改动范围文件。

本申请实施例第二方面提供了一种测试范围度量及测试覆盖检查的系统,所述系统包括:

获取模块,用于获取待发布版本和当前已发布版本;

对比模块,用于通过文件对比工具,对比所述待发布版本和所述当前已发布版本的差异,生成改动范围文件;

链路拓扑确定模块,用于根据所述当前已发布版本的链路拓扑,确定所述待发布版本的待测链路;

测试范围确定模块,用于根据所述改动范围文件和所述待测链路,生成所述待发布版本的待测试范围;

测试模块,用于根据所述待测试范围,确定对应于所述待测试范围的测试用例,利用所述测试用例对所述待测试范围进行测试。

可选地,所述链路拓扑确定模块,包括:

第一链路确定模块,用于通过单元测试和灰度测试,确定所述当前已发布版本的链路拓扑;

第二链路确定模块,用于将所述待发布版本中对应的新增或者改动的代码单元、调用与被调用及关联的业务模块,更新到所述链路拓扑中,得到所述待发布版本的待测链路。

可选地,所述系统还包括:

版本发布模块,用于在测试通过时,发布所述待发布版本;

异常定位模块,用于在测试未通过时,则定位到所述待测试范围中的异常位置。

可选地,所述版本发布模块,用于在测试通过时,发布所述待发布版本之前,所述系统还包括:

覆盖检查模块,用于在测试通过时,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对所述测试用例的测试过程进行检查;

第一版本发布模块,用于在确定所述测试用例完全覆盖所述待测试范围时,发布所述待发布版本;

测试用例修正模块,用于在确定所述测试用例未完全覆盖所述待测试范围时,修正所述测试用例。

可选地,所述对比模块包括:

第一对比模块,用于对比所述待发布版本和所述当前已发布版本的差异,标记所述待发布版本中的改动内容,得到改动范围文件。

本申请提供一种测试范围度量及测试覆盖检查的方法。通过文件对比工具对比待发布版本与当前已发布版本之间的差异,标记待发布版本中相对于当前已发布版本中发生改动的内容,得到改动范围文件,同时根据当前已发布版本中的各个方法,以及各个类之间的调用关系的链路拓扑,确定出待发布版本中的各个方法,以及各个类之间的调用关系的待测链路,根据改动范围文件和待测链路,确定出包括了改动内容的所有完整链路,组成待测试范围,从测试用例数据库中确定出与该待测试范围对应的测试用例,用于对待发布版本中的待测试范围进行测试。确定出的待测试范围包括了所有改动内容,以及所有包括了改动内容的链路调用结构,使得缩小测试范围的同时,使得待测试范围覆盖的测试范围更准确,然后以与该待测试范围对应的测试用例对该待发布版本进行测试,实现对待发布版本的快速、准确的测试,使版本的迭代更加快速、发布并保障了软件版本测试质量,同时节省大量时间和人力成本。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施例示出的一种测试范围度量及测试覆盖检查的方法的流程图;

图2是本申请一实施例示出的一种测试范围度量及测试覆盖检查的系统的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在对本申请所提供的测试范围度量及测试覆盖检查的方法进行说明之前,下面首先对相关技术领域中的软件测试方法进行简单说明。现如今软件测试活动中,大部分软件版本的迭代发布需要进行大量的手工测试检查当前软件版本的发布质量,测试许多当前软件版本迭代中没有涉及到的软件模块,占用了大量的人力和时间成本。而现有的“精准测试”可降低人力和时间成本,但存在如下问题:测试用例所涉及的范围未覆盖所有新增或者变动代码的函数,抑或新增修改代码的类或者函数影响到其他关联业务调用,那么将造成测试漏测,出现软件质量覆盖不全问题。

因此,本申请为克服上述问题,提供了一种测试范围度量及测试覆盖检查的方法,通过文件对比工具对比待发布版本与当前已发布版本之间的差异,标记待发布版本中相对于当前已发布版本中发生改动的内容,得到改动范围文件,同时根据当前已发布版本中的各个方法,以及各个类之间的调用关系的链路拓扑,确定出待发布版本中的各个方法,以及各个类之间的调用关系的待测链路,根据改动范围文件和待测链路,确定出包括了改动内容的所有完整链路,组成待测试范围,从测试用例数据库中确定出与该待测试范围对应的测试用例,用于对待发布版本中的待测试范围进行测试。确定出的待测试范围包括了所有改动内容,以及所有包括了改动内容的链路调用结构,使得缩小测试范围的同时,使得待测试范围覆盖的测试范围更准确,然后以与该待测试范围对应的测试用例对该待发布版本进行测试,实现对待发布版本的快速、准确的测试,使版本的迭代更加快速、发布并保障了软件版本测试质量,同时节省大量时间和人力成本。

图1是本申请一实施例示出的一种测试范围度量及测试覆盖检查的方法的流程图。参照图1,本申请提供的测试范围度量及测试覆盖检查的方法包括以下步骤:

步骤S11:获取待发布版本和当前已发布版本。

在本实施例中,待发布版本和当前已发布版本都存储在Git系统中,通过Git系统获取到存储在其中的待发布版本和当前已发布版本。当前已发布版本是对应软件的最新已发布版本文件。Git是一种开源的分布式版本控制系统,可快速、高效地对不同数量级的项目版本进行管理。

步骤S12:通过文件对比工具,对比所述待发布版本和所述当前已发布版本的差异,生成改动范围文件。

在本申请中,步骤S12具体包括:对比所述待发布版本和所述当前已发布版本的差异,标记所述待发布版本中的改动内容,得到改动范围文件。

在本实施例中,通过文件对比文工具,将待发布版本和当前已发布版本进行对比,标记待发布版本中相对于当前已发布版本的新增内容或修改内容,由此得到改动范围文件,该改动范围文件中的内容与待发布版本中的内容相同,不同之处在于标记了该改动范围文件中相对于当前已发布版本的新增内容或修改内容。

步骤S13:根据所述当前已发布版本的链路拓扑,确定所述待发布版本的待测链路。

在本实施例中,当前已发布版本是对应软件的最新已发布版本文件,当前已发布版本中的各个方法,各个类之间的完整调用关系组成该当前已发布版本的链路拓扑。将待发布版本中新增的方法、新增的类、改动的方法、改动的类,更新到当前已发布版本的链路拓扑中,更新后的当前已发布版本的链路拓扑即为待发布版本的待测链路。

示例地,新增的方法或类可能改变原有的链路调用结构,如原有的一条链路调用结构为A调用B,B调用C,此时新增D,D被B所调用,同时D调用C,由此组成一条新的链路调用结构A调用B,B调用D,D调用C。改动的方法或类可能改变原有的链路调用结构,如原有的一条链路调用结构为E调用F,F调用G,此时对G进行改动,改动后的G将不再被F调用,而被C调用,由此组成新的链路调用结构A调用B,B调用D,D调用C,C调用G,组成同时组成新的链路调用结构E调用F。由此将待发布版本中新增的方法、新增的类、改动的方法、改动的类,更新到当前已发布版本的链路拓扑中,得到待发布版本的待测链路。

优选的,为便于理解,上述只是以一条链路调用结构进行示例,实际版本文件中的链路调用结构有多条,组成完整的链路拓扑。同时,对于新增的方法或类也可能不会改变原有的链路调用结构,而组成一个全新的链路调用结构;同时,改动的方法或类也可能并不会改变原有的链路调用结构,而维持原有的链路调用结构,上述只是示例的内容,对于新增的方法、新增的类、改动的方法、改动的类对整个链路拓扑的改变是多样的,在此不对新增的方法、新增的类、改动的方法、改动的类对整个链路拓扑的所有改变形式进行说明。

在本申请中,步骤S13具体包括:

S131:通过单元测试和灰度测试,确定所述当前已发布版本的链路拓扑。

在本实施例中,单元测试为对软件中的最小可测试单元进行测试和验证,如C语言中的函数或方法,Java中的类。通过单元测试测试当前已发布版本中的各个最小单元是否能够正确执行,然后通过灰度测试获得当前已发布版本中的各个方法,各个类之间的调用关系,构成当前已发布版本的完整的链路拓扑。

S132:将所述待发布版本中对应的新增或者改动的代码单元、调用与被调用及关联的业务模块,更新到所述链路拓扑中,得到所述待发布版本的待测链路。

在本实施例中,待发布版本是在当前已发布版本的基础上进行改进后的版本文件,其中存在新增或改动的代码单元。新增的代码单元或改动的代码单元将改变原有的各条链路调用结构,形成新的各条链路调用结构。将待发布版本中对应的新增或者改动的代码单元、调用与被调用及关联的业务模块,更新到当前已发布版本的链路拓扑中,将得到待发布版本的完整链路拓扑,即待发布版本的待测链路。

步骤S14:根据所述改动范围文件和所述待测链路,生成所述待发布版本的待测试范围。

在本实施例中,改动范围文件中标记了相对于当前已发布版本改动或新增的内容,而待测链路则包括了待发布版本中的所有链路调用结构。只要一条链路调用结构中包括了改动或新增的内容,组成该链路调用结构中的所有方法和类都将作为待测试的范围,所有该类型的链路调用结构组成待发布版本的待测试范围。所有该类型的链路调用结构指链路调用结构中包括了改动的内容和新增的内容中的至少一种的链路调用结构。

步骤S15:根据所述待测试范围,确定对应于所述待测试范围的测试用例,利用所述测试用例对所述待测试范围进行测试。

在本实施例中,在步骤S14确定了待发布版本的待测试范围后,从存储有测试用例的存储空间中检索到对应于该待测试范围的测试用例,该测试用例将可以实现对该待发布版本的整个待测试范围进行测试。

在步骤S15执行后,所述方法还包括步骤S16:

在测试通过时,发布所述待发布版本。

在本实施例中,在测试用例对该待发布版本的整个待测试范围的测试通过时,该待发布版本的待测试范围不存在BUG,将其进行发布。

在测试未通过时,则定位到所述待测试范围中的异常位置。

在本实施例中,在测试用例对该待发布版本的整个待测试范围的测试未通过时,测试用例将存在四类测试结果,包括通过(Pass)、失败(Fail)、跳过(Skip)和受阻(Block)。根据测试结果,可以定位到测试过程中发生异常的位置,技术人员针对定位到的异常位置对该待发布版本进行修正。

在本申请中,步骤S16的测试通过时,发布所述待发布版本之前,还包括步骤S160:在测试通过时,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对所述测试用例的测试过程进行检查;在确定所述测试用例完全覆盖所述待测试范围时,发布所述待发布版本;在确定所述测试用例未完全覆盖所述待测试范围时,修正所述测试用例。

在本实施例中,从存储空间中检索到的对应于该待测试范围的测试用例,将可以实现对该待发布版本的整个待测试范围进行测试。但在实际测试过程中,该测试用例可能存在测试漏测,使得软件测试的质量覆盖不全。由此,在测试用例对该待发布版本的整个待测试范围测试通过后,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对测试用例的测试过程进行检查。确定待测试范围内的各条代码是否都被执行,各条链路调用结构中的各个方法和各个类是否都被正确调用,以及各个文件之间的读取以及执行是否正确,如文件的Open,Close操作是否执行。文件覆盖率检查的方式是通过对文件中存在的方法的读取操作进行检查,如文件的Open,Close操作是否执行进行检查,来确定是否覆盖到该文件,具体为通过读取Log中是否执行过Open,Close操作,来确定该文件是否被覆盖。

当测试范围内的各条代码都被执行,各条链路调用结构中的各个方法或各个类都被正确调用,以及各个文件之间都正确完成读取以及执行时,该测试用例已完全覆盖该待发布版本的整个待测试范围,同时该测试用例对该待发布版本的整个待测试范围也测试通过,该发布版本文件不存在异常,将其进行发布。

当测试范围内的各条代码存在未执行,各条链路调用结构中的各个方法或各个类存在未被正确调用,以及各个文件之间未完成正常的读取以及执行中的至少一条满足时,该测试用例未能完全覆盖该待发布版本的整个待测试范围,该测试用例对该待发布版本的整个待测试范围的测试不符合要求,技术人员对该测试用例进行修正后,再以该测试用例对该待发布版本的整个待测试范围进行测试,再次循环执行步骤S160,直至修正后的测试用例完全覆盖该待发布版本的整个待测试范围,同时该测试用例对该待发布版本的整个待测试范围测试通过时,发布该待发布版本。

在本实施例中,在测试用例对待发布版本测试通过后,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对测试用例的测试过程进行检查,在确定测试用例完全覆盖待测试范围时,发布待发布版本;在确定测试用例未完全覆盖待测试范围时,修正测试用例,从而进一步保障了软件版本测试的质量,实现快速、精准测试,节省大量时间和人力成本。

本申请提供一种测试范围度量及测试覆盖检查的方法。通过文件对比工具对比待发布版本与当前已发布版本之间的差异,标记待发布版本中相对于当前已发布版本中发生改动的内容,得到改动范围文件,同时根据当前已发布版本中的各个方法,以及各个类之间的调用关系的链路拓扑,确定出待发布版本中的各个方法,以及各个类之间的调用关系的待测链路,根据改动范围文件和待测链路,确定出包括了改动内容的所有完整链路,组成待测试范围,从测试用例数据库中确定出与该待测试范围对应的测试用例,用于对待发布版本中的待测试范围进行测试。确定出的待测试范围包括了所有改动内容,以及所有包括了改动内容的链路调用结构,使得缩小测试范围的同时,使得待测试范围覆盖的测试范围更准确,然后以与该待测试范围对应的测试用例对该待发布版本进行测试,实现对待发布版本的快速、准确的测试,使版本的迭代更加快速、发布并保障了软件版本测试质量,同时节省大量时间和人力成本。同时,在测试通过时,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对测试用例的测试过程进行检查,在确定测试用例完全覆盖待测试范围时,发布待发布版本;在确定测试用例未完全覆盖待测试范围时,修正测试用例,从而进一步保障了软件版本测试的质量,实现快速、精准测试,节省大量时间和人力成本。此外,对于不涉及代码逻辑修改的内容,无法判别出测试范围,如配置文件、参数、图片文字修改等,可通过文件覆盖率检查来确定测试用例的测试过程是否覆盖到该不涉及代码逻辑修改的内容,由此更进一步保证软件版本测试质量。

基于同一发明构思,本申请一实施例提供一种测试范围度量及测试覆盖检查的系统。参考图2,图2是本申请一实施例示出的一种测试范围度量及测试覆盖检查的系统的示意图。如图2所示,该系统200包括:

获取模块201,用于获取待发布版本和当前已发布版本;

对比模块202,用于通过文件对比工具,对比所述待发布版本和所述当前已发布版本的差异,生成改动范围文件;

链路拓扑确定模块203,用于根据所述当前已发布版本的链路拓扑,确定所述待发布版本的待测链路;

测试范围确定模块204,用于根据所述改动范围文件和所述待测链路,生成所述待发布版本的待测试范围;

测试模块205,用于根据所述待测试范围,确定对应于所述待测试范围的测试用例,利用所述测试用例对所述待测试范围进行测试。

可选地,所述链路拓扑确定模块,包括:

第一链路确定模块,用于通过单元测试和灰度测试,确定所述当前已发布版本的链路拓扑;

第二链路确定模块,用于将所述待发布版本中对应的新增或者改动的代码单元、调用与被调用及关联的业务模块,更新到所述链路拓扑中,得到所述待发布版本的待测链路。

可选地,所述系统还包括:

版本发布模块,用于在测试通过时,发布所述待发布版本;

异常定位模块,用于在测试未通过时,则定位到所述待测试范围中的异常位置。

可选地,所述版本发布模块,用于在测试通过时,发布所述待发布版本之前,所述系统还包括:

覆盖检查模块,用于在测试通过时,通过代码覆盖率检查、链路测试覆盖检查,以及文件覆盖率检查对所述测试用例的测试过程进行检查;

第一版本发布模块,用于在确定所述测试用例完全覆盖所述待测试范围时,发布所述待发布版本;

测试用例修正模块,用于在确定所述测试用例未完全覆盖所述待测试范围时,修正所述测试用例。

可选地,所述对比模块包括:

第一对比模块,用于对比所述待发布版本和所述当前已发布版本的差异,标记所述待发布版本中的改动内容,得到改动范围文件。

对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种测试范围度量及测试覆盖检查的方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种测试范围度量及测试覆盖检查的方法及系统
  • 判断应用程序测试覆盖范围的方法及程序测试设备
技术分类

06120113148715