回归测试方法、系统、装置以及计算机存储介质与流程

文档序号:20917457发布日期:2020-05-29 13:43阅读:151来源:国知局
回归测试方法、系统、装置以及计算机存储介质与流程

本发明涉及计算机技术领域,具体涉及一种测试方法和测试装置以及计算机存储介质。



背景技术:

跟随着互联网的快速发展的脚步,应用系统数量日益增长,进而需要各种系统之间的交互才能完成整个操作,关系就转换成需要和外部各个业务系统独立出来的子微服务之间的交互。

随着依赖接口的增多,每次功能迭代的开发,比较重要的问题就是要保证对原有的流程的正确性。有以下两条思路:

方法一:测试人员进行大量的回归测试,验证迭代上线的小版本不影响老流程的结果。该方法的缺点是随着依赖外部微服务提供的接口数量和接口迭代频率的增长,回归的工作量越来越大,大多数工作都是重复的工作,而且如果存在多分支并行测试,每条分支都要进行回归测试,不能保证测试的场景是否覆盖老流程调用的所有外部微服务的接口。此方法需要投入大量的人力,投入往往大于产出。

方法二:采用mock(模拟)测试方式,即构造测试场景和入参出参数据,验证所有外部接口是否能达到预期的返回。该方法的缺点是不能保证覆盖率达到比较高的比率。

综上,业界需要一种更好的回归测试方法。



技术实现要素:

有鉴于此,本发明实施例提供一种回归测试方法,根据稳定的场景日志生成回归用例,并且通过触发器触发回归测试,以解决现有技术中的问题。

根据本发明实施例的第一方面,提供一种回归测试方法,包括:

根据场景日志生成回归用例;

设置回归测试的触发器,当触发器触发时,驱动业务系统执行特定场景的业务逻辑,并记录回归日志;

比较所述回归用例和所述回归日志,记录比较结果。

可选地,所述特定场景的回归用例开始于一个入口接口,所述驱动业务系统执行特定场景的业务逻辑包括:从所述回归用例中获得所述入口接口的入参值,并基于所述入参值调用所述入口接口。

可选地,景的业务逻辑中包括对多个接口的调用,所述记录回归日志包括:记录所述多个接口的入参值,

则所述比较所述回归用例和所述回归日志包括:将所述回归日志记录的多个接口的入参值与所述回归用例中相应接口的入参值比较。

可选地,所述多个接口包括本地接口和外部接口,所述多个外部接口设置有回放按钮,当所述回放按钮启动后,不调用对应的外部接口,使用所述回归用例中的外部接口的出参值驱动业务逻辑。

可选地,所述回归用例中采用日志标识标识一个特定场景下的一种实际调用过程。

可选地,所述根据场景日志生成回归用例包括:

从所述场景日志中获得满足要求的部分场景日志;

将所述部分场景日志中提取接口信息存储到数据库表中。

可选地,还包括:补全所述回归用例所需的信息。

根据本发明实施例的第二方面,提供一种回归测试系统,包括:

用例制作模块,用于根据场景日志生成回归用例;

触发器模块,用于设置回归测试的触发器,当触发器触发时,驱动业务系统执行特定场景的业务逻辑,并记录回归日志;

比较模块,用于比较所述回归用例和所述回归日志,记录比较结果。

可选地,所述特定场景的回归测试开始于一个入口接口,所述触发器模块包括:从所述回归用例中获得所述入口接口的入参值,并基于所述入参值调用所述入口接口。

可选地,所述特定场景的业务逻辑中包括对多个接口的调用,所述记录回归日志包括:记录所述多个接口的入参值,

所述比较模块包括:将所述回归日志记录的多个接口的入参值与所述回归用例中相应接口的入参值比较。

可选地,所述多个接口包括本地接口和外部接口,所述回归测试系统还包括:回放模块,用于为每个外部接口设置有一个回放按钮,当所述回放按钮启动后,不调用对应的外部接口,使用所述回归用例中的外部接口的出参值驱动业务逻辑。

根据本发明实施例的第三方面,提供一种回归测试装置,包括:

存储器,用于存储计算机指令;

处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现上述回归测试方法。

根据本发明实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述回归测试方法。

本发明实施例具有以下优点或有益效果:基于原打分函数和排序因子构建第二打分函数,根据基础数据集优化权重值,无需手工地为不同类目配置不同的修正项参数,从而提高了搜索模型的构建效率。进一步地,分类目优化权重值,提高优化效率。

本发明的优选实施例具有以下优点或有益效果:根据稳定的场景日志生成回归用例,并且通过触发器触发回归测试,既无需测试人员制造大量的回归用例,也无需测试人员介入太多,从而达到了节省人力的目的。而且,由于场景日志是生产环境中产生的日志,能够在不增加人力的基础上,确保回归测试覆盖比较高的比率。

本发明的优选实施例具有以下优点或有益效果:设置对应于外部接口的回放按钮,每个回放按钮启动时,不调用对应的外部接口,使用回归用例中的出参值驱动业务逻辑,从而实现将业务系统的业务逻辑和外部接口的业务逻辑分开,便于定位问题。

附图说明

通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本发明实施例的回归测试方法的流程图;

图2是现有技术中的一个示例性的业务系统的业务逻辑的流程图;

图3是本发明实施例的回归测试方法的生成回归用例的流程图;

图4是本发明实施例的一个示例性的存储回归用例的数据库表结构的示意图;

图5是本发明实施例的回归测试方法的流程图;

图6是本发明实施例的回归测试系统的结构图;

图7是根据本发明实施例的回测测试装置的结构图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。

图1是本发明实施例的回归测试方法的流程图。当业务系统的代码发生改变时,需要基于本实施例提供的回归测试方法进行测试。所述方法包括以下步骤。

在步骤s101中,根据场景日志生成回归用例。

在步骤s102中,设置回归测试的触发器,当触发器触发时,驱动业务系统执行特定场景的业务逻辑,并记录回归日志。

在步骤s103中,比较回归用例和回归日志,记录比较结果。

场景日志由业务系统在生产环境中生成。场景日志包括多个场景下的日志。同一场景日志为基于同一请求触发的业务代码记录的多条日志。业务系统一般采用采用日志标识标识一个特定场景下的一种实际调用过程。

在本实施例中,解析、加工业务系统在生产环境下产生的场景日志以得到多个回归用例。当触发器触发回归测试时,驱动业务系统从回归用例中获取某个场景的回归用例,并基于该回归用例执行特定场景的业务逻辑,并记录回归日志,比较回归日志和回归用例,比较结果即为回归测试结果。

根据本发明实施例,根据稳定的场景日志生成回归用例,并且通过触发器触发回归测试,既无需测试人员制造大量的回归用例,也无需测试人员介入太多,从而达到了节省人力的目的。而且,由于场景日志是生产环境中产生的日志,能够在不增加人力的基础上,确保回归测试覆盖比较高的比率。

图2是现有技术中的一个示例性的业务系统的业务逻辑的流程图。在该场景中,涉及发起系统201、业务系统202和被调用的外部接口203。

在步骤s211中,发起系统201发起请求。

在步骤s212中,拼装接口1入参,并调用外部接口1。

在步骤s213中,接收接口1的出参,并进行处理。

在步骤s214中,继续其他逻辑

在步骤s217中,拼装接口2入参,调用外部接口2。

在步骤s216中,接收接口2的出参并进行处理。

在步骤s217中,继续其他逻辑后返回参数。

在本示例中,业务系统在一个场景中需要调用多个接口,这些接口包括本地接口和外部接口。业务系统可以在场景日志中按照预先设定的规范记录这些接口的调用信息,以便于其他应用解析场景日志。当然场景日志不但可以记录各种接口的调用信息,还可以记录注释信息、变量值信息等等。

在一个示例中,按照日志标识+空格+系统签名+逗号+参数类型+冒号+具体的参数对象信息记录一条场景日志。一个示例性的场景日志如下所示。

ewszy8flgoqndiq-provider#method0,入参:xxxxxx

ewszy8flgoqndiq–consumer1#method1,入参:xxxxxx

ewszy8flgoqndiq–consumer1#method1,出参:xxxxxx

ewszy8flgoqndiq–consumer2#method2,入参:xxxxxx

ewszy8flgoqndiq–consumer2#method2,出参:xxxxxx

ewszy8flgoqndiq-provider#method0,出参:xxxxxx

其中,ewszy8flgoqndiq为日志标识,provider#method0和consumer1#method1表示接口名称,provider表示业务系统的名称,为发起场景的系统,consumer为被调系统的名称。

图3是本发明实施例的回归测试方法的生成回归用例的流程图。具体包括以下步骤。

在步骤s301中,从场景日志中获得满足要求的部分场景日志。

在步骤s302中,将部分场景日志中提取接口信息存储到数据库表中。

在步骤s303中,补全回归用例所需的信息。

在本实施例中,可以基于接口调用日志的规范从场景日志提取接口调用日志。而且为了确保同一个场景的接口调用日志信息放在一起,可以采用正则表达式匹配接口调用日志的日志标识,并输出匹配成功的接口调用日志。输出的接口调用日志可以存储到消息队列中。这些接口调用日志可以部分或全部用于生成回归用例。可选地,可以设定一个阈值,设定用于生成回归用例的日志在原日志中的比例,比如说只选取日志队列里的80%,或者只选取队列的前10m生成回归用例,其他的直接清空丢弃。可选地,采用一个独立的进程或线程上报接口调用日志到消息队列中,采用另一个独立的进程或线程批量解析消息队列中的接口调用日志并存储到数据库表中。在将日志上报到消息队列时,或将日志存储到数据库表时,还应该补全回归用例所需的信息,例如填充业务系统的应用名称,创建时间信息等。此外,也提供了手工上传的方式,使用户可以选择日志文件上传。

在一个示例中,用于存储回归用例的数据库表为两个,一个表存储业务系统(即provider)的多个场景下的接口信息,包括业务系统的接口名(类名+方法名)、入参值和出参值。另一个表存储被调系统(即consumer)的接口信息,包括外部接口的入参值和出参值。这两个表的数据结构相同,如图4所示。图4是本发明实施例的一个示例性的存储回归用例的数据库表结构的示意图。参见图4,所述表结构包括日志标识、应用名称、接口名、方法名、参数类型(入参、出参、返回参数等)、参数值(入参值、出参值、返回值)。

从上面的描述可理解到,回归用例中可以仅包含接口信息,第一个接口为入口接口。而根据本发明实施例,将回归用例中的入口接口的入口值发送给业务系统中的入口接口,入口接口则可以自动执行并生成其余接口的出参值,将这些出参值和回归用例中记录的出参值比较,即能得到回归测试结果。

图5是本发明实施例的回归测试方法的流程图。具体包括以下步骤。

在步骤s500中,是否启动回放按钮。如果是,则触发回归测试,即执行步骤s501-s513。

在步骤s501中,回归测试开始,选取日志标识。该日志标识对应于一个特定场景下的一种实际调用过程。

在步骤s502中,接口1入参拼装。即从步骤s501中获取的对应的回归用例中获取接口1的入参值。

在步骤s503中,是否启动回放按钮。如果是,则执行步骤s504,否则基于步骤s502获得的入参值调用接口1。

在步骤s504中,判断入参是否与回归用例一致。如果是,则执行步骤s505,否则执行步骤s513。

在步骤s505中,接口1出参处理。

在步骤s506中,继续其他逻辑。

在步骤s507中,接口2入参拼装。即从步骤s501中获取的对应的回归用例中获取接口2的入参值。

在步骤s508中,是否启动回放按钮。如果是,则执行步骤s509,否则基于步骤s507获得的入参值调用接口2。

在步骤s509中,入参是否与回归用例一致。如果是,则执行步骤s510,否则执行步骤s513。

在步骤s510中,接口2出参处理。

在步骤s511中,重复n次。

在步骤s512中,比较出参值。

在步骤s513中,记录校验结果。

在本实施例中,为了能够将业务系统的业务逻辑和外部接口的业务逻辑分开,特别设置了回放按钮,包括一个总的回放按钮和多个对应于多个外部接口的回放按钮,当总的回放按钮开启时,启动回归测试,当对应于每个外部接口的回放按钮开启时,采用回归用例中的外部接口的出参值驱动业务系统的业务逻辑正常执行,由此通过控制总的回放按钮确定是否启动回归测试以及控制对应于每个外部接口的回放按钮控制确定在本次回归测试中是否屏蔽外部接口。由于外部接口的维护人员和业务系统的维护人员一般并不相同,因此通过屏蔽部分或全部外部接口,能够确定出现的问题是否为业务系统自身的代码问题。而且,当回归测试中的所有外部接口的出参值均以回归用例对应外部接口的出参值替换时,不会实际和外部接口进行交互,在模拟了当时的场景调用基础上不会对外部接口进行影响(尤其是对于有写操作类型的外部接口)。在本实施例中,判断入参值和回归用例中的相应入参值不一致时,记录校验结果,在重复n次接口调用时,比较出参值,并记录校验结果。通过阅读校验结果,测试人员能够缩小业务系统中有问题的代码范围。

在一个实施例中,可以将回归测试的相应功能设置在一个插件中,该插件嵌入到业务系统内部,如果修改了业务系统的代码,就可以及时开启回归测试。

在一个实施例中,展示校验结果。并且基于校验结果对业务系统打分.如果校验结果显示入参值的不一致次数很多时,则增加本次回归测试的分值,表示业务系统的出错概率较高,在之后的回归测试中也需要重点关注,从而对之后的回归测试形成反哺。

图6是本发明实施例的回归测试系统的结构图,包括用例制作模块601、触发器模块602和比较模块603。

用例制作模块601根据稳定的场景日志生成回归用例。

触发器模块602设置回归测试的触发器,当触发器触发时,驱动业务系执行特定场景的业务逻辑,并记录回归日志。

比较模块603用于比较回归用例和回归日志,记录比较结果。

在一个实施例中,特定场景开始于一个入口接口,触发器模块602包括:从回归用例中获得入口接口的入参值,并基于入参值调用入口接口。

在一个实施例中,所述特定场景的业务逻辑中包括对多个接口的调用,所述记录回归日志包括:记录多个接口的入参值,

所述比较模块包括:将所述回归日志记录的多个接口的入参值与所述回归用例中相应接口的入参值比较。

在一个实施例中,所述回归测试系统还包括:回放模块,用于设置回放按钮,当回放按钮启动后,不调用对应的外部接口,使用回归用例中的外部接口的出参值驱动业务逻辑。

在一个实施例中,回归测试系统还包括回归模块,用于针对多个外部接口中的每一个外部接口,设置回放按钮,所述回放按钮启动时,不调用对应的外部接口,使用回归用例中的出参值驱动业务逻辑。

图7是根据本发明实施例构建搜索模型的装置的结构图。图7示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。

参考图7,该装置包括通过总线连接的处理器701、存储器702和输入输出设备703。存储器702包括只读存储器(rom)和随机访问存储器(ram),存储器702内存储有执行系统功能所需的各种计算机指令和数据,处理器701从存储器702中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分。存储器702还存储有以下的计算机指令以完成本发明实施例的装置规定的操作:根据场景日志生成回归用例;设置回归测试的触发器,当触发器触发时,业务系统从所述回归用例中获取特定场景的入参值,基于所述入参值驱动业务逻辑,并记录回归日志;比较所述回归用例和所述回归日志,记录比较结果

相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述方法所规定的操作。

附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。

系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用java、c/c++/c#、sql等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。

根据本发明的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过internet连接的多个pc机、pc服务器、刀片机、超级计算机等。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1