一种微服务测试方法及装置与流程

文档序号:31333414发布日期:2022-08-31 07:50阅读:101来源:国知局
一种微服务测试方法及装置与流程

1.本技术涉及计算机技术领域,特别涉及一种微服务测试方法及装置。


背景技术:

2.目前,分布式环境下的微服务之间会存在关联关系,因此,对微服务进行开发测试过程中,如果与其关联的微服务出现问题,可能会导致开发测试无法执行。
3.因此,如何保证可靠地进行微服务的开发测试成为问题。


技术实现要素:

4.本技术提供如下技术方案:
5.本技术一方面提供一种微服务测试方法,包括:
6.与目标微服务的目标提供方建立连接,调用所述目标提供方中所述目标微服务对应的接口,目标微服务为与待测试微服务关联的服务;
7.若接收到所述目标提供方返回的接口调用失败信息,则向契约测试平台发送所述接口的调用请求;
8.接收所述契约测试平台返回的第一响应结果,所述第一响应结果为所述契约测试平台基于预先约定的接口契约,确定出的与所述调用请求匹配的接口响应结果;
9.若所述第一响应结果符合设定要求,则基于所述第一响应结果,对所述待测试微服务进行测试;
10.若所述第一响应结果不符合所述设定要求,则确定数据库中是否存在历史模拟服务代码,所述历史模拟服务代码为在当前时刻之前基于调用代码生成的,所述调用代码为用于执行数据消费方的业务的代码;
11.若存在,则获取所述历史模拟服务代码,执行所述历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,基于所述第二响应结果对所述待测试微服务进行测试;
12.若不存在,则基于所述调用代码,生成当前模拟服务代码,执行所述当前模拟服务代码,以模拟所述目标微服务执行得到所述接口的第三响应结果,基于所述第三响应结果对所述待测试微服务进行测试。
13.可选的,所述与目标微服务的目标提供方建立连接,包括:
14.从注册中心中获取目标微服务的提供方的信息;
15.若所述目标微服务的提供方存在多个,则基于所述目标微服务的提供方的信息,从所述目标微服务的多个提供方中选择一个符合负载均衡策略的提供方,将选择出的提供方确定为所述目标微服务的目标提供方;
16.与所述目标微服务的目标提供方建立连接。
17.可选的,所述方法还包括:
18.定时检测所述契约测试平台的可用性,得到检测结果;
19.所述向契约测试平台发送所述接口的调用请求,包括:
20.获取所述检测结果中最新检测结果,若所述检测结果为所述契约测试平台可用,向所述契约测试平台发送所述接口的调用请求。
21.可选的,所述方法还包括:
22.若所述检测结果为所述契约测试平台不可用,触发执行所述确定数据库中是否存在历史模拟服务代码的步骤。
23.可选的,所述方法还包括:
24.在需要调用与所述接口关联的接口的情况下,确定所述接口的响应结果的提供方类型;
25.基于与所述提供方类型对应的调用方式,调用与所述接口关联的接口。
26.一种微服务测试装置,包括:
27.第一调用模块,用于与目标微服务的目标提供方建立连接,调用所述目标提供方中所述目标微服务对应的接口,目标微服务为与待测试微服务关联的服务;
28.发送模块,用于若接收到所述目标提供方返回的接口调用失败信息,则向契约测试平台发送所述接口的调用请求;
29.接收模块,用于接收所述契约测试平台返回的第一响应结果,所述第一响应结果为所述契约测试平台基于预先约定的接口契约,确定出的与所述调用请求匹配的接口响应结果;
30.第一测试模块,用于若所述第一响应结果符合设定要求,则基于所述第一响应结果,对所述待测试微服务进行测试;
31.第一确定模块,用于若所述第一响应结果不符合所述设定要求,则确定数据库中是否存在历史模拟服务代码,所述历史模拟服务代码为在当前时刻之前基于调用代码生成的,所述调用代码为用于执行数据消费方的业务的代码;
32.第二测试模块,用于若存在历史模拟服务代码,则获取所述历史模拟服务代码,执行所述历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,基于所述第二响应结果对所述待测试微服务进行测试;
33.第三测试模块,用于若不存在历史模拟服务代码,则基于所述调用代码,生成当前模拟服务代码,执行所述当前模拟服务代码,以模拟所述目标微服务执行得到所述接口的第三响应结果,基于所述第三响应结果对所述待测试微服务进行测试。
34.可选的,所述第一调用模块与目标微服务的目标提供方建立连接的过程,具体包括:
35.从注册中心中获取目标微服务的提供方的信息;
36.若所述目标微服务的提供方存在多个,则基于所述目标微服务的提供方的信息,从所述目标微服务的多个提供方中选择一个符合负载均衡策略的提供方,将选择出的提供方确定为所述目标微服务的目标提供方;
37.与所述目标微服务的目标提供方建立连接。
38.可选的,所述装置还包括:
39.检测模块,用于定时检测所述契约测试平台的可用性,得到检测结果;
40.所述发送模块,具体用于:
41.获取所述检测结果中最新检测结果,若所述检测结果为所述契约测试平台可用,向所述契约测试平台发送所述接口的调用请求。
42.可选的,所述装置还包括:
43.触发模块,用于若所述检测结果为所述契约测试平台不可用,触发执行所述确定数据库中是否存在历史模拟服务代码的步骤。
44.可选的,所述装置还包括:
45.第二确定模块,用于在需要调用与所述接口关联的接口的情况下,确定所述接口的响应结果的提供方类型;
46.第二调用模块,用于基于与所述提供方类型对应的调用方式,调用与所述接口关联的接口。
47.在本技术中,通过与目标微服务的目标提供方建立连接,调用目标提供方中目标微服务对应的接口,若接收到目标提供方返回的接口调用失败信息,则向契约测试平台发送接口的调用请求,保证在目标提供方无法返回响应结果的情况下,由契约测试平台返回响应结果,在契约测试平台返回的响应结果不符合设定要求的情况下,基于历史模拟服务代码或当前模拟服务代码返回响应结果,保证响应结果获取的可靠性,进而保证对待测试微服务进行测试的可靠性。
附图说明
48.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
49.图1是本技术实施例1提供的一种微服务测试方法的流程示意图;
50.图2是本技术实施例2提供的一种微服务测试方法的流程示意图;
51.图3是本技术实施例3提供的一种微服务测试方法的流程示意图;
52.图4是本技术提供的一种微服务测试装置的逻辑结构示意图;
53.图5是是本技术提供的一种电子设备的结构示意图。
具体实施方式
54.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
55.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
56.参照图1,为本技术实施例1提供的一种微服务测试方法的流程示意图,该方法可应用于服务消费方,如图1所示,该方法可以包括但并不局限于以下步骤:
57.步骤s11、与目标微服务的目标提供方建立连接,调用所述目标提供方中所述目标微服务对应的接口,目标微服务为与待测试微服务关联的服务。
58.本实施例中,与目标微服务的目标提供方建立连接,可以包括但不局限于:
59.s111、从注册中心中获取目标微服务的提供方的信息。
60.目标微服务的提供方的信息,可以包括但不局限于:目标微服务的提供方的访问地址,如,ip地址。
61.s112、若所述目标微服务的提供方存在多个,则基于所述目标微服务的提供方的信息,从所述目标微服务的多个提供方中选择一个符合负载均衡策略的提供方,将选择出的提供方确定为所述目标微服务的目标提供方。
62.s113、与所述目标微服务的目标提供方建立连接。
63.所述目标微服务对应的接口,可以理解为:用于实现所述目标微服务中其中一个功能的代码。
64.步骤s12、若接收到所述目标提供方返回的接口调用失败信息,则向契约测试平台发送所述接口的调用请求。
65.可以理解的是,若未接收到目标提供方返回的接口调用失败信息,则接收目标提供方返回的接口响应结果即可,并基于目标提供方返回的接口响应结果,对待测试微服务进行测试。
66.步骤s13、接收所述契约测试平台返回的第一响应结果,所述第一响应结果为所述契约测试平台基于预先约定的接口契约,确定出的与所述调用请求匹配的接口响应结果。
67.预先约定的接口契约可以理解为:由目标提供方和服务消费方之间预先约定的接口契约。预先约定的接口契约可以用于指示接口调用请求与接口响应结果之间的对应关系。
68.步骤s14、确定所述第一响应结果是否符合设定要求。
69.设定要求可以根据需要进行设置,在本技术中不做限制。如,设定要求可以包括但不局限于:设定格式和/或设定类型。
70.若是,则执行步骤s15;若否,则执行步骤s16。
71.步骤s15、基于所述第一响应结果,对所述待测试微服务进行测试。
72.步骤s16、确定数据库中是否存在历史模拟服务代码,所述历史模拟服务代码为在当前时刻之前基于调用代码生成的,所述调用代码为用于执行数据消费方的业务的代码。
73.本实施例中,在当前时刻之前基于调用代码生成历史模拟服务代码,可以包括但不局限于:
74.确定所述调用代码中的上下文、请求输入信息和请求输出信息,基于所述调用代码的上下文、请求输入信息和请求输出信息,生成历史模拟服务代码。
75.历史模拟服务代码可以为但不局限于:groovy语言的历史模拟服务代码。
76.若存在,则执行步骤s17;若不存在,则执行步骤s18。
77.步骤s17、获取所述历史模拟服务代码,执行所述历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,基于所述第二响应结果对所述待测试微服务进行测试。
78.在数据库中存在历史模拟服务代码的情况下,获取历史模拟服务代码,执行历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,可以保证第二响应结果确定的效率,进而保证对待测试微服务进行测试的效率。
79.步骤s18、基于所述调用代码,生成当前模拟服务代码,执行所述当前模拟服务代码,以模拟所述目标微服务执行得到所述接口的第三响应结果,基于所述第三响应结果对所述待测试微服务进行测试。
80.本实施例中,可以采用与在当前时刻之前基于调用代码生成历史模拟服务代码相同的方式,基于所述调用代码,生成当前模拟服务代码,具体过程在此不再赘述。
81.当前模拟服务代码可以为但不局限于:groovy语言的当前模拟服务代码。
82.可以理解的是,当前模拟服务代码在执行过之后,可以基于当前模拟服务代码更新数据库中的历史模拟服务代码。
83.在本实施例中,通过与目标微服务的目标提供方建立连接,调用目标提供方中目标微服务对应的接口,若接收到目标提供方返回的接口调用失败信息,则向契约测试平台发送接口的调用请求,保证在目标提供方无法返回响应结果的情况下,由契约测试平台返回响应结果,在契约测试平台返回的响应结果不符合设定要求的情况下,基于历史模拟服务代码或当前模拟服务代码返回响应结果,保证响应结果获取的可靠性,进而保证对待测试微服务进行测试的可靠性。
84.作为本技术另一可选实施例,要是对上述实施例1描述的微服务测试方法的扩展方案,参照图2,为本技术提供的一种微服务测试方法实施例2的流程示意图,该方法可以包括但不局限于以下步骤:
85.步骤s21、与目标微服务的目标提供方建立连接,调用所述目标提供方中所述目标微服务对应的接口,目标微服务为与待测试微服务关联的服务。
86.步骤s21的详细过程可以参见实施例1中步骤s11的相关介绍,在此不再赘述。
87.步骤s22、定时检测所述契约测试平台的可用性,得到检测结果。
88.步骤s23、若接收到所述目标提供方返回的接口调用失败信息,则获取所述检测结果中最新检测结果,若所述检测结果为所述契约测试平台可用,向所述契约测试平台发送所述接口的调用请求。
89.步骤s23为实施例1中步骤s12的一种具体实施方式。
90.步骤s24、接收所述契约测试平台返回的第一响应结果,所述第一响应结果为所述契约测试平台基于预先约定的接口契约,确定出的与所述调用请求匹配的接口响应结果;
91.步骤s25、确定所述第一响应结果是否符合设定要求。
92.若是,则执行步骤s26;若否,则执行步骤s27。
93.步骤s26、基于所述第一响应结果,对所述待测试微服务进行测试。
94.步骤s27、确定数据库中是否存在历史模拟服务代码,所述模拟服务代码为在当前时刻之前基于调用代码生成的,所述调用代码为用于执行数据消费方的业务的代码;
95.若存在,则执行步骤s28;若不存在,则执行步骤s29。
96.步骤s28、获取所述历史模拟服务代码,执行所述历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,基于所述第二响应结果对所述待测试微服务进行测试。
97.步骤s29、基于所述调用代码,生成当前模拟服务代码,执行所述当前模拟服务代码,以模拟所述目标微服务执行得到所述接口的第三响应结果,基于所述第三响应结果对所述待测试微服务进行测试。
98.步骤s24-s29的详细过程可以参见实施例1中步骤s13-s18的相关介绍,在此不再赘述。
99.本实施例中,若所述检测结果为所述契约测试平台不可用,则可以触发执行步骤s27,保证对待测试微服务进行测试的可靠性。
100.本实施例中,通过与目标微服务的目标提供方建立连接,调用目标提供方中目标微服务对应的接口,定时检测所述契约测试平台的可用性,得到检测结果,若接收到目标提供方返回的接口调用失败信息,则获取所述检测结果中最新检测结果,若所述检测结果为所述契约测试平台可用,向契约测试平台发送所述接口的调用请求,保证在目标提供方无法返回响应结果的情况下,由契约测试平台返回响应结果,在契约测试平台返回的响应结果不符合设定要求的情况下,基于历史模拟服务代码或当前模拟服务代码返回响应结果,保证响应结果获取的可靠性,进而保证对待测试微服务进行测试的可靠性。
101.并且,通过定时检测所述契约测试平台的可用性,得到检测结果,获取所述检测结果中最新检测结果,若所述检测结果为所述契约测试平台可用,向契约测试平台发送所述接口的调用请求,可以避免执行无效的调用操作,提高测试效率。
102.作为本技术另一可选实施例,要是对上述实施例1描述的微服务测试方法的扩展方案,参照图3,为本技术提供的一种微服务测试方法实施例3的流程示意图,该方法可以包括但不局限于以下步骤:
103.步骤s31、与目标微服务的目标提供方建立连接,调用所述目标提供方中所述目标微服务对应的接口,目标微服务为与待测试微服务关联的服务。
104.步骤s32、若接收到所述目标提供方返回的接口调用失败信息,则向契约测试平台发送所述接口的调用请求。
105.步骤s33、接收所述契约测试平台返回的第一响应结果,所述第一响应结果为所述契约测试平台基于预先约定的接口契约,确定出的与所述调用请求匹配的接口响应结果。
106.步骤s34、确定所述第一响应结果是否符合设定要求。
107.设定要求可以根据需要进行设置,在本技术中不做限制。如,设定要求可以包括但不局限于:设定格式和/或设定类型。
108.若是,则执行步骤s35;若否,则执行步骤s36。
109.步骤s35、基于所述第一响应结果,对所述待测试微服务进行测试。
110.步骤s36、确定数据库中是否存在历史模拟服务代码,所述历史模拟服务代码为在当前时刻之前基于调用代码生成的,所述调用代码为用于执行数据消费方的业务的代码。
111.若存在,则执行步骤s37;若不存在,则执行步骤s38。
112.步骤s37、获取所述历史模拟服务代码,执行所述历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,基于所述第二响应结果对所述待测试微服务进行测试。
113.步骤s38、基于所述调用代码,生成当前模拟服务代码,执行所述当前模拟服务代码,以模拟所述目标微服务执行得到所述接口的第三响应结果,基于所述第三响应结果对所述待测试微服务进行测试。
114.步骤s31-s38的详细过程可以参见实施例1中步骤s11-s18的相关介绍,在此不再赘述。
115.步骤s39、在需要调用与所述接口关联的接口的情况下,确定所述接口的响应结果的提供方类型。
116.确定所述接口的响应结果的提供方类型,可以包括:
117.若所述接口的响应结果为第一响应结果,则确定所述接口的响应结果的提供方类型为契约测试平台;
118.若所述接口的响应结果为第二响应结果,则确定所述接口的响应结果的提供方类型为历史模拟服务代码;
119.若所述接口的响应结果为第三响应结果,则确定所述接口的响应结果的提供方类型为当前模拟服务代码。
120.步骤s310、基于与所述提供方类型对应的调用方式,调用与所述接口关联的接口。
121.若提供方类型为契约测试平台,则向契约测试平台发送与所述接口关联的接口的调用请求;
122.若提供方类型为历史模拟服务代码或当前模拟服务代码,则通过执行历史模拟服务代码或当前模拟服务代码,以模拟目标微服务执行得到与所述接口关联的接口的响应结果。
123.在得到与所述接口关联的接口的响应结果之后,基于响应结果对待测试服务进行测试。
124.本实施例中,通过与目标微服务的目标提供方建立连接,调用目标提供方中目标微服务对应的接口,若接收到目标提供方返回的接口调用失败信息,则向契约测试平台发送接口的调用请求,保证在目标提供方无法返回响应结果的情况下,由契约测试平台返回响应结果,在契约测试平台返回的响应结果不符合设定要求的情况下,基于历史模拟服务代码或当前模拟服务代码返回响应结果,保证响应结果获取的可靠性,进而保证对待测试微服务进行测试的可靠性。
125.并且,通过确定提供方类型,使接口之间调用的方式一致,保证该接口及与该接口关联的接口的调用的连续性,进一步提高测试的可靠性。
126.接下来对本技术提供的一种微服务测试装置进行介绍,下文介绍的微服务测试装置与上文介绍的微服务测试方法可相互对应参照。
127.请参见图4,微服务测试装置包括:第一调用模块100、发送模块200、接收模块300、第一测试模块400、第一确定模块500、第二测试模块600和第三测试模块700。
128.第一调用模块100,用于与目标微服务的目标提供方建立连接,调用所述目标提供方中所述目标微服务对应的接口,目标微服务为与待测试微服务关联的服务;
129.发送模块200,用于若接收到所述目标提供方返回的接口调用失败信息,则向契约测试平台发送所述接口的调用请求;
130.接收模块300,用于接收所述契约测试平台返回的第一响应结果,所述第一响应结果为所述契约测试平台基于预先约定的接口契约,确定出的与所述调用请求匹配的接口响应结果;
131.第一测试模块400,用于若所述第一响应结果符合设定要求,则基于所述第一响应结果,对所述待测试微服务进行测试;
132.第一确定模块500,用于若所述第一响应结果不符合所述设定要求,则确定数据库
中是否存在历史模拟服务代码,所述历史模拟服务代码为在当前时刻之前基于调用代码生成的,所述调用代码为用于执行数据消费方的业务的代码;
133.第二测试模块600,用于若存在历史模拟服务代码,则获取所述历史模拟服务代码,执行所述历史模拟服务代码,以模拟所述目标微服务执行得到所述接口的第二响应结果,基于所述第二响应结果对所述待测试微服务进行测试;
134.第三测试模块700,用于若不存在历史模拟服务代码,则基于所述调用代码,生成当前模拟服务代码,执行所述当前模拟服务代码,以模拟所述目标微服务执行得到所述接口的第三响应结果,基于所述第三响应结果对所述待测试微服务进行测试。
135.本实施例中,所述第一调用模块100与目标微服务的目标提供方建立连接的过程,具体可以包括:
136.从注册中心中获取目标微服务的提供方的信息;
137.若所述目标微服务的提供方存在多个,则基于所述目标微服务的提供方的信息,从所述目标微服务的多个提供方中选择一个符合负载均衡策略的提供方,将选择出的提供方确定为所述目标微服务的目标提供方;
138.与所述目标微服务的目标提供方建立连接。
139.本实施例中,微服务测试装置还可以包括:
140.检测模块,用于定时检测所述契约测试平台的可用性,得到检测结果;
141.所述发送模块200,具体可以用于:
142.获取所述检测结果中最新检测结果,若所述检测结果为所述契约测试平台可用,向契约测试平台发送所述接口的调用请求。
143.本实施例中,微服务测试装置还可以包括:
144.触发模块,用于若所述检测结果为所述契约测试平台不可用,触发执行所述确定数据库中是否存在历史模拟服务代码的步骤。
145.微服务测试装置还可以包括:
146.第二确定模块,用于在需要调用与所述接口关联的接口的情况下,确定所述接口的响应结果的提供方类型;
147.第二调用模块,用于基于与所述提供方类型对应的调用方式,调用与所述接口关联的接口。
148.与上述本技术提供的一种微服务测试方法相对应的,本技术还提供了应用该微服务测试方法的电子设备实施例。
149.如图5所示的为本技术提供的一种电子设备的结构示意图,该电子设备可以包括以下结构:
150.存储器10和处理器20。
151.存储器10,用于至少存储一组指令集;
152.处理器20,用于调用并执行存储器10中的所述指令集,通过执行指令集执行实施例1-3中任意一个实施例所介绍的微服务测试方法。
153.需要说明的是,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
154.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
155.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本技术时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
156.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。
157.以上对本技术所提供的一种微服务测试方法及装置进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1