本公开涉及大数据和金融,尤其涉及一种接口测试方法、装置、设备、介质和程序产品。
背景技术:
1、软件复杂度高、逻辑交互复杂是当前软件工程的一大特征。特别是在当前大型商业软件公司中,软件分工体系高度成熟,在项目为多部门协作、多系统集成的情况下,一个软件要完成其功能,越来越依赖于内外部的逻辑互通和协作。这样的现状不但对软件开发架构提出了新的挑战,同时对软件测试提出了更高的要求。
2、相关技术中,在面临软件中系统需要调用系统外乃至公司外部第三合作方项目的接口的情况下,测试准备工作将变得非常困难,需要测试人员和外部人员联系沟通,导致花费大量时间在协作方的服务准备沟通和数据准备上,并且当出现问题需要反复验证、复现时,由于每次都需要通知下游外部系统提供方配合回退数据环境,导致整体测试流程进一步延长,且由于在需要调用某些第三方公司接口的情况下,测试只能在首次对接时进行,后续本系统更改测试,需要用到外部接口时,外部公司不会提供测试接口环境,导致测试人员无法验证整体功能的完备性。
技术实现思路
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、根据本公开提供的接口测试方法、装置、设备、介质和程序产品,根据与每个目标子流量对应的请求标识,可以从采集库中获取与每个目标子流量对应的链路树,并基于与每个目标子流量对应的链路树,可以对与测试接口对应的测试服务节点的下游服务节点的服务进行查询操作,从而可以得到与目标流量对应的不存在服务列表,并对与每个目标子流量对应的链路树进行标记操作,得到与每个目标子流量对应的链路标记树,再对不存在服务列表中的每个服务进行虚拟注册操作,以得到与不存在服务列表中每个服务对应的虚拟服务,从而可以基于与每个目标子流量对应的链路标记树,并利用与每个服务对应的虚拟服务,对每个目标子流量进行回放测试,得到与测试接口对应的测试结果。由于对不存在服务列表中的每个服务进行虚拟注册操作,可以得到与每个服务对应的虚拟服务,以提供对应下游服务节点的服务,使得免去了测试人员需要进行大量外部沟通的过程,解决了测试过程中需要下游服务在环境中存在但外部系统没有义务在后续不涉及到外部系统接口变动的情况下配合测试的问题,实现了测试请求的可无下游服务数据回退的随意重复测试复现,并且,实现了测试工作的提效,完成了之前对涉及到下游服务节点的测试场景覆盖不全的最后一公里的覆盖。