一种微服务架构下的精确回归测试方法及装置与流程

专利2022-06-29  64


本发明实施例涉及软件测试技术领域,具体涉及一种微服务架构下的精确回归测试方法及装置。



背景技术:

在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的很频繁,而在持续集成持续交互过程中,更是要求频繁高效的进行回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。现有微服务架构软件的回归测试主要采用以下两种方案:

(一)基于回归文档全量回归

业务比较简单的微服务项目,一般都是基于自身的业务系统设计一份回归测试文档,并跟随项目进程手动去维护这份回归测试文档使其保持与当前的系统一致,回归测试的时候根据回归测试文档进行全量回归。当回归测试文档设计的不够详细的时候,进行回归时还需要根据测试人员的经验进行补充测试,容易出现测试场景遗漏的情况。回归测试文档设计的足够详细覆盖了所有场景的话,会增大回归测试文档维护、测试场景设计的工作量,增加回归测试的成本。

(二)基于一定回归策略和回归用例集进行回归测试

对于比较大型的微服务项目,随着业务复杂度的提升,频繁全量回归的成本太高。很多项目会借助一些自动化测试工具或者平台,并根据自身项目情况制定一定的回归策略。比如,基于风险选择的测试,是基于一定的风险标准来从基线测试用例库中选择回归测试集合,一般而言,测试从主要特征到次要特征;基于一定的功能重要性评估方法的测试,是优先选择针对最重要或最频繁使用功能的测试用例进行测试;还有通过人工进行相依性分析识别软件的修改情况,确定更新的影响范围,进行回归测试。上述测试方法中,自动化测试工具主要是进行自动化测试用例管理、执行功能模块维护和跟踪等;测试用例的录入和系统功能模块划分还是人工维护的方式。上述测试方案测试的效率和成本会有所降低,测试的质量和稳定性也有所提高,但是总体上的回归测试方案和范围还是人工主导,测试的质量依赖团队良好的测试方案设计和执行。

因此,现有的技术方案主要依赖回归测试文档、自定义的测试策略来确定每次回归测试的范围,有些会通过自动化测试工具来进行回归测试,但是依然是人工方式去主导回归测试范围,均是在一定策略下进行大范围回归测试。现有的方案存在诸多问题:一是做不到精确的回归测试,很多回归测试工作只是无用功。二是总体的回归测试成本比较高,为了保证质量总是进行大范围回归测试。三是容易出现测试遗漏的情况,导致bug没有及时发现。



技术实现要素:

为解决现有回归测试中测试效率低、成本高等问题,本发明实施例提供一种微服务架构下的精确回归测试方法及装置。

第一方面,本发明实施例提供一种微服务架构下的精确回归测试方法,该方法包括:获取有效变更函数,所述有效变更函数是指发生有效变更的函数;基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;根据所述回归测试范围进行回归测试。

第二方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。

第三方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。

第四方面,本发明实施例提供一种微服务架构下的精确回归测试装置,该装置包括:有效变更函数获取模块,用于获取有效变更函数,所述有效变更函数是指发生有效变更的函数;调用函数获取模块,用于基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;回归测试范围确定模块,用于根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;回归测试模块,用于根据所述回归测试范围进行回归测试。

本发明实施例提供的微服务架构下的精确回归测试方法及装置,通过分析源码变更,确定受影响的接口函数列表,进而精确确定回归测试范围,解决了微服务架构下的持续集成过程中软件项目回归测试范围不好确定进而导致的回归测试的成本及效率较低的问题;使得回归测试在准确性和效率上都有很大的提升,显著降低了测试成本。

附图说明

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

图1是本发明实施例提供的微服务架构下的精确回归测试方法流程图;

图2是本发明又一实施例提供的微服务架构下的精确回归测试方法流程图;

图3是本发明又一实施例提供的微服务架构下的精确回归测试方法中有效变更函数列表的获取流程图;

图4是本发明又一实施例提供的微服务架构下的精确回归测试方法中的函数调用关系多叉树示意图;

图5是本发明实施例提供的电子设备的实体结构示意图;

图6是本发明实施例提供的微服务架构下的精确回归测试装置结构示意图。

具体实施方式

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

图1是本发明实施例提供的微服务架构下的精确回归测试方法流程图。如图1所示,所述方法包括:

步骤101、获取有效变更函数,所述有效变更函数是指发生有效变更的函数;

微服务架构下的精确回归测试装置首先获取有效变更函数,所述有效变更函数是指发生有效变更的函数。所述有效变更是指函数发生实质性的改变,对函数的运行或功能产生影响。比如,若函数的变更只是增加多余的空行、空格等,由于对函数的运行或功能不产生影响,则是无效的变更。无效的函数变更无需进行回归测试,忽略即可。

所述有效变更函数可以为多个。

步骤102、基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;

所述有效变更函数,是指函数本身发生了有效变更的函数。由于一个项目的软件实现过程,经常发生函数之间的调用,如果被调用的函数发生了变更,则会影响到调用此函数的函数连带着发生变更。因此,进行回归测试时,不仅需要考虑有效变更函数,还需考虑直接及间接调用所述有效变更函数的调用函数。所述直接及间接调用所述有效变更函数的调用函数即直接调用有效变更的函数及间接调用有效变更函数的函数。

所述有效变更函数为多个时,需要分别获取与相应的有效变更函数对应的所述调用函数。

步骤103、根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;

微服务框架下,对发生变更的接口函数进行测试,即可完成回归测试。所述发生变更的接口函数即所述变更接口函数。

得到所述有效变更函数及所述调用函数后,集合所有的所述有效变更函数及所述调用函数,筛选出其中的接口函数,即得到所述变更接口函数列表。

得到所述变更接口函数列表后,即可根据所述变更接口函数列表确定回归测试范围,回归测试的范围包括变更接口函数列表中所有的变更接口函数。

步骤104、根据所述回归测试范围进行回归测试。

得到回归测试范围后,即可根据所述回归测试范围进行回归测试。

本发明实施例通过分析源码变更,确定受影响的接口函数列表,进而精确确定回归测试范围,解决了微服务架构下的持续集成过程中软件项目回归测试范围不好确定进而导致的回归测试的成本及效率较低的问题;使得回归测试在准确性和效率上都有很大的提升,显著降低了测试成本。

进一步地,基于上述实施例,所述获取有效变更函数,具体包括:获取发生变更的变更文件;根据所述变更文件获取所述有效变更函数。

获取发生变更的变更文件,并根据所述变更文件获取所述有效变更函数。具体地,将变更后的文件与变更前的文件进行比对,会识别出文件的所有变更情况。在所有变更中筛选出发生有效变更的函数,即得到所述有效变更函数。

在上述实施例的基础上,本发明实施例通过变更文件获取有效变更函数,提高了有效变更函数的获取效率和准确率,从而提高了回归测试的效率和准确率。

进一步地,基于上述实施例,所述根据所述变更文件获取所述有效变更函数,具体包括:获取所述变更文件中出现的所有有效变更,并将所述所有有效变更划分为函数的变更、类变量的变更和注解的变更;根据所述函数的变更获取第一类变更函数,根据所述类变量的变更获取第二类变更函数,根据所述注解的变更获取第三类变更函数;根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数。

获取所述变更文件后,根据所述变更文件获取所述变更文件中出现的所有有效变更。其中,在判断是否是有效变更时,可以通过排除无效变更进行判断,或通过设定有效变更的变更形式进行判断,也或可同时根据这种方法进行判断。比如,在通过排除无效变更进行判断时,若判断获知所发生的变更只是插入空行,则可以认定为无效变更;若发生的变更不属于任何所设定的无效变更,则可认定为是有效变更。在通过设定有效变更的变更形式进行判断时,若判断获知所发生的变更是删除并插入,则可以认定为是有效变更,等等。

将所有的有效变更分为三类,分别为函数的变更、类变量的变更及注解的变更。将每个有效变更具体分为哪个类别,可根据变更所在的位置进行判断。

根据所述函数的变更获取第一类变更函数,所述第一类变更函数即包括所有的变更类型为函数的变更的函数。根据类变量的变更,通过分析发生变更的类变量的作用域,确定影响到的变更函数列表,即得到所述第二类变更函数。根据注解的变更,通过分析注解的作用域,确定影响到的变更函数列表,即得到所述第三类变更函数。

根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数;所述有效变更函数包括所述第一类变更函数、所述第二类变更函数及所述第三类变更函数。

在上述实施例的基础上,本发明实施例通过将所有有效变更划分为函数的变更、类变量的变更和注解的变更,并根据上述三种变更获取有效变更函数,进一步提高了有效变更函数的获取效率和准确率,从而进一步提高了回归测试的效率和准确率。

进一步地,基于上述实施例,所述根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数,具体包括:将所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数。

在得到所述第一类变更函数、所述第二类变更函数及所述第三类变更函数后,因为所述第一类变更函数、所述第二类变更函数及所述第三类变更函数可能存在重复函数,因此,可以在所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数,以避免对相同的有效变更函数重复处理。

在上述实施例的基础上,本发明实施例通过将所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数,进一步提高了回归测试的效率。

进一步地,基于上述实施例,所述基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数,具体包括:基于所述有效变更函数,通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数;所述函数调用关系多叉树包括所述有效变更函数及所述调用函数。

基于所述有效变更函数,通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数。比如,用p={f1,f2,f3…fn}表示有效变更函数p的直接调用函数f1到fn,然后循环分析每个fn的直接调用函数,最后形成一个函数调用关系多叉树。函数调用关系多叉树中,直接调用有效变更函数p的函数及间接调用有效变更函数p的函数共同构成有效变更函数p的调用函数。

其中,所述函数调用关系多叉树包括所述有效变更函数及所述调用函数。

在上述实施例的基础上,本发明实施例通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数,保证了调用函数的全面获取,提高了回归测试的准确率。

进一步地,基于上述实施例,所述根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,具体包括:通过遍历所述函数调用关系多叉树,将所述函数调用关系多叉树中的所述有效变更函数及所述调用函数与当前微服务项目下确定的接口函数列表进行对比,得到每个所述函数调用关系多叉树中的接口函数;所有所述函数调用关系多叉树中的接口函数的集合构成所述变更接口函数列表。

在微服务框架下,当前的软件项目的所有接口函数和接口函数对应的函数路径是能够准确输出的。其中,由于接口函数需要封装成库,因此,接口函数对应的函数路径用来分析接口函数的调用关系。本发明实施例确定精确的回归测试范围的主要目标即是确定收到代码变更影响的接口函数,即所述变更接口函数。

由于当前软件项目的所有接口函数可以获知,那么,在得到与每个有效变更函数对应的所述函数调用关系多叉树后,通过遍历所述函数调用关系多叉树,将所述函数调用关系多叉树中的所述有效变更函数及所述调用函数与当前微服务项目下确定的接口函数列表进行对比,得到每个所述函数调用关系多叉树中的接口函数;每个所述函数调用关系多叉树中的接口函数为一个或多个;所有所述函数调用关系多叉树中的接口函数的集合构成所述变更接口函数列表。

在上述实施例的基础上,本发明实施例通过遍历函数调用关系多叉树获取变更接口函数列表,进一步提高了回归测试的效率和准确率。

进一步地,在所述根据所述回归测试范围进行回归测试之后,所述方法还包括:评价回归测试是否覆盖了所述回归测试范围,并给出评价结果。

为保证回归测试的全面可靠,在根据所述回归测试范围进行回归测试之后,根据测试的完成情况评价回归测试是否覆盖了所述回归测试范围,并给出评价结果。若没有全面完成回归测试的测试点,则给出相应的提示信息,所述提示信息包括未完成的内容,以提示进一步地进行回归测试。若已全面完成回归测试的全部内容,则给出测试成功的消息。

可以理解的,为能够实现在测试完成后对测试结果进行评价,测试过程中需要对测试的内容进行实时跟踪记录。

在上述实施例的基础上,本发明实施例通过在所述根据所述回归测试范围进行回归测试之后评价回归测试是否覆盖了所述回归测试范围,并给出评价结果,提高了回归测试的可靠性。

为进一步说明本发明实施例所提供的微服务架构下的精确回归测试方法,下面给出一完整实施例。此实施例以java代码的回归测试为例进行说明。

在微服务框架下,当前的软件项目的所有暴露接口和接口对应的函数路径是能够准确输出的,像springboot框架下@restcontroller注解下的类下的函数就是暴露的接口,所以每个项目就对应一个暴露的接口列表,判断回归测试范围的标准就是去确定代码变更影响到接口列表的范围。另外,本发明实施例是分析java代码的变更,像资源文件、jar版本依赖的变更不在本发明实施例的范围内。

图2是本发明又一实施例提供的微服务架构下的精确回归测试方法流程图。如图2所示,测试装置首先从gitlab获取到一段时间内(对应发生代码变更的时间段)的变更文件列表,然后筛选出本次变更的java文件列表,接着分析每个java文件的变更,判断是否是有效变更,最后确定每个java文件有变更的函数,形成一个本次变更的所有java函数列表。然后分析每个变更函数的调用关系,最后确认每个变更函数影响到的接口,输出一个本次变更影响到的接口列表,最终确定回归测试的范围。

图3是本发明又一实施例提供的微服务架构下的精确回归测试方法中有效变更函数列表的获取流程图。如图3所示,可以从gitlab获取本次变更的文件列表并筛选出java的变更文件列表,然后基于文件变更标识算法对比变更前后的java文件差异,并判断当前变更文件中的所有变更是有效变更还是无效变更,若是无效变更则忽略;若是有效变更则区分为不同的变更类型,包括:函数的变更、变量的变更及注解的变更。其中变量和注解的变更能够通过分析其作用域,确定影响到的java函数列表。最后汇总所有有效的变更影响到的java函数列表确定本次变更的java函数列表。

在得到变更的java函数列表后,本发明实施例主要通过分析函数的调用链,输出变更java函数最终影响到的接口列表。java函数调用关系分析主要是基于开源的soot技术,并在这个技术的基础上做了改进,利用函数调用关系多叉树分析每个变更函数的调用关系树。

图4是本发明又一实施例提供的微服务架构下的精确回归测试方法中的函数调用关系多叉树示意图。如图4所示,函数a是有效变更函数,函数b和函数c直接调用函数a,函数e、函数d和函数h直接调用函数b,函数f和函数g直接调用函数c,函数h和函数g直接调用函数e,函数i直接调用函数h。

函数d、函数f、函数g及函数i没有其他函数进行调用,由此构成基于有效变更函数a的函数调用关系多叉树。其中,函数a为有效变更函数,函数b~函数i为与之对应的调用函数。

通过遍历函数调用关系多叉树与当前微服务项目下确定的接口函数列表进行对比,最后输出函数调用关系多叉树中的所有接口函数,集合所有有效变更函数的函数调用关系多叉树中的接口函数,即得到所有的变更接口函数,进而可以针对变更接口函数进行回归测试。

本发明实施例基于源码变更推导出java函数变更进而确认影响的接口,是通过深度分析源码的方式来确认每次变更影响到的接口范围,比通常基于人的经验、回归文档和回归策略的回归测试,在准确性和效率上都有很大的提升。

图5是本发明实施例提供的电子设备的实体结构示意图。如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communicationsinterface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:获取有效变更函数,所述有效变更函数是指发生有效变更的函数;基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;根据所述回归测试范围进行回归测试。

此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

图6是本发明实施例提供的微服务架构下的精确回归测试装置结构示意图。如图6所示,所述装置包括有效变更函数获取模块10、调用函数获取模块20、回归测试范围确定模块30及回归测试模块40,其中:

有效变更函数获取模块10用于获取有效变更函数,所述有效变更函数是指发生有效变更的函数;

有效变更函数获取模块10首先获取有效变更函数,所述有效变更函数是指发生有效变更的函数。所述有效变更函数为一个或多个。无效的函数变更无需进行回归测试,忽略即可。

调用函数获取模块20用于基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;

进行回归测试时,不仅需要考虑有效变更函数,还需考虑直接及间接调用所述有效变更函数的调用函数。调用函数获取模块20用于基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数。所述有效变更函数为多个时,调用函数获取模块20需要分别获取与相应的有效变更函数对应的所述调用函数。

回归测试范围确定模块30用于根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;

回归测试范围确定模块30集合所有的所述有效变更函数及所述调用函数,筛选出其中的接口函数,即得到所述变更接口函数列表。得到所述变更接口函数列表后,回归测试范围确定模块30即可根据所述变更接口函数列表确定回归测试范围,回归测试的范围包括变更接口函数列表中所有的变更接口函数。

回归测试模块40用于根据所述回归测试范围进行回归测试。

得到回归测试范围后,回归测试模块40即可根据所述回归测试范围进行回归测试。

本发明实施例通过分析源码变更,确定受影响的接口函数列表,进而精确确定回归测试范围,解决了微服务架构下的持续集成过程中软件项目回归测试范围不好确定进而导致的回归测试的成本及效率较低的问题;使得回归测试在准确性和效率上都有很大的提升,显著降低了测试成本。

进一步地,基于上述实施例,所述有效变更函数获取模块10在用于获取有效变更函数时,具体用于:获取发生变更的变更文件;根据所述变更文件获取所述有效变更函数。

有效变更函数获取模块10获取发生变更的变更文件,并根据所述变更文件获取所述有效变更函数。具体地,有效变更函数获取模块10将变更后的文件与变更前的文件进行比对,会识别出文件的所有变更情况;在所有变更中筛选出发生有效变更的函数,即得到所述有效变更函数。

在上述实施例的基础上,本发明实施例通过变更文件获取有效变更函数,提高了有效变更函数的获取效率和准确率,从而提高了回归测试的效率和准确率。

进一步地,基于上述实施例,所述有效变更函数获取模块10在用于根据所述变更文件获取所述有效变更函数时,具体用于:获取所述变更文件中出现的所有有效变更,并将所述所有有效变更划分为函数的变更、类变量的变更和注解的变更;根据所述函数的变更获取第一类变更函数,根据所述类变量的变更获取第二类变更函数,根据所述注解的变更获取第三类变更函数;根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数。

有效变更函数获取模块10获取所述变更文件后,根据所述变更文件获取所述变更文件中出现的所有有效变更,并对所述有效变更进行分类,将每个有效变更划分为函数的变更、类变量的变更或注解的变更。

有效变更函数获取模块10根据所述函数的变更获取第一类变更函数,根据所述类变量的变更获取第二类变更函数,根据所述注解的变更获取第三类变更函数;其中,通过分析类变量的作用域获取所述第二类变更函数,通过分析注解的作用域获取所述第三类变更函数。

有效变更函数获取模块10根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数;所述有效变更函数包括所述第一类变更函数、所述第二类变更函数及所述第三类变更函数。

在上述实施例的基础上,本发明实施例通过将所有有效变更划分为函数的变更、类变量的变更和注解的变更,并根据上述三种变更获取有效变更函数,进一步提高了有效变更函数的获取效率和准确率,从而进一步提高了回归测试的效率和准确率。

进一步地,基于上述实施例,所述有效变更函数获取模块10在用于根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数时,具体用于:将所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数。

所述有效变更函数获取模块10可以在所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数,以避免对相同的有效变更函数重复处理。

在上述实施例的基础上,本发明实施例通过将所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数,进一步提高了回归测试的效率。

进一步地,基于上述实施例,所述调用函数获取模块20在用于基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数时,具体用于:基于所述有效变更函数,通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数;其中,所述函数调用关系多叉树包括所述有效变更函数及所述调用函数。

调用函数获取模块20基于所述有效变更函数,通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数。其中,所述函数调用关系多叉树包括所述有效变更函数及所述调用函数。

在上述实施例的基础上,本发明实施例通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数,保证了调用函数的全面获取,提高了回归测试的准确率。

进一步地,基于上述实施例,所述回归测试范围确定模块30在用于根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表时,具体用于:通过遍历所述函数调用关系多叉树,将所述函数调用关系多叉树中的所述有效变更函数及所述调用函数与当前微服务项目下确定的接口函数列表进行对比,得到每个所述函数调用关系多叉树中的接口函数;所有所述函数调用关系多叉树中的接口函数的集合构成所述变更接口函数列表。

回归测试范围确定模块30通过遍历所述函数调用关系多叉树,将所述函数调用关系多叉树中的所述有效变更函数及所述调用函数与当前微服务项目下确定的接口函数列表进行对比,得到每个所述函数调用关系多叉树中的接口函数;每个所述函数调用关系多叉树中的接口函数为一个或多个;所有所述函数调用关系多叉树中的接口函数的集合构成所述变更接口函数列表。

在上述实施例的基础上,本发明实施例通过遍历函数调用关系多叉树获取变更接口函数列表,进一步提高了回归测试的效率和准确率。

进一步地,基于上述实施例,所述装置还包括评价模块,用于在回归测试模块40根据所述回归测试范围进行回归测试之后,评价回归测试是否覆盖了所述回归测试范围,并给出评价结果。

为保证回归测试的全面可靠,所述装置还包括评价模块。在根据所述回归测试范围进行回归测试之后,评价模块根据测试的完成情况评价回归测试是否覆盖了所述回归测试范围,并给出评价结果。

在上述实施例的基础上,本发明实施例通过在所述根据所述回归测试范围进行回归测试之后评价回归测试是否覆盖了所述回归测试范围,并给出评价结果,提高了回归测试的可靠性。

本发明实施例提供的装置是用于上述方法的,具体功能可参照上述方法流程,此处不再赘述。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。


技术特征:

1.一种微服务架构下的精确回归测试方法,其特征在于,包括:

获取有效变更函数,所述有效变更函数是指发生有效变更的函数;

基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;

根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;

根据所述回归测试范围进行回归测试。

2.根据权利要求1所述的方法,其特征在于,所述获取有效变更函数,具体包括:

获取发生变更的变更文件;

根据所述变更文件获取所述有效变更函数。

3.根据权利要求2所述的方法,其特征在于,所述根据所述变更文件获取所述有效变更函数,具体包括:

获取所述变更文件中出现的所有有效变更,并将所述所有有效变更划分为函数的变更、类变量的变更和注解的变更;

根据所述函数的变更获取第一类变更函数,根据所述类变量的变更获取第二类变更函数,根据所述注解的变更获取第三类变更函数;

根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数。

4.根据权利要求3所述的方法,其特征在于,所述根据所述第一类变更函数、所述第二类变更函数及所述第三类变更函数获取所述有效变更函数,具体包括:

将所述第一类变更函数、所述第二类变更函数及所述第三类变更函数取并集后去重,得到所述有效变更函数。

5.根据权利要求1所述的方法,其特征在于,所述基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数,具体包括:

基于所述有效变更函数,通过构建函数调用关系多叉树,获取所述直接及间接调用所述有效变更函数的调用函数;

其中,所述函数调用关系多叉树包括所述有效变更函数及所述调用函数。

6.根据权利要求5所述的方法,其特征在于,所述根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,具体包括:

通过遍历所述函数调用关系多叉树,将所述函数调用关系多叉树中的所述有效变更函数及所述调用函数与当前微服务项目下确定的接口函数列表进行对比,得到每个所述函数调用关系多叉树中的接口函数;

所有所述函数调用关系多叉树中的接口函数的集合构成所述变更接口函数列表。

7.根据权利要求1所述的方法,其特征在于,在所述根据所述回归测试范围进行回归测试之后,所述方法还包括:

评价回归测试是否覆盖了所述回归测试范围,并给出评价结果。

8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述方法的步骤。

9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。

10.一种微服务架构下的精确回归测试装置,其特征在于,包括:

有效变更函数获取模块,用于获取有效变更函数,所述有效变更函数是指发生有效变更的函数;

调用函数获取模块,用于基于所述有效变更函数,获取直接及间接调用所述有效变更函数的调用函数;

回归测试范围确定模块,用于根据所有的所述有效变更函数及所有的所述调用函数确定变更接口函数列表,根据所述变更接口函数列表确定回归测试范围;

回归测试模块,用于根据所述回归测试范围进行回归测试。

技术总结
本发明实施例提供一种微服务架构下的精确回归测试方法及装置。其中,所述方法包括:获取有效变更函数;基于有效变更函数,获取直接及间接调用有效变更函数的调用函数;根据所有的有效变更函数及所有的调用函数确定变更接口函数列表,根据变更接口函数列表确定回归测试范围;根据回归测试范围进行回归测试。本发明实施例提供的微服务架构下的精确回归测试方法及装置,通过分析源码变更,确定受影响的接口函数列表,进而精确确定回归测试范围,解决了微服务架构下的持续集成过程中软件项目回归测试范围不好确定进而导致的回归测试的成本及效率较低的问题;使得回归测试在准确性和效率上都有很大的提升,显著降低了测试成本。

技术研发人员:陈润泉;方炜;李海传;罗琼;郑海朋;韩梁;刘兆祥;马恺琳;易晓媛
受保护的技术使用者:中国移动通信集团浙江有限公司;中国移动通信集团有限公司
技术研发日:2018.11.30
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-26711.html

最新回复(0)