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

一种微服务接口自动化测试方法、装置及相关设备

文献发布时间:2024-04-18 19:58:53


一种微服务接口自动化测试方法、装置及相关设备

技术领域

本申请涉及互联网技术领域,具体涉及一种微服务接口自动化测试方法、装置及相关设备。

背景技术

微服务(或微服务系统)通常包括服务中心、若干消费者模块以及若干生产者模块,在生产者模块于服务中心发布后,消费者模块和生产者模块之间存在数据交互,即消费者模块可通过预配置的服务接口发送服务请求,以获得生产者模块基于该服务请求反馈的响应信息。

微服务架构中某一模块往往会与其他多个模块进行关联(例如,一个消费者模块与多个生产者模块关联),在该模块出现修改的情况下,测试人员先会基于该模块的修改内容确定测试范围,再根据测试范围对该模块的部分服务接口进行测试,以测试该模块的修改是否符合预期,受人为因素的制约,导致所确定的测试范围可能存在误差,因此出现漏测问题的概率较大,可见,采用现有的方法可能导致测试结果的准确性较差的问题。

发明内容

本申请实施例的目的在于提供一种微服务接口自动化测试方法、装置及相关设备,以解决相关技术在测试微服务架构中的某一模块时,所存在的测试结果准确性低的问题。

为解决上述问题,本申请是这样实现的:

第一方面,本申请实施例提供一种微服务接口自动化测试方法,包括:

获取被测模块的新增测试任务;

根据所述新增测试任务和所述被测模块的已有测试任务,确定所述被测模块的测试任务集,其中,所述被测模块的已有测试任务为所述被测模块在前一次测试中确定的测试任务集,所述测试任务集对应所述被测模块的所有服务接口;

依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

可选的,所述获取被测模块的新增测试任务之前,所述方法还包括:

配置模拟平台,所述模拟平台用于模拟被测模块所依赖的所有生产者服务,所述测试结果包括所述模拟平台基于所述测试任务反馈的响应信息。

可选的,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之后,所述方法还包括:

根据所述测试任务集中每一测试任务对应的测试结果,生成所述测试任务集中每一测试任务对应的标记信息,所述标记信息用于表征所述测试任务是否执行成功;

根据所述标记信息和所述测试任务集中每一测试任务对应的测试结果,生成第一测试报告,其中,所述第一测试报告包括所述被测模块的模块名称、所述被测模块中每一服务接口对应的预期响应结果和实际响应结果。

可选的,所述根据所述标记信息和所述测试任务集中每一测试任务对应的测试结果,生成第一测试报告之后,所述方法还包括:

在所述第一测试报告指示所述测试任务集包括至少一个复测任务的情况下,根据所述标记信息,在所述测试任务集中确定所述至少一个复测任务,所述复测任务用于表征执行失败的测试任务;

依次执行所述至少一个复测任务,获得至少一个复测结果;

根据所述至少一个复测结果,生成第二测试报告。

可选的,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之前,所述方法还包括:

配置被测模块的测试信息,所述测试信息包括:

被测模块的模块名称;

每一测试任务对应的预期响应结果;

每一测试任务对应的响应模板,所述响应模板用于表征所述模拟平台基于所述测试任务反馈的响应数据。

可选的,所述测试信息还包括:

测试任务集对应的数据库初始化信息;

测试任务集对应的数据库重置信息;

每一测试任务对应的请求地址信息;

每一测试任务对应的端口信息;

每一测试任务对应的请求参数;

其中,所述测试任务包括第一身份标识,所述响应模板包括第二身份标识,所述第一身份标识和所述第二身份标识均包括所述被测模块的模块名称。

可选的,所述配置被测模块的测试信息之后,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之前,所述方法还包括:

根据所述数据库初始化信息对所述被测模块关联的第一数据库进行初始化操作,获得第二数据库;

所述依次执行所述测试任务集中每一测试任务,并接收所述模拟平台基于所述测试任务集反馈的响应信息之后,所述方法还包括:

根据所述数据库重置信息对所述第二数据库进行重置操作,获得第三数据库,所述第一数据库的数据和所述第三数据库的数据相同。

可选的,所述配置模拟平台,包括:

在模拟平台的至少两个配置文件中确定目标配置文件,其中,所述目标配置文件用于表征所述被测模块依赖的所有生产者服务对应的配置信息;

根据所述目标配置文件,启动或重启所述模拟平台。

可选的,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果,包括:

获取所述模拟平台的第一启动状态和所述被测模块的第二启动状态;

在所述第一启动状态指示所述模拟平台启动成功或重启成功,且所述第二启动状态指示所述被测模块启动成功的情况下,依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

第二方面,本申请实施例提供了一种微服务接口自动化测试装置,包括:

第一获取模块,用于获取被测模块的新增测试任务;

任务确定模块,用于根据所述新增测试任务和所述被测模块的已有测试任务,确定所述被测模块的测试任务集,其中,所述被测模块的已有测试任务为所述被测模块在前一次测试中确定的测试任务集,所述测试任务集对应所述被测模块的所有服务接口;

测试模块,用于依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

第三方面,本申请实施例还提供一种通信设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;所述处理器,用于读取存储器中的程序实现如前述第一方面所述方法中的步骤。

第四方面,本申请实施例还提供一种可读存储介质,用于存储程序,所述程序被处理器执行时实现如前述第一方面所述方法中的步骤。

在本申请实施例中,在本申请实施例中,在确定被测模块的测试任务集的过程中,可以在被测模块已有的测试任务的基础上添加新增测试任务,从而节省相应的时间成本和人力成本。在确定被测模块的测试任务集之后,由于被测模块的测试任务集对应被测模块的所有服务接口,因此可实现对被测模块的服务接口的全量测试,从而避免了人为因素带来的不利影响,有利于提升测试结果的准确性。

附图说明

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

图1是本申请实施例提供的一种微服务接口自动化测试方法的流程示意图;

图2是本申请实施例提供的一种微服务接口自动化测试系统的结构示意图;

图3是本申请实施例提供的一种用例管理模块的结构示意图;

图4是本申请实施例提供的另一种微服务接口自动化测试方法的流程示意图;

图5是本申请实施例提供的一种微服务接口自动化测试装置的结构示意图;

图6是本申请实施例提供的一种通信设备的结构示意图。

具体实施方式

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

本申请实施例中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,本申请中使用“和/或”表示所连接对象的至少其中之一,例如A和/或B和/或C,表示包含单独A,单独B,单独C,以及A和B都存在,B和C都存在,A和C都存在,以及A、B和C都存在的7种情况。

参见图1,图1是本申请实施例提供的一种微服务接口自动化测试方法的流程示意图,如图1所示,所述微服务接口自动化测试方法包括以下步骤:

步骤101、获取被测模块的新增测试任务。

其中,被测模块可以理解为微服务系统中的某一存在功能变更的消费者模块或生产者模块,所述功能变更可以理解为对模块(指消费者模块或生产者模块)内的已有功能进行了修改,和/或,在模块的已有功能基础上新增功能。

被测模块的新增测试任务可以理解为,测试人员根据被测模块相关功能的新增内容和/或修改内容所配置的若干个测试任务。

需要说明的是,被测模块配置有多个用于与其他模块进行数据交互的服务接口,被测模块任一功能的实现依赖至少一个服务接口,在测试任务配置过程中,测试人员会为被测模块的每一服务接口配置对应的测试任务,因此,被测模块任一功能对应至少一个测试任务。

步骤102、根据所述新增测试任务和所述被测模块的已有测试任务,确定所述被测模块的测试任务集。

其中,所述被测模块的已有测试任务为所述被测模块在前一次测试中确定的测试任务集,所述测试任务集对应所述被测模块的所有服务接口。

如上所述,在本申请实施例中,在确定被测模块的测试任务集的过程中,可以在被测模块已有的测试任务的基础上添加新增测试任务,从而节省相应的时间成本和人力成本。

示例性的,若设定被测模块的每一功能仅依赖一个服务接口,且被测模块前一次测试时包括功能A和功能B,前一次测试中确定的测试任务集包括测试任务a(对应功能A依赖的服务接口)和测试任务b(对应功能B依赖的服务接口),被测模块在本次测试时新增了功能C,且相应配置了测试任务c(对应功能C依赖的服务接口),则被测模块的已有测试任务为测试任务a和测试任务b,被测模块的新增测试任务为测试任务c。

步骤103、依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

如上,在确定被测模块的测试任务集之后,由于被测模块的测试任务集对应被测模块的所有服务接口,因此可实现对被测模块的服务接口的全量测试,从而避免了人为因素带来的不利影响,有利于提升测试结果的准确性。

可选的,所述获取被测模块的新增测试任务之前,所述方法还包括:

配置模拟平台,所述模拟平台用于模拟被测模块所依赖的所有生产者服务,所述测试结果包括所述模拟平台基于所述测试任务反馈的响应信息。

如上所述,通过模拟平台的配置,模拟被测模块所依赖的所有生产者服务,以实现对所述被测模块依赖的所有生产者服务的轻量化配置,进一步降低被测模块的测试难度,提升被测模块的测试效率。

在一些实施方式中,可以通过Mock工具实现模拟平台的配置。

可选的,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之前,所述方法还包括:

配置被测模块的测试信息,所述测试信息包括:

被测模块的模块名称;

每一测试任务对应的预期响应结果;

每一测试任务对应的响应模板,所述响应模板用于表征所述模拟平台基于所述测试任务反馈的响应数据。

进一步的,所述测试信息还包括:

测试任务集对应的数据库初始化信息;

测试任务集对应的数据库重置信息;

每一测试任务对应的请求地址信息;

每一测试任务对应的端口信息;

每一测试任务对应的请求参数;

其中,所述测试任务包括第一身份标识,所述响应模板包括第二身份标识,所述第一身份标识和所述第二身份标识均包括所述被测模块的模块名称。

被测模块的模块名称可理解为被测模块的用于区分其他模块的唯一标识,例如编号001、编号002等;通过配置被测模块的模块名称,以避免被测模块被错误识别的情况,以此保障被测模块的测试过程的顺利执行。

所述预期响应结果可理解为所述测试任务执行时预期获得的响应内容,所述响应模板可理解为模拟平台根据测试任务需要反馈的响应数据,通过对每一测试任务的预期响应结果和响应模板进行关联配置,以对被测模块和模拟平台之间所交互数据进行控制,便利后续的测试任务判定(被测试的服务接口会对模拟平台反馈的响应数据进行转化,以生成实际响应结果,通过比较实际响应结果和预期响应结果的一致性,即可判断测试任务是否执行成功)。

在一些实施方式中,仅在预期响应结果和实际响应结果完全相同时判定测试任务执行成功(如预期响应结果为第一参数且实际响应结果也为第一参数的情况,或者,预期响应结果包括第一参数和第二参数,且实际响应结果也包括第一参数和第二参数的情况)。

在另一些实施方式中,在实际响应结果为预期响应结果的子集时即可判定测试任务执行成功(如预期响应结果包括第一参数和第二参数,实际响应结果为第一参数和/或第二参数的情况)。

测试任务集对应的数据库初始化信息可理解为,用于在执行测试用例之前,初始化数据库的第一操作指令(包括但不限于对数据库中表数据的新增、删除、更新等对应的操作指令);同理,测试任务集对应的数据库重置信息可以理解为,用于在执行测试用例之后,重置数据库的第二操作指令。

举例来说,上述第一操作指令和第二操作指令可以为SQL指令。

通过初始化数据库以及重置数据库的方式,保障数据库内数据在测试用例执行前后的数据一致性,避免数据库内的数据干扰测试用例的顺利执行,进一步提升所获得测试结果的准确性。

测试任务对应的请求地址信息可理解为,被测模块的服务请求预期发送的目标地址,测试任务对应的端口信息可理解为,被测模块的服务请求预期发送的数据传输通道,测试任务对应的请求参数可理解为,被测模块的服务请求所携带的测试参数;示例性的,前述请求地址信息可以为统一资源定位符(Uniform Resource Locator,URL),前述端口信息可以为8080或8000。

通过配置请求地址信息、端口信息以及测试参数的方式,对测试任务所对应服务接口的传输地址、传输时所应用的传输通道以及传输参数进行指示,以避免传输地址错误/传输通道未开启/传输参数错误导致测试任务执行失败的情况发生,从而进一步提升所获得测试结果的准确性。

通过设置所述第一身份标识和所述第二身份标识均包括所述被测模块的模块名称,便利测试人员对测试任务和响应模板的管理,以使测试人员可根据被测模块的模块名称快速定位被测模块的测试任务和响应模板。

另外,测试任务的执行过程可以理解为,被测模块通过对应端口(基于端口信息确定)向模拟平台发送服务请求(通过请求地址信息和请求参数),模拟平台基于该服务请求确定对应的响应模板,并根据响应模板指引向被测模块反馈响应数据,被测模块对应的服务接口将响应数据转化为实际响应结果,基于预期响应结果和实际响应结果确定测试任务是否执行成功。

可选的,所述配置被测模块的测试信息之后,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之前,所述方法还包括:

根据所述数据库初始化信息对所述被测模块关联的第一数据库进行初始化操作,获得第二数据库;

所述依次执行所述测试任务集中每一测试任务,并接收所述模拟平台基于所述测试任务集反馈的响应信息之后,所述方法还包括:

根据所述数据库重置信息对所述第二数据库进行重置操作,获得第三数据库,所述第一数据库的数据和所述第三数据库的数据相同。

如上所述,先通过在测试任务执行前对数据库初始化的方式,将预先配置的第一数据库变更为适配测试用例执行的第二数据库,确保测试用例的顺利执行;再通过在测试任务执行后对数据库重置化的方式,将适配测试用例执行的第二数据库重置为第三数据库,也即将第二数据库还原成第一数据库,以避免预先配置的第一数据库的数据受测试用例影响而出现缺失或错误,进而干扰下一次测试任务的情况出现,这能保障下一次测试用例的顺利执行,提升微服务系统中若干个模块在迭代测试过程中的稳定性。

可选的,所述配置模拟平台,包括:

在模拟平台的至少两个配置文件中确定目标配置文件,其中,所述目标配置文件用于表征所述被测模块依赖的所有生产者服务对应的配置信息;

根据所述目标配置文件,启动或重启所述模拟平台。

至少两个配置文件中的每一个配置文件均唯一对应服务中心内的一个模块,配置文件用于表征其所对应的模块依赖的所有生产者服务的配置信息。通过配置文件的设置,便利测试人员对服务中心内每一模块依赖的所有生产者服务的配置信息的管理。

在一些实施方式中,可以根据配置文件对应的中心模块的模块名称生成配置文件的身份标识,在确定被测模块的情况下,可根据被测模块的模块名称在至少两个配置文件对应的至少两个身份标识中进行检索,并将对应身份标识包括被测模块的模块名称的配置文件确定目标配置文件。

如上所述,在确定目标配置文件后,若模拟平台处于关闭状态,则可根据目标配置文件在预设服务环境中启动模拟平台;若模拟平台处于启动状态,则可根据目标配置文件对模拟平台进行重启(即应用目标配置文件覆盖模拟平台正在使用的另一配置文件)。

可选的,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果,包括:

获取所述模拟平台的第一启动状态和所述被测模块的第二启动状态;

在所述第一启动状态指示所述模拟平台启动成功或重启成功,且所述第二启动状态指示所述被测模块启动成功的情况下,依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

如上所述,在前述测试信息配置完成后,即会进行模拟平台的启动操作或重启操作、以及被测模块的启动操作(指将被测模块部署到测试环境中),这之后,通过获取模拟平台的第一启动状态和被测模块的第二启动状态,并在所述第一启动状态指示所述模拟平台启动成功或重启成功,且所述第二启动状态指示所述被测模块启动成功的情况下,依次执行所述测试任务集中每一测试任务,进而获得所述测试任务集中每一测试任务对应的测试结果,避免模拟平台启动失败(或重启失败),和/或,被测模块启动失败干扰测试任务的正常执行。

需要说明的是,模拟平台的启动操作或重启操作可以先于被测模块的启动操作实现,也可以晚于被测模块的启动操作实现,还可以与被测模块的启动操作同步实现,本申请实施例对此上述两个操作的实现次序并不加以限定。

在所述第一启动状态指示所述模拟平台启动失败(或重启失败),和/或,所述第二启动状态指示所述被测模块启动失败的情况下,则需要对失败情况进行分析,并基于分析结果对应调整模拟平台和/或被测模块的相关配置,随后再次启动(或重启)模拟平台以及被测模块。

示例性的,第一启动状态和第二启动状态的判定(指判定模拟平台是否启动或重启成功、以及判定被测模块是否启动成功)可通过人工检查的方式实现,也可以通过预设置的判定函数实现,本申请实施例对此并不加以限定。

可选的,所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之后,所述方法还包括:

根据所述测试任务集中每一测试任务对应的测试结果,生成所述测试任务集中每一测试任务对应的标记信息,所述标记信息用于表征所述测试任务是否执行成功;

根据所述标记信息和所述测试任务集中每一测试任务对应的测试结果,生成第一测试报告,其中,所述第一测试报告包括所述被测模块的模块名称、所述被测模块中每一服务接口对应的预期响应结果和实际响应结果。

进一步的,所述根据所述标记信息和所述测试任务集中每一测试任务对应的测试结果,生成第一测试报告之后,所述方法还包括:

在所述第一测试报告指示所述测试任务集包括至少一个复测任务的情况下,根据所述标记信息,在所述测试任务集中确定所述至少一个复测任务,所述复测任务用于表征执行失败的测试任务;

依次执行所述至少一个复测任务,获得至少一个复测结果;

根据所述至少一个复测结果,生成第二测试报告。

如上所述,通过标记信息对测试任务集中测试成功的测试任务和测试失败的测试任务(即复测任务)进行区分,以便针对同一测试任务集进行多次测试的过程中,跳过测试任务集中测试成功的测试任务,提升测试效率。

另外,通过第一测试报告和第二测试报告的设置,对每一次测试涉及的测试任务、以及测试任务对应的测试结果(成功或失败)进行记录,以便后续数据回溯操作和人工核查操作,进一步提升测试结果的准确性。

需要说明的是,在所述第一测试报告指示所述测试任务集不包括复测任务的情况下(指测试任务集内的所有测试任务均测试成功的情况),则结束本次测试过程,不再进行复测操作。

在一些实施方式中,标记信息可以设置为前述响应模板的模板状态,所述模板状态的取值包括未调用状态和已调用状态两种,每一测试任务对应的响应模板的模板状态均为未调用状态,在测试任务执行成功的情况下,可将该测试任务对应的响应模板的模板状态由未调用状态变更未已调用状态,在测试任务执行失败的情况下,则不会对该测试任务对应的响应模板的模板状态进行变更。

为方便理解,示例说明如下:

本申请实施例还提供了一种微服务接口自动化测试系统,用于辅助测试RobotFramework框架下的Dubbo微服务接口,如图2所示,所述微服务接口自动化测试系统包括任务调度模块,用例管理模块,Mock平台以及数据存储模块,微服务注册中心。

其中,任务调度模块用于将被测模块和Mock平台(可理解为前述模拟平台)自动部署到测试环境,并在部署成功后启动被测模块对应的测试用例,以完成对被测模块的全量回归测试。

用例管理模块用于维护被测模块对应的测试用例,并基于测试用例的执行情况生成测试报告。其中,维护测试用例可理解为配置测试用例中各个测试任务的相关测试内容、以及配置测试用例中各个响应模板的调用次序。

Mock平台用来模拟所述被测模块依赖的所有生产者服务,并根据测试用例中对应每一测试任务的响应模板,为被测模块反馈相适配的响应数据。

数据存储模块用于存储测试报告、任务调度信息和用例管理信息等内容。

微服务注册中心,用于实现被测模块和Mock平台在微服务系统中的服务注册。

进一步的,如图3所示,前述用例管理模块可以包括数据层、驱动层、流程层以及数据记录层。

其中,数据层中的用例数据可理解为用于生成测试用例的请求报文(包括测试用例ID、测试接口的统一资源定位符、接口方法、预期响应结果和需要Mock的模板),配置数据可理解为被测模块的IP和端口等公共配置参数,前置/后置结构查询语言(StructuredQuery Language,SQL)数据可理解为前述数据库初始化信息和数据库重置信息,即通过初始化或重置数据库的方式,便利测试用例的重复执行。

驱动层中的公共组件驱动可理解为与数据库操作相关的函数库(例如对应mysql、redis、telnet等架构的新增操作、删除操作、更新操作以及查询操作的函数),自定义扩展驱动可理解为与微服务应用相关的函数库(例如服务请求发送函数、用例执行结果判定函数)。

流程层中的业务流程驱动关键字可理解为,对前述配置数据、用例数据、公共组件驱动以及自定义扩展驱动进行拼接,以形成测试用例,所述测试用例至少包括测试环境预处理(指初始化数据库以及根据配置数据部署被测模块)、请求报文的构造和发送(指基于用例数据构造请求报文,调用自定义扩展驱动中的服务请求发送函数发送所构造的请求报文)、响应结果的解析和断言(指接收Mock平台根据请求报文反馈的响应数据、并根据响应数据转换后的实际响应结果和配置数据中的预期响应结果判定测试任务是否执行成功)。

数据记录层用于存储执行结果(可理解为测试结果)、执行日志(可理解为测试用例的执行日志)以及模拟响应数据(响应模板)。

前述Mock平台可以通过一个统一的模拟接口,继承微服务系统中所有需要发布的生产者服务接口,并使用自定义方法实现该模拟接口的响应数据返回的方式。在测试任务执行前,Mock平台会根据被测模块的模块名称确定目标配置文件,并根据目标配置文件进行启动或重启,以模拟被测模块依赖的生产者服务,待Mock平台通过微服务注册中心在服务中心注册成功后,即可执行测试用例。

示例性的,测试用例的某一测试任务过程可以为:被测模块向Mock平台发送请求报文,Mock平台根据请求报文确定对应的响应模板,并根据所确定响应模板向被测模块反馈响应数据,被测模块的被测接口根据响应数据转化后获得实际响应结果,被测模块基于实际响应结果和预期响应结果,判定当前测试任务是否执行成功。

需要说明的是,测试用例的测试结果除了记录测试用例中每一测试任务的执行情况(如测试任务的请求报文、预期响应结果、响应模板、响应数据、实际响应结果等)外,还会记录关联被测模块的多个响应模板的调用次序。其中,响应模板与被测模块关联可理解为,响应模板的身份标识包括有被测模块的模块名称。

需要指出的是,Mock平台接收到的被测模块发送的请求报文是无状态的,通过记录多个响应模板的调用次序,以使Mock平台可以在未配置无状态请求报文的业务处理逻辑的情况下,基于多个响应模板的调用次序,向被测模块反馈与请求报文相适配的响应数据(即在接收到第一个请求报文时,Mock平台调用位于模板序列第一位的响应模板进行数据反馈;在接收到第二个请求报文时,Mock平台调用位于模板序列第二位的响应模板进行数据反馈,后续响应模板调用情况依次类推,以使Mock平台在处理请求报文时跳过业务处理的相关操作,直接进行响应数据的反馈操作),这能进一步缩减本申请所述自动化测试方法需要的人力成本和时间成本。

如图4所示,被测模块的测试用例的执行流程可以为,先配置被测模块的相关信息,所述相关信息包括被测模块的模块名称、请求地址信息和端口信息。

基于被测模块的模块名称配置响应模板,每一响应模板对应被测模块依赖的生产者服务的一个响应动作,响应模板可通过json的格式在数据库中进行存储,并通过可视化操作的方式完成配置(例如通过设置一个用于响应模板配置的web界面,以便利测试人员对响应模板的配置操作)。

配置被测模块的测试用例,所述测试用例包括数据库初始化任务(测试任务执行前)、数据库重置任务(测试任务执行后)以及多个测试任务(每一测试任务对应一个响应模板)。

实际应用中,多个测试任务会根据预设的执行次序统一配置于一个测试函数中,测试人员可以仅配置一个测试函数,并通过更新测试函数中的多个测试任务和多个测试任务的执行次序的方式,来满足不同被测模块的测试需求;测试人员人可以配置多个测试函数,以满足不同被测模块的测试需求。

在测试用例配置完成后,将测试用例的执行脚本存储于预设文件中,并以被测模块的模块名称为该文件的进行命名。

Mock平台会为微服务系统中每个模块维护一个配置文件,该配置文件中存储有对应模块所依赖的所有模块的配置信息,每一模块对应的配置文件的文件名均包括该模块的模块名称。

示例性的,应用中可以使用集成工具Jenkins来辅助完成任务调度模块的功能实现。

参见图5,图5是本申请实施例提供的一种微服务接口自动化测试装置200,包括:

第一获取模块201,用于获取被测模块的新增测试任务;

任务确定模块202,用于根据所述新增测试任务和所述被测模块的已有测试任务,确定所述被测模块的测试任务集,其中,所述被测模块的已有测试任务为所述被测模块在前一次测试中确定的测试任务集,所述测试任务集对应所述被测模块的所有服务接口;

测试模块203,用于依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

可选的,所述微服务接口自动化测试装置200还包括:

平台配置模块,用于配置模拟平台,所述模拟平台用于模拟被测模块所依赖的所有生产者服务,所述测试结果包括所述模拟平台基于所述测试任务反馈的响应信息。

可选的,所述微服务接口自动化测试装置200还包括:

标记模块,用于根据所述测试任务集中每一测试任务对应的测试结果,生成所述测试任务集中每一测试任务对应的标记信息,所述标记信息用于表征所述测试任务是否执行成功;

报告生成模块,用于根据所述标记信息和所述测试任务集中每一测试任务对应的测试结果,生成第一测试报告,其中,所述第一测试报告包括所述被测模块的模块名称、所述被测模块中每一服务接口对应的预期响应结果和实际响应结果。

可选的,所述微服务接口自动化测试装置200还包括:

第一复测模块,用于在所述第一测试报告指示所述测试任务集包括至少一个复测任务的情况下,根据所述标记信息,在所述测试任务集中确定所述至少一个复测任务,所述复测任务用于表征执行失败的测试任务;

第二复测模块,用于依次执行所述至少一个复测任务,获得至少一个复测结果;

所述报告生成模块还用于,根据所述至少一个复测结果,生成第二测试报告。

可选的,所述微服务接口自动化测试装置200还包括:

信息配置模块,用于在依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之前,配置被测模块的测试信息,所述测试信息包括:

被测模块的模块名称;

每一测试任务对应的预期响应结果;

每一测试任务对应的响应模板,所述响应模板用于表征所述模拟平台基于所述测试任务反馈的响应数据。

可选的,所述测试信息还包括:

测试任务集对应的数据库初始化信息;

测试任务集对应的数据库重置信息;

每一测试任务对应的请求地址信息

每一测试任务对应的端口信息;

每一测试任务对应的请求参数;

其中,所述测试任务包括第一身份标识,所述响应模板包括第二身份标识,所述第一身份标识和所述第二身份标识均包括所述被测模块的模块名称。

可选的,所述微服务接口自动化测试装置200还包括:

数据库维护模块,用于在配置被测模块的测试信息之后,在所述依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果之前,根据所述数据库初始化信息对所述被测模块关联的第一数据库进行初始化操作,获得第二数据库;

所述数据库维护模块还用于,在所述依次执行所述测试任务集中每一测试任务,并接收所述模拟平台基于所述测试任务集反馈的响应信息之后,根据所述数据库重置信息对所述第二数据库进行重置操作,获得第三数据库,所述第一数据库的数据和所述第三数据库的数据相同。

可选的,所述平台配置模块包括:

文件确定单元,用于在模拟平台的至少两个配置文件中确定目标配置文件,其中,所述目标配置文件用于表征所述被测模块依赖的所有生产者服务对应的配置信息;

平台配置单元,用于根据所述目标配置文件,启动或重启所述模拟平台可选的,所述测试模块203包括:

状态获取单元,用于获取所述模拟平台的第一启动状态和所述被测模块的第二启动状态;

测试单元,用于在所述第一启动状态指示所述模拟平台启动成功或重启成功,且所述第二启动状态指示所述被测模块启动成功的情况下,依次执行所述测试任务集中每一测试任务,获得所述测试任务集中每一测试任务对应的测试结果。

所述微服务接口自动化测试装置200能够实现本申请实施例中图1方法实施例的各个过程,以及达到相同的有益效果,为避免重复,这里不再赘述。

本申请实施例还提供一种通信设备。请参见图6,通信设备可以包括处理器301、存储器302及存储在存储器302上并可在处理器301上运行的程序3021。

程序3021被处理器301执行时可实现图6对应的方法实施例中的任意步骤及达到相同的有益效果,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例方法的全部或者部分步骤是可以通过程序指令相关的硬件来完成,所述的程序可以存储于一可读取介质中。

本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时可实现上述图1对应的方法实施例中的任意步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。

本申请实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或终端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

以上所述是本申请实施例的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

技术分类

06120116511869