CN113535571A - 基于沙盒的微服务测试方法、装置、设备和存储介质 - Google Patents
基于沙盒的微服务测试方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113535571A CN113535571A CN202110838758.2A CN202110838758A CN113535571A CN 113535571 A CN113535571 A CN 113535571A CN 202110838758 A CN202110838758 A CN 202110838758A CN 113535571 A CN113535571 A CN 113535571A
- Authority
- CN
- China
- Prior art keywords
- sandbox
- determining
- address
- request
- private
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于沙盒的微服务测试方法,能够解决现有技术中系统资源利用率低以及沙盒部署效率低的问题,所述方法包括:当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒;获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务;确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路;根据所述请求链路确定所述被测微服务的测试结果。本发明还公开了一种基于沙盒的微服务测试装置、一种计算机设备和一种计算机可读存储介质。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种基于沙盒的微服务测试方法、装置、计算机设备和计算机可读存储介质。
背景技术
目前,大多数产品会采用微服务架构进行部署,在对采用微服务架构部署的产品进行测试时,传统的测试模型的弊端便显露出来,比如,传统的测试模型无法满足测试的质量要求和效率要求。在此背景下孵化出了基于Kubernetes集群的沙盒测试模型,该沙盒测试模型基于云原生部署方式解决了传统测试模式下的诸多问题。
然而,发明人在研究的过程中发现,在对微服务架构的产品进行测试过程中,现有的沙盒测试模型通常会将该产品的某个待测微服务和该待测微服务的上下游微服务部署在一个沙盒内,当需要对该产品的N个待测微服务测试时,需要部署N个沙盒,且有些沙盒内可能需要部署多个相同的上下游微服务,存在系统资源利用率低且沙盒部署效率低的缺陷。
发明内容
本发明的目的在于提供了一种基于沙盒的微服务测试方法、装置、计算机设备和计算机可读存储介质,能够解决现有技术中系统资源利用率低以及沙盒部署效率低的问题。
本发明的一个方面提供了一种基于沙盒的微服务测试方法,所述方法包括:当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒;获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务;确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路;根据所述请求链路确定所述被测微服务的测试结果。
可选地,所述确定所述被测微服务所属的私有沙盒的步骤包括:解析出所述测试请求的请求头;检测所述请求头中是否携带有沙盒标签;若携带,将与所述请求头携带的沙盒标签相关联的沙盒作为所述私有沙盒;若不携带,解析出所述测试请求的源地址,查询与所述源地址相关联的沙盒标签,并将与查询到的沙盒标签相关联的沙盒作为所述私有沙盒。
可选地,所述确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路,包括:解析出所述测试请求的目的地址;根据所述目标地址确定用于接收所述测试请求的沙盒;当用于接收所述测试请求的沙盒为所述私有沙盒时,将所述目的地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述目的地址;当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址。
可选地,所述根据所述目标地址确定用于接收所述测试请求的沙盒的步骤包括:当所述目的地址为IP地址时,确定所述目的地址下的进程集;确定与所述进程集相关联的沙盒标签;将与确定出的沙盒标签相关联的沙盒作为用于接收所述测试请求的沙盒。
可选地,所述确定所述目的地址下的进程集的步骤包括:确定承载有所述私有沙盒和所述公共沙盒的集群空间;判断所述目的地址所指向的空间是否位于所述集群空间内;若位于,在所述集群空间内确定所述目的地址下的进程集。
可选地,所述根据所述目标地址确定用于接收所述测试请求的沙盒的步骤包括:当所述目的地址为域名地址时,在所述集群空间内获取所述私有沙盒中的各个微服务的域名地址;判断获取的域名地址中是否包含所述目的地址;若包含,确定用于接收所述测试请求的沙盒为所述私有沙盒。
可选地,所述根据所述目标地址确定用于接收所述测试请求的沙盒的步骤还包括:若获取的域名地址中不包含所述目的地址,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的访问入口;判断获取的访问入口中是否包含所述目的地址;若包含,确定用于接收所述测试请求的沙盒为所述公共沙盒。
可选地,所述当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址的步骤包括:当用于接收所述测试请求的沙盒为所述公共沙盒时,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的服务名称和实际地址;从获取的服务名称中确定出与所述目的地址相关联的服务名称;从获取的实际地址中筛选出与确定出的服务名称相关联的实际地址,将筛选出的实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至筛选出的实际地址。
可选地,所述从获取的服务名称中确定出与所述目的地址相关联的服务名称的步骤包括:当所述目的地址为IP地址时,确定所述进程集上挂载的微服务;从所述获取的服务名称中确定出与所述进程集上挂载的微服务同名的服务名称。
可选地,所述从获取的服务名称中确定出与所述目的地址相关联的服务名称的步骤包括:当所述目的地址为域名地址时,从所述获取的访问入口中筛选出包含所述目的地址的访问入口;从所述获取的服务名称中确定出与筛选出的访问入口相关联的服务名称。
本发明的另一个方面提供了一种基于沙盒的微服务测试装置,所述装置包括:第一确定模块,用于当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒;获取模块,用于获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务;第二确定模块,用于确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路;第三确定模块,用于根据所述请求链路确定所述被测微服务的测试结果。
本发明的再一个方面提供了一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的基于沙盒的微服务测试方法。
本发明的又一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现上述任一实施例所述的基于沙盒的微服务测试方法。
本发明提供的基于沙盒的微服务测试方法,提供了两种类型的沙盒:私有沙盒和公共沙盒,在对被测微服务进行测试时,只需依赖于提前配置好的公共沙盒即可完成测试目的,且测试每个被测微服务时所依赖的其他微服务只需在公共沙盒中布置一次,不同被测微服务所依赖的相同微服务无需重复布置,然后通过测试请求在私有沙盒和/或公共沙盒中的请求链路即可确定最终的测试结果,解决了现有技术中系统资源利用率低以及沙盒部署效率低的问题。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例一提供的基于沙盒的微服务测试方法的流程图;
图2示出了本发明实施例一提供的第一沙盒和第二沙盒交互的示意图;
图3示出了本发明实施例一提供的基于沙盒的微服务测试方案的示意图;
图4示出了本发明实施例二提供的基于沙盒的微服务测试装置的框图;
图5示出了本发明实施例三提供的适于实现基于沙盒的微服务测试方法的计算机设备的框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
实施例一
为了解决现有技术中存在的问题,本发明提供了两种类型的沙盒:私有沙盒和公共沙盒,其中,每个微服务系统对应若干私有沙盒和一个公共沙盒,每个私有沙盒中包含若干被测微服务,公共沙盒中包含对应的私有沙盒中各个被测微服务所依赖的其他微服务,如公共沙盒中包含对应的私有沙盒中各个被测微服务的上游微服务和/或下游微服务。比如,微服务系统下的每个私有沙盒中包括该微服务系统的不稳定版本的微服务,如前台微服务和/或中台微服务;微服务系统下的公共沙盒中包括该微服务系统的稳定版本的微服务,如后台微服务,该公共沙盒用于提供给该微服务系统下的所有私有沙盒使用。基于上述结构,在对同一微服务系统下的不同被测微服务测试的过程中,只需依赖于提前配置好的公共沙盒即可完成测试目的,每个被测微服务对应的上游微服务和下游微服务只需在公共沙盒中布置一次,且不同被测微服务对应的相同上游微服务以及相同下游微服务也无需重复布置,解决了现有技术中系统资源利用率低以及沙盒部署效率低的问题。
图1示出了本发明实施例一提供的基于沙盒的微服务测试方法的流程图,如图1所示,该基于沙盒的微服务测试方法包括步骤S1~步骤S4,其中:
步骤S1,当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒。
当某个产品以微服务架构的模式部署时,该产品便是一个微服务系统,该产品的若干功能模块便是微服务系统中的一个微服务。本实施例中,当需要对微服务系统的某个微服务测试时,可以将该微服务称为被测微服务,并将该被测微服务部署在一个私有沙盒中,将该被测微服务依赖的上游微服务和/或下游微服务部署在公共沙盒中,其中,私有沙盒中可以包括若干被测微服务,公共沙盒中包括的微服务除了属于对应的微服务系统之外,还可以包含对应微服务系统之外的微服务,只要是被测微服务所依赖的上下游微服务,均可被部署在公共沙盒中。如图2所示,同一微服务系统下对应两个私有沙盒和一个公共沙盒,这两个私有沙盒均可访问公共沙盒中的微服务。
可选地,微服务系统的每个微服务均被部署在Kubernetes集群中,每个微服务对应多个进程集(进程集又称为pod),每个进程集具有一个endpoint(即IP地址和端口),每个微服务还具有唯一的service(即服务名称)和ingress(即访问入口)。在实施测试之前,可以创建私有沙盒,将被测微服务的某个进程集部署至私有沙盒中,并在该进程集上注入对应私有沙盒的沙盒标签;创建公共沙盒,确定被测微服务的上游微服务和/或下游微服务,将确定出的每个微服务对应的任一进程集部署至公共沙盒。
接收到用于测试被测微服务的测试请求包括:在测试过程的第一跳中,接收测试请求的出栈信号;在测试过程的第N跳中,接收其他微服务发送的测试请求,其中,N大于等于2。具体地,在测试过程中的第一跳,由私有沙盒中的某个微服务生成测试请求,当检测到测试请求的出栈信号时,拦截该测试请求,并确定被测微服务所属的私有沙盒,如:确定与测试请求的源IP地址相关联的进程集,查询与该进程集关联的沙盒标签,然后将沙盒标签注入请求头,将查询到的沙盒标签对应的沙盒作为该被测微服务所属的私有沙盒,在后续测试过程中还会透传请求头,以便后续根据请求头携带的沙盒标签确定被测微服务所属的私有沙盒。在测试过程的第N跳,私有沙盒或者公共沙盒中的某个微服务接收其他微服务发送过来的测试请求,然后确定被测微服务所属的私有沙盒,如:从请求头中获取沙盒标签,然后将与请求头携带的沙盒标签相关联的沙盒作为被测微服务所属的私有沙盒。具体地,步骤S1包括步骤S11~步骤S13,或者步骤S1包括步骤S11、步骤S12和步骤S14,其中:
步骤S11,解析出所述测试请求的请求头;
步骤S12,检测所述请求头中是否携带有沙盒标签;
步骤S13,若携带,将与所述请求头携带的沙盒标签相关联的沙盒作为所述私有沙盒;
步骤S14,若不携带,解析出所述测试请求的源地址,查询与所述源地址相关联的沙盒标签,并将与查询到的沙盒标签相关联的沙盒作为所述私有沙盒,将查询到的沙盒标签注入所述请求头。
其中,测试请求可以是对被测微服务测试过程中的任何一种请求,如访问请求、查询请求、遍历请求或者读取请求等等。
步骤S2,获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务。
具体地,所述被测微服务属于目标微服务系统,所述公共沙盒内存储有在测试所述目标微服务系统下的各个被测微服务时所依赖的其他微服务,比如,所述公共沙盒内存储有在测试所述目标微服务系统下的各个被测微服务时所依赖的上游微服务和/或下游微服务。
在Kubernetes集群中部署了多个微服务系统对应的私有沙盒和公共沙盒,本实施例需要获取与步骤S1的私有沙盒共同服务于同一微服务系统的公共沙盒。
步骤S3,确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路。
在布置每个微服务时,会在Kubernetes集群对应的注册中心写入微服务对应的所有IP地址,当一个微服务访问另一个微服务时,会从注册中心获取该微服务的其中一个IP地址,然后根据该IP地址向对应微服务发送请求。由于每个微服务对应多个IP地址,当一个沙盒中的微服务访问另一个沙盒中的微服务时,从注册中心拿到的IP地址不一定在被请求访问的沙盒内,因此本实施例需要根据目的地址找到用于接收测试请求的实际地址,将该实际地址作为请求链路中的一个节点,并将测试请求发送至实际地址。
具体地,步骤S3包括步骤S31~步骤S33,或者步骤S3包括步骤S31、步骤S32和步骤S34,其中:
步骤S31,解析出所述测试请求的目的地址;
步骤S32,根据所述目标地址确定用于接收所述测试请求的沙盒;
步骤S33,当用于接收所述测试请求的沙盒为所述私有沙盒时,将所述目的地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述目的地址,透传所述测试请求的请求头;
步骤S34,当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址,透传所述测试请求的请求头。
当用于接收测试请求的沙盒为私有沙盒时,表明目的地址就在私有沙盒内,直接将测试请求发送至目的地址即可保证请求链路的连通。当用于接收测试请求的沙盒为公共沙盒时,不确定目的地址是否就位于公共沙盒内,有可能目的地址是用于接收测试请求的微服务的其他IP地址,为了确保链路的畅通,需根据目的地址确定公共沙盒中用于接收测试请求的实际地址,然后将测试请求发送至该实际地址。
可选地,当测试请求中的目的地址为IP地址或者域名地址时,步骤S32存在不同的处理逻辑,具体地:
方案一(目的地址为IP地址)
步骤S32包括步骤S321~步骤S323,其中:
步骤S321,当所述目的地址为IP地址时,确定所述目的地址下的进程集;
步骤S322,确定与所述进程集相关联的沙盒标签;
步骤S323,将与确定出的沙盒标签相关联的沙盒作为用于接收所述测试请求的沙盒。
步骤S321包括:
确定承载有所述私有沙盒和所述公共沙盒的集群空间;
判断所述目的地址所指向的空间是否位于所述集群空间内;
若位于,在所述集群空间内确定所述目的地址下的进程集。
当目的地址为IP地址时,可以先判断目的地址是否位于Kubernetes集群内,若不位于,表征该测试请求可能另作他用,直接将测试请求发送至目的地址即可;若位于,进一步确定目的地址下的进程集关联的沙盒标签,若确定出的沙盒标签与请求头中的沙盒标签一致,则与确定出的沙盒标签相关联的沙盒为私有沙盒,表明用于接收测试请求的沙盒为私有沙盒;若确定出的沙盒标签与请求头中的沙盒标签不一致,则与确定出的沙盒标签相关联的沙盒为公共沙盒,表明用于接收测试请求的沙盒为公共沙盒。
方案二(目的地址为域名地址)
步骤S32包括步骤S321~步骤S323,其中:
步骤S321,当所述目的地址为域名地址时,在所述集群空间内获取所述私有沙盒中的各个微服务的域名地址;
步骤S322,判断获取的域名地址中是否包含所述目的地址;
步骤S323,若包含,确定用于接收所述测试请求的沙盒为所述私有沙盒。
步骤S32还可包括步骤S321、步骤S322以及步骤S324~步骤S326,其中:
步骤S324,若获取的域名地址中不包含所述目的地址,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的访问入口;
步骤S325,判断获取的访问入口中是否包含所述目的地址;
步骤S326,若包含,确定用于接收所述测试请求的沙盒为所述公共沙盒。
当目的地址为域名地址时,私有沙盒中的每个微服务均对应有一个内部解析的域名地址,若这些域名地址中包含目的地址,则确定用于接收测试请求的沙盒为私有沙盒;若这些域名地址中不包含目的地址,进一步判断用于接收测试请求的沙盒是否为公共沙盒,具体地:每个微服务的访问入口的配置信息中包含对应微服务的域名地址,由于公共沙盒中每个微服务的访问入口都预先在私有沙盒中备份了,因此可判断备份的访问入口中是否包含目的地址,若包含,确定用于接收测试请求的沙盒为公共沙盒,若不包含,表征该测试请求可能另作他用,直接将测试请求发送至目的地址即可。
可选地,步骤S34包括步骤S341~步骤S343,其中:
步骤S341,当用于接收所述测试请求的沙盒为所述公共沙盒时,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的服务名称和实际地址;
步骤S342,从获取的服务名称中确定出与所述目的地址相关联的服务名称;
步骤S343,从获取的实际地址中筛选出与确定出的服务名称相关联的实际地址,将筛选出的实际地址作为所述请求链路的终点,并将所述测试请求发送至筛选出的实际地址。
实际地址指的是部署在公共沙盒中的进程集的IP地址,当用于接收测试请求的沙盒为公共沙盒时,只有将测试请求发送至该位于公共沙盒内的IP地址,才能够保证请求链路的畅通。
可选地,当测试请求中的目的地址为IP地址或者域名地址时,步骤S342存在不同的处理逻辑,具体地:
方案一(目的地址为IP地址)
步骤S342包括:
当所述目的地址为IP地址时,确定所述进程集上挂载的微服务;
从所述获取的服务名称中确定出与所述进程集上挂载的微服务同名的服务名称。
为了提高运行效率,一般情况下,在Kubernetes集群上为每个微服务开启了多个进程集,每个进程集均可独立运行一个微服务,无论是哪个进程集,均可确定出该进程集上挂载的微服务,从备份的服务名称中确定出与该进程集上挂载的微服务同名的服务名称,将公共沙盒中与确定出的服务名称对应的微服务作为用于接收测试请求的微服务。
方案二(目的地址为域名地址)
步骤S342包括:
当所述目的地址为域名地址时,从所述获取的访问入口中筛选出包含所述目的地址的访问入口;
从所述获取的服务名称中确定出与筛选出的访问入口相关联的服务名称。
访问入口的配置信息中包含对应微服务的域名地址,从备份的访问入口筛选出包含该目的地址的访问入口,然后在私有沙盒中确定与该访问入口关联的服务名称,将公共沙盒中与确定出的服务名称对应的微服务作为用于接收测试请求的微服务。
步骤S4,根据所述请求链路确定所述被测微服务的测试结果。
在确定出请求链路后,测试过程中该请求链路中各个节点处的测试参数也可以获知,根据请求链路上各个节点的测试参数可以确定被测微服务最终的测试结果。
如图3所示,基于沙盒的微服务测试方案的整个流程包括步骤A1~A15,其中:
步骤A1,创建私有沙盒,在私有沙盒中部署被测微服务的进程集,在每个进程集上注入该私有沙盒的沙盒标签,并且在每个被测微服务上注入sidecar方法,其中,sidecar方法用于拦截上下游请求(如测试请求),修改目的地址并将测试请求转发给正确的微服务。
步骤A2,创建公共沙盒,在公共沙盒中部署私有沙盒中的被测微服务的上游微服务和/或下游微服务,并且在该公共沙盒的每个被测微服务上注入sidecar方法。
步骤A3,获取该公共沙盒中每个微服务的访问入口、服务名称和实际地址。
步骤A4,在私有沙盒中备份公共沙盒内各个微服务的访问入口、服务名称和实际地址。
步骤A5,当接收到测试请求时,sidecar方法拦截测试请求,检查请求头中是否携带了沙盒标签。
步骤A6,若未携带,调用k8s的API查询测试请求的源地址下的进程集关联的沙盒标签,并将查询到的沙盒标签注入请求头;若携带,直接获取请求头中的沙盒标签。
步骤A7,判断测试请求的目的地址为IP地址还是域名地址,若是IP地址执行步骤A8~A10,若是域名地址执行步骤A11~A15。
步骤A8,当目的地址为IP地址时,调用k8s的API查询目的地址下的进程集关联的沙盒标签。
步骤A9,若该沙盒标签与请求头中的沙盒标签匹配,则将测试请求发送至目的地址,并透传请求头。
步骤A10,若该沙盒标签与请求头中的沙盒标签不匹配,则调用k8s的API查询目的地址下的进程集所属的微服务的服务名称,查询私有沙盒中与该微服务名称同名的服务名称关联的实际地址,将测试请求发送至该实际地址,并透传请求头。
步骤A11,当目的地址为域名地址时,调用k8s的API查询目的地址是否为私有沙盒中各个微服务对应的域名地址;
步骤A12,若是,则将测试请求发送至目的地址,并透传请求头。
步骤A13,若否,调用k8s的API查询私有沙盒中预先备份的公共沙盒对应的访问入口中是否包含该目的地址。
步骤A14,若不包含,将将测试请求发送至目的地址,并透传请求头。
步骤A15,若包含,调用k8s的API查询包含该目的地址的访问入口关联的服务名称,在私有沙盒中查询该服务名称对应的实际地址,将测试请求发送至该实际地址,并透传请求头。
实施例二
本发明的实施例二还提供了一种基于沙盒的微服务测试装置,该基于沙盒的微服务测试装置与上述实施例一提供的基于沙盒的微服务测试方法相对应,相应的技术特征和技术效果在本实施例中不再详述,相关之处可参考上述实施例一。具体地,图4示出了本发明实施例二提供的基于沙盒的微服务测试装置的框图。如图4所示,该基于沙盒的微服务测试装置400可以包括第一确定模块401、获取模块402、第二确定模块403和第三确定模块404,其中:
第一确定模块401,用于当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒;
获取模块402,用于获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务;
第二确定模块403,用于确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路;
第三确定模块404,用于根据所述请求链路确定所述被测微服务的测试结果。
可选地,所述第一确定模块在执行确定所述被测微服务所属的私有沙盒的步骤时,具体用于:解析出所述测试请求的请求头;检测所述请求头中是否携带有沙盒标签;若携带,将与所述请求头携带的沙盒标签相关联的沙盒作为所述私有沙盒;若不携带,解析出所述测试请求的源地址,查询与所述源地址相关联的沙盒标签,并将与查询到的沙盒标签相关联的沙盒作为所述私有沙盒。
可选地,所述第二确定模块在执行确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路的步骤时,具体用于:解析出所述测试请求的目的地址;根据所述目标地址确定用于接收所述测试请求的沙盒;当用于接收所述测试请求的沙盒为所述私有沙盒时,将所述目的地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述目的地址;当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址。
可选地,所述第二确定模块在执行根据所述目标地址确定用于接收所述测试请求的沙盒的步骤时,具体用于:当所述目的地址为IP地址时,确定所述目的地址下的进程集;确定与所述进程集相关联的沙盒标签;将与确定出的沙盒标签相关联的沙盒作为用于接收所述测试请求的沙盒。
可选地,所述第二确定模块在执行确定所述目的地址下的进程集的步骤时,具体用于:确定承载有所述私有沙盒和所述公共沙盒的集群空间;判断所述目的地址所指向的空间是否位于所述集群空间内;若位于,在所述集群空间内确定所述目的地址下的进程集。
可选地,所述第二确定模块在执行确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路的步骤时,还可以具体用于:当所述目的地址为域名地址时,在所述集群空间内获取所述私有沙盒中的各个微服务的域名地址;判断获取的域名地址中是否包含所述目的地址;若包含,确定用于接收所述测试请求的沙盒为所述私有沙盒。
可选地,所述第二模块在执行根据所述目标地址确定用于接收所述测试请求的沙盒的步骤时,具体用于:若获取的域名地址中不包含所述目的地址,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的访问入口;判断获取的访问入口中是否包含所述目的地址;若包含,确定用于接收所述测试请求的沙盒为所述公共沙盒。
可选地,所述第二确定模块在执行当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址的步骤时,具体用于:当用于接收所述测试请求的沙盒为所述公共沙盒时,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的服务名称和实际地址;从获取的服务名称中确定出与所述目的地址相关联的服务名称;从获取的实际地址中筛选出与确定出的服务名称相关联的实际地址,将筛选出的实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至筛选出的实际地址。
可选地,所述第三确定模块在执行从获取的服务名称中确定出与所述目的地址相关联的服务名称的步骤时,具体用于:当所述目的地址为IP地址时,确定所述进程集上挂载的微服务;从所述获取的服务名称中确定出与所述进程集上挂载的微服务同名的服务名称。
可选地,所述第三确定模块在执行从获取的服务名称中确定出与所述目的地址相关联的服务名称的步骤时,还可以具体用于:当所述目的地址为域名地址时,从所述获取的访问入口中筛选出包含所述目的地址的访问入口;从所述获取的服务名称中确定出与筛选出的访问入口相关联的服务名称。
实施例三
图5示出了本发明实施例三提供的适于实现基于沙盒的微服务测试方法的计算机设备的框图。本实施例中,计算机设备500可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,本实施例的计算机设备500至少包括但不限于:可通过系统总线相互通信连接的存储器501、处理器502、网络接口503。需要指出的是,图5仅示出了具有组件501-503的计算机设备500,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器503至少包括一种类型的计算机可读存储介质,可读存储介质包括包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器501可以是计算机设备500的内部存储单元,例如该计算机设备500的硬盘或内存。在另一些实施例中,存储器501也可以是计算机设备500的外部存储设备,例如该计算机设备500上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器501还可以既包括计算机设备500的内部存储单元也包括其外部存储设备。在本实施例中,存储器501通常用于存储安装于计算机设备500的操作系统和各类应用软件,例如基于沙盒的微服务测试方法的程序代码等。
处理器502在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器502通常用于控制计算机设备500的总体操作。例如执行与计算机设备500进行数据交互或者通信相关的控制和处理等。本实施例中,处理器502用于运行存储器501中存储的基于沙盒的微服务测试方法的步骤的程序代码。
在本实施例中,存储于存储器501中的基于沙盒的微服务测试方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器502)所执行,以完成本发明。
网络接口503可包括无线网络接口或有线网络接口,该网络接口503通常用于在计算机设备500与其他计算机设备之间建立通信链接。例如,网络接口503用于通过网络将计算机设备500与外部终端相连,在计算机设备500与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
实施例四
本实施例还提供一种计算机可读存储介质,包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于沙盒的微服务测试方法的步骤。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
需要说明的是,本发明实施例序号仅仅为了描述,并不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种基于沙盒的微服务测试方法,其特征在于,所述方法包括:
当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒;
获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务;
确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路;
根据所述请求链路确定所述被测微服务的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述确定所述被测微服务所属的私有沙盒的步骤包括:
解析出所述测试请求的请求头;
检测所述请求头中是否携带有沙盒标签;
若携带,将与所述请求头携带的沙盒标签相关联的沙盒作为所述私有沙盒;
若不携带,解析出所述测试请求的源地址,查询与所述源地址相关联的沙盒标签,并将与查询到的沙盒标签相关联的沙盒作为所述私有沙盒。
3.根据权利要求1所述的方法,其特征在于,所述确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路,包括:
解析出所述测试请求的目的地址;
根据所述目标地址确定用于接收所述测试请求的沙盒;
当用于接收所述测试请求的沙盒为所述私有沙盒时,将所述目的地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述目的地址;
当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标地址确定用于接收所述测试请求的沙盒的步骤包括:
当所述目的地址为IP地址时,确定所述目的地址下的进程集;
确定与所述进程集相关联的沙盒标签;
将与确定出的沙盒标签相关联的沙盒作为用于接收所述测试请求的沙盒。
5.根据权利要求4所述的方法,其特征在于,所述确定所述目的地址下的进程集的步骤包括:
确定承载有所述私有沙盒和所述公共沙盒的集群空间;
判断所述目的地址所指向的空间是否位于所述集群空间内;
若位于,在所述集群空间内确定所述目的地址下的进程集。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标地址确定用于接收所述测试请求的沙盒的步骤包括:
当所述目的地址为域名地址时,在所述集群空间内获取所述私有沙盒中的各个微服务的域名地址;
判断获取的域名地址中是否包含所述目的地址;
若包含,确定用于接收所述测试请求的沙盒为所述私有沙盒。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标地址确定用于接收所述测试请求的沙盒的步骤还包括:
若获取的域名地址中不包含所述目的地址,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的访问入口;
判断获取的访问入口中是否包含所述目的地址;
若包含,确定用于接收所述测试请求的沙盒为所述公共沙盒。
8.根据权利要求7所述的方法,其特征在于,所述当用于接收所述测试请求的沙盒为所述公共沙盒时,根据所述目的地址确定所述公共沙盒中用于接收所述测试请求的实际地址,将所述实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至所述实际地址的步骤包括:
当用于接收所述测试请求的沙盒为所述公共沙盒时,在所述私有沙盒内获取预先备份的与所述公共沙盒中的各个微服务对应的服务名称和实际地址;
从获取的服务名称中确定出与所述目的地址相关联的服务名称;
从获取的实际地址中筛选出与确定出的服务名称相关联的实际地址,将筛选出的实际地址作为所述请求链路中的一个节点,并将所述测试请求发送至筛选出的实际地址。
9.根据权利要求8所述的方法,其特征在于,所述从获取的服务名称中确定出与所述目的地址相关联的服务名称的步骤包括:
当所述目的地址为IP地址时,确定所述进程集上挂载的微服务;
从所述获取的服务名称中确定出与所述进程集上挂载的微服务同名的服务名称。
10.根据权利要求8所述的方法,其特征在于,所述从获取的服务名称中确定出与所述目的地址相关联的服务名称的步骤包括:
当所述目的地址为域名地址时,从所述获取的访问入口中筛选出包含所述目的地址的访问入口;
从所述获取的服务名称中确定出与筛选出的访问入口相关联的服务名称。
11.一种基于沙盒的微服务测试装置,其特征在于,所述装置包括:
第一确定模块,用于当接收到用于测试被测微服务的测试请求时,确定所述被测微服务所属的私有沙盒;
获取模块,用于获取与所述私有沙盒相关联的公共沙盒,其中,所述公共沙盒内存储有在测试所述被测微服务时所依赖的其他微服务;
第二确定模块,用于确定所述测试请求在所述私有沙盒和/或所述公共沙盒中的请求链路;
第三确定模块,用于根据所述请求链路确定所述被测微服务的测试结果。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110838758.2A CN113535571A (zh) | 2021-07-23 | 2021-07-23 | 基于沙盒的微服务测试方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110838758.2A CN113535571A (zh) | 2021-07-23 | 2021-07-23 | 基于沙盒的微服务测试方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535571A true CN113535571A (zh) | 2021-10-22 |
Family
ID=78089254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110838758.2A Pending CN113535571A (zh) | 2021-07-23 | 2021-07-23 | 基于沙盒的微服务测试方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535571A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150310A (zh) * | 2022-07-01 | 2022-10-04 | 北京百度网讯科技有限公司 | 请求生成方法、处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-07-23 CN CN202110838758.2A patent/CN113535571A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150310A (zh) * | 2022-07-01 | 2022-10-04 | 北京百度网讯科技有限公司 | 请求生成方法、处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000348B (zh) | 服务灰度发布的控制方法、装置、计算机设备 | |
CN106844137B (zh) | 服务器的监控方法和装置 | |
CN109309693B (zh) | 基于docker的多服务系统、部署方法及装置、设备及存储介质 | |
CN111182089B (zh) | 容器集群系统和访问大数据组件的方法、装置及服务器 | |
US11461206B2 (en) | Cloud simulation and validation system | |
CN114205342B (zh) | 服务调试的路由方法、电子设备及介质 | |
CN108255701B (zh) | 场景测试方法及移动终端 | |
CN106873970B (zh) | 一种操作系统的安装方法和装置 | |
WO2019085290A1 (zh) | 测试前置实现方法、装置、终端设备及存储介质 | |
US11941127B2 (en) | Firmware password management | |
US12026494B2 (en) | Dynamic automation of prerequisite component deployment in disconnected environments | |
CN111865905B (zh) | 一种基于Ukey的通信方法、装置和存储介质 | |
CN112948272A (zh) | 基于生产环境的数据测试系统功能方法、装置及相关设备 | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN113535571A (zh) | 基于沙盒的微服务测试方法、装置、设备和存储介质 | |
CN114237821A (zh) | Kubernetes容器集群的自发现方法、装置、电子设备及存储介质 | |
CN113900939A (zh) | 测试环境访问方法、装置、可读存储介质和计算机设备 | |
CN111447273B (zh) | 云处理系统及基于云处理系统的数据处理方法 | |
US11412044B1 (en) | Discovery of resources in a virtual private cloud | |
CN111654398B (zh) | 一种更新配置的方法、装置、计算机设备及可读存储介质 | |
CN112748981B (zh) | 虚拟网络功能的软件镜像的处理方法和装置 | |
CN116132366B (zh) | 流量管理方法、装置、电子设备及存储介质 | |
CN116975850B (zh) | 合约运行方法、装置、电子设备及存储介质 | |
CN117714443A (zh) | 分布式云系统、云站点的开局配置方法、集群及存储介质 | |
CN116938757A (zh) | 数据处理的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |