CN114064475B - 云原生应用测试方法、装置、设备及存储介质 - Google Patents
云原生应用测试方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114064475B CN114064475B CN202111353905.3A CN202111353905A CN114064475B CN 114064475 B CN114064475 B CN 114064475B CN 202111353905 A CN202111353905 A CN 202111353905A CN 114064475 B CN114064475 B CN 114064475B
- Authority
- CN
- China
- Prior art keywords
- test
- target
- service
- native application
- cloud native
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 671
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000013142 basic testing Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 13
- 238000004519 manufacturing process Methods 0.000 abstract description 18
- 238000007726 management method Methods 0.000 description 78
- 238000010586 diagram Methods 0.000 description 16
- 230000008859 change Effects 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000011156 evaluation Methods 0.000 description 7
- 238000005259 measurement Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种云原生应用测试方法、装置、设备及存储介质,该方法包括:系统管理设备根据获取到的目标云原生应用的标识,确定目标云原生应用的理论测试架构信息和基础测试用例快照,进而结合目标测试用例快照,生成随机测试策略以及可执行测试用例,并向测试执行设备发送测试执行命令,相应的,测试执行设备根据接收到目标核心调用链路,确定出目标云原生应用中的目标微服务,执行该可执行测试用例,得到目标微服务的运行状态信息,进而确定出目标云原生应用的测试结果。该技术方案中,云原生应用的测试在生产环境下运行,在不影响云原生系统正常运行的情况下,实现了对变化的云原生应用进行测试的目的,测试准确度高。
Description
技术领域
本申请涉及自动化测试技术领域,尤其涉及一种云原生应用测试方法、装置、设备及存储介质。
背景技术
随着云原生技术的应用,出现了由云原生应用形成的云原生系统,云原生应用主要基于Kubernetes(K8s)容器化平台运行,其架构采用微服务的技术、方法和理念进行研发。由于云原生应用具有高可靠,弹性伸缩等特点,因而,在云原生应用运行时,云原生系统的实例数量,甚至系统部署架构都会随着用户访问量、访问地点的变化而变化。因而,为了更好的监控云原生系统的运行状态,需要对云原生应用的性能进行测试。
目前,云原生应用的测试大致分为手动测试与自动化测试两大类,这两类测试都需要利用具体的硬件设施在特定条件下进行。一旦云原生系统的内外环境发生更改,就需要重新执行云原生应用的评估测试,而云原生系统是一个不断变化的系统,现有的测试方法无法准确、及时监控云原生应用的变化,导致应用性能的测试准确率低。
发明内容
本申请提供一种云原生应用测试方法、装置、设备及存储介质,以克服现有方法针对现有云原生系统中的云原生应用测试准确率低的问题。
第一方面,本申请提供了一种云原生应用测试方法,包括:
获取应用测试请求,所述应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路;
根据所述目标云原生应用的标识,确定所述目标云原生应用的理论测试架构信息和基础测试用例快照;
根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;
根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;
向测试执行设备发送测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识,所述测试执行设备用于根据所述目标核心调用链路和所述目标云原生应用的标识对所述可执行测试用例进行处理得到所述目标云原生应用的测试结果。
可选的,在所述根据所述理论测试架构信息和所述目标测试用例快照对所述基础测试用例快照进行处理,生成随机测试策略之前,所述方法还包括:
确定所述理论测试架构信息处于有效状态;
其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配。
可选的,在所述获取应用测试请求之前,所述方法还包括:
获取测试用例快照录制指示,所述测试用例快照录制指示包括:云原生应用的标识;
根据所述云原生应用的标识,获取所述云原生应用的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
将所述测试架构信息发送给所述测试执行设备。
第二方面,本申请提供的云原生应用测试方法,包括:
接收系统管理设备发送的测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识;
根据所述目标核心调用链路,确定出所述目标云原生应用中的目标微服务;
执行所述可执行测试用例,得到所述目标微服务的运行状态信息;
根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果。
可选的,所述可执行测试用例的测试用例快照包括:树状分层次分布的测试用例;
所述执行所述可执行测试用例,得到所述目标微服务的运行状态信息,包括:
采用层次遍历的方式依次执行所述可执行测试用例的测试用例快照在每层中的测试用例,得到所述目标微服务的运行状态信息。
可选的,在所述根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果之前,所述方法还包括:
确定所述可执行测试用例对应测试用例快照的核心调用链路;
根据所述核心调用链路,生成针对所述目标微服务的加压器,所述加压器用于提供服务访问压力;
相应的,在所述执行所述可执行测试用例,得到所述目标微服务的运行状态信息之前,所述方法还包括:
利用所述加压器对所述可执行测试用例进行加压处理。
可选的,在所述接收系统管理设备发送的测试执行命令之前,所述方法还包括:
确定数据网关处于测试状态;
其中,所述数据网关处于测试状态时,所述数据网关用于对接业务数据库和预设的测试数据库;
在所述接收系统管理设备发送的测试执行命令之后,所述方法还包括:
在所述测试执行命令的读写操作来自于测试用例快照时,利用所述数据网关将所述测试执行命令路由到所述测试数据库;
在所述测试执行命令的读写操作来自于正常业务数据时,利用所述数据网关将所述测试执行命令路由到所述业务数据库。
可选的,在所述接收系统管理设备发送的测试执行命令之前,所述方法还包括:
接收所述系统管理设备发送的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
根据所述测试架构信息和预设的关键函数调用路径,确定需要监控的目标微服务;
通过所述目标微服务的应用代理,获取所述目标微服务的配置信息;
基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,所述当前服务运行信息包括:所有关键调用链路的运行信息和执行上下文信息;
根据所述当前服务运行信息,生成所述目标微服务的测试用例快照。
可选的,所述基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,包括:
根据所述目标微服务的配置信息,捕获与所述目标微服务的核心调用链路相关联的链路快照信息;
对所述链路快照信息进行结构化处理,生成所述目标微服务中所有关键调用链路的运行信息和执行上下文信息。
第三方面,本申请提供的云原生应用测试装置,包括:
获取模块,用于获取应用测试请求,所述应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路;
处理模块,用于:
根据所述目标云原生应用的标识,确定所述目标云原生应用的理论测试架构信息和基础测试用例快照;
根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;
根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;
发送模块,用于向测试执行设备发送测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识,所述测试执行设备用于根据所述目标核心调用链路和所述目标云原生应用的标识对所述可执行测试用例进行处理得到所述目标云原生应用的测试结果。
可选的,所述处理模块,还用于确定所述理论测试架构信息处于有效状态;
其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配。
可选的,所述获取模块,还用于获取测试用例快照录制指示,所述测试用例快照录制指示包括:云原生应用的标识;
所述处理模块,还用于根据所述云原生应用的标识,获取所述云原生应用的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
所述发送模块,还将所述测试架构信息发送给所述测试执行设备。
第四方面,本申请提供的云原生应用测试装置,包括:
接收模块,用于接收系统管理设备发送的测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识;
处理模块,用于:
根据所述目标核心调用链路,确定出所述目标云原生应用中的目标微服务;
执行所述可执行测试用例,得到所述目标微服务的运行状态信息;
根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果。
可选的,所述可执行测试用例的测试用例快照包括:树状分层次分布的测试用例;
所述处理模块,用于执行所述可执行测试用例,得到所述目标微服务的运行状态信息,具体为:
所述处理模块,具体用于采用层次遍历的方式依次执行所述可执行测试用例的测试用例快照在每层中的测试用例,得到所述目标微服务的运行状态信息。
可选的,所述处理模块,还用于确定所述可执行测试用例对应测试用例快照的核心调用链路,以及根据所述核心调用链路,生成针对所述目标微服务的加压器,所述加压器用于提供服务访问压力;
相应的,所述处理模块,还用于利用所述加压器对所述可执行测试用例进行加压处理。
可选的,所述处理模块,还用于确定数据网关处于测试状态;
其中,所述数据网关处于测试状态时,所述数据网关用于对接业务数据库和预设的测试数据库;
相应的,所述处理模块,还用于在所述测试执行命令的读写操作来自于测试用例快照时,利用所述数据网关将所述测试执行命令路由到所述测试数据库,在所述测试执行命令的读写操作来自于正常业务数据时,利用所述数据网关将所述测试执行命令路由到所述业务数据库。
可选的,在所述接收系统管理设备发送的测试执行命令之前,所述方法还包括:
所述接收模块,还用于接收所述系统管理设备发送的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
所述处理模块,还用于:
根据所述测试架构信息和预设的关键函数调用路径,确定需要监控的目标微服务;
通过所述目标微服务的应用代理,获取所述目标微服务的配置信息;
基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,所述当前服务运行信息包括:所有关键调用链路的运行信息和执行上下文信息;
根据所述当前服务运行信息,生成所述目标微服务的测试用例快照。
可选的,所述处理模块,用于基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,具体为:
所述处理模块,具体用于:
根据所述目标微服务的配置信息,捕获与所述目标微服务的核心调用链路相关联的链路快照信息;
对所述链路快照信息进行结构化处理,生成所述目标微服务中所有关键调用链路的运行信息和执行上下文信息。
第五方面,本申请提供一种电子设备,包括处理器、存储器、收发器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的方法。
第六方面,本申请提供一种电子设备,包括处理器、存储器、收发器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第二方面所述的方法。
第七方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面所述的方法。
第八方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第二方面所述的方法。
第九方面,本申请提供一种计算机程序产品,包括:计算机程序,所述计算机程序被处理器执行时用于实现如上述第一方面所述的方法。
第十方面,本申请提供一种计算机程序产品,包括:计算机程序,所述计算机程序被处理器执行时用于实现如上第二方面所述的方法。
本申请提供的云原生应用测试方法、装置、设备及存储介质,系统管理设备获取到应用测试请求后,可以根据应用测试请求中的目标云原生应用的标识,确定目标云原生应用的理论测试架构信息和基础测试用例快照,再根据理论测试架构信息和目标测试用例快照,生成随机测试策略,根据随机测试策略和目标核心调用链路对基础测试用例快照进行处理,生成可执行测试用例,进而通过测试执行命令的方式发送给测试执行设备,相应的,测试执行设备接收到测试执行命令后,根据目标核心调用链路,确定出目标云原生应用中的目标微服务,执行该可执行测试用例,得到目标微服务的运行状态信息,进而确定出目标云原生应用的测试结果。该技术方案中,云原生应用的测试可以在生产环境下运行,在不影响云原生系统正常运行的情况下,可以对变化的云原生应用进行自动化的测试,甚至主动创造变化来对整个云原生应用所在系统的正确性以及性能进行验证,提高了测试准确度。
附图说明
图1为本申请实施例提供的云原生应用测试方法的应用场景示意图;
图2为云原生应用中的微服务调用示意图;
图3为本申请实施例提供的云原生应用测试方法实施例一的交互示意图;
图4为测试用例快照库中记录的基础测试用例快照;
图5为本申请实施例中生成的可执行测试用例的测试用例快照;
图6为本申请实施例提供的云原生应用测试方法实施例二的交互示意图;
图7为本申请实施例提供的云原生应用测试装置实施例一的结构示意图;
图8为本申请实施例提供的云原生应用测试装置实施例二的结构示意图;
图9为本申请提供的电子设备实施例的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着云原生技术的发展,越来越多的应用基于Kubernetes等容器化平台运行,本申请中称为云原生应用,由云原生应用形成的系统称为云原生系统,云原生系统的架构采用微服务的技术、方法和理念进行研发。
由于云原生应用具有高可靠,弹性伸缩等特点,在云原生应用运行时,整个云原生系统的实例数量,甚至部署架构都会随着用户的访问量、访问地点变化而变化,即云原生系统是一个不断变化的系统,因此,基于云原生环境进行云原生应用测试存在着诸多挑战。
传统的云原生应用测试大致分为手动测试与自动化测试两大类,但不管哪类测试方法都需要在特定的条件下、具体的硬件设施下进行。一旦云原生系统的内外环境发生更改,就需要对云原生系统进行重新评估和测试。
例如,在传统的黑盒测试中,利用用户界面能够驱动云原生系统的测试,采取人工或自动化的手段,都可以评估云原生系统的正确性或者总体性能。但是在云原生环境下,由于云原生系统的复杂性,黑盒测试需要大规模的人力或者模拟测试,在云原生系统不断变化的情况下进行频繁测试显然并不现实。而且,为了确保生产环境的安全稳定,测试工作往往需要在独立的测试环境中进行,但由于环境规模、成本等因素的制约,测试环境往往无法与生产环境完全一致,这就使得测试结果无法反应生产环境的实际情况,导致测试的准确率低。
最重要的一点是,云原生系统的易变性。由于云原生系统会随着用户的访问进行同区域服务扩缩容和/或跨区域的扩缩容两种情况,这都会对云原生系统的稳定,甚至正确性带来挑战,而传统黑盒测试难以捕捉这种行为。
而传统的白盒测试更需要对每步操作进行精细化的测试,因此,大多数白盒测试工作还停留在开发阶段来进行,无法执行云原生系统的测试工作。
综上可知,传统的黑盒测试或者白盒测试都只能在系统访问量较小甚至只有测试访问的情况下进行,均无法反应系统的多变性、高访问量下的云原生系统的正确性与性能的真实情况,因此,云原生系统需要在生产环境下进行不间断的测试,以保证云原生系统的正确性以及可用性。也即,现有的测试方法无法准确、及时监控云原生应用的变化,导致应用性能的测试准确率低。
针对上述技术问题,为了保证该系统可以在生产环境下运行,也即,在不影响云原生系统正常运行的情况下,需要一种方法可以对变化的系统进行自动化的测试,甚至主动创造变化来对整个系统的正确性以及性能进行验证,这样才能得到准确度比较高的验证结果。相应的,本申请实施例提供了一种在云原生环境中基于微服务的测试方法,基于系统管理环境中的系统管理设备和生成环境中的测试执行设备的交互,可以实现云原生应用的测试工作,提高了测试准确率。
在本申请的实施例中,图1为本申请实施例提供的云原生应用测试方法的应用场景示意图。如图1所示,该应用场景示意图包括:由系统管理环境和生产环境,该生产环境中包括:多个云应用。图1中以一个进行解释说明。
可选的,系统管理环境中存在系统管理设备11,该系统管理设备用于负责云原生系统以及运行在多个云单元中的云原生应用的管理。该系统管理设备11包含系统管理模块111、测试架构管理模块112、测试策略生成模块113、云原生应用评估模块114、测试用例分发模块115和测试用例快照库116。
生产环境中包括:测试执行设备12、与测试执行设备12对接的多个应用代理、与每个应用代理伴随出现的多个微服务,分别与应用代理对接的加压器和数据网关以及与数据网关对接的测试数据库和业务数据库。
在本申请的实施例中,在系统管理环境中,系统管理模块111通过接收不同云单元中的测试执行设备的注册请求,来管理部署在不同云单元中的一个或者多个云原生应用。一个云原生应用是运行在一个Kubernetes Cluster(云单元)中的业务系统,它由若干个微服务组成,一个微服务可以拥有多个运行实例,并以容器(container)的形式运行在K8spod中。微服务的运行实例通常可以在两个维度上进行变化:区域(zone)和地域(region)。其中,区域为同地域内不同机房或者电能可用区内的节点,地域为相同K8s集群不同地域的节点。
测试架构管理模块112用来帮助用户在云原生系统的所有微服务中,定义一个云原生应用的核心服务(Most Essential Services,MES),MES承载一个云原生应用中核心业务,通过MES用户可以定义核心调用链路(Main Invoking Chain,MIC),以MES来作为一个云原生应用的测试对象。示例性的,图2为云原生应用中的微服务调用示意图。如图2所示,如果用户指定MES包括:服务1、服务2、服务3,则MIC可以利用(服务1.API2、服务2.API3、服务3.API3)来表示;可选的,在图2中,服务1.API2可以关联服务4.API2,服务4.API2可以关联服务5.API1,服务4.API3可以关联服务2.API2,服务5.API3可以关联服务3.API1等。本申请实施例并不对各个服务的应用接口的关联关系进行限定,其可以根据实际情况进行确定。
测试策略生成模块113,用来随机生成测试策略,例如,可以包含以下的测试策略:
当前云原生应用中同微服务同区域(zone)内节点扩容;
当前云原生应用中同微服务同区域内节点缩容;
当前云原生应用中同微服务跨区域内节点扩容;
当前云原生应用中同微服务跨区域内节点缩容;
当前云原生应用中同微服务跨地域(Region)内节点扩容;
当前云原生应用中同微服务跨地域(Region)内节点缩容;
如是多节点集群,则销毁一个K8s节点;(服务伴随销毁)
如是多节点集群,则增加一个K8s节点;(服务伴随增加)
云原生应用评估模块114负责对测试状态进行评估。
测试用例分发模块115用来根据测试策略生成模块的随机策略,并从测试用例快照库116中获取测试用例快照,从而根据测试用例快照和随机策略生成测试用例,再分发给测试执行设备12,进而对微服务进行测试。
测试用例快照库116用来存储整个云原生系统中各个云原生应用的测试用例快照。
测试执行设备12是驻守在云单元(一个Kubernetes Cluster)的云原生应用中的测试执行管理端,它用来管理一个k8s集群中的一个或者多个名称空间(Namespace)中的微服务,测试执行设备12与系统管理设备11进行交互,获取系统管理设备11的指令预设值,并且与应用代理进行指令交互。
可选的,该测试执行设备12可以包含监控度量模块121、测试执行模块122、注册管理模块123、录制模块124、加压模块125等。
其中,度量监控模块121负责对微服务所在系统的运行状态进行监控,以及将基础测试用例快照的执行情况与当前系统的测试用例快照的执行情况进行对比判定。
测试执行模块122负责执行系统管理设备派发的测试用例,并按照对应顺序调用微服务。
注册管理模块123有两个职责,一个是负责当前k8s集群中多个云原生应用在系统管理设备中的注册,另一个职责是负责管理集群内的不同云原生应用。
录制模块124用来记录微服务的调用顺序、参数、处理结果以及处理时间等参数,并将这些参数保存为测试用例快照。
加压模块125用于根据当前测试用例快照记录的微服务压力值以及测试信息来访问微服务并通过多个加压器进行并发压力测试,从而以这样的方式反映MIC在真实的系统压力下的功能正确性以及性能。
云原生应用中的应用代理负责过滤每个微服务与外部的入站(inbound)和出站(outbound)通信、应用的状态监控、测试状态隔离等工作。
数据网关用于保证云原生系统在生产状态下也可以执行测试用例快照,并且不会在生产数据库中产生脏数据。可选的,在生产环境处于测试状态时,数据网关会不断检测所承载的数据库读写操作,如果发现当前的数据库读写操作来自于测试用例快照,数据网关会将访问路由到测试数据库,如果发现当前的数据库读写操作是正常业务数据,数据网关会将读写操作路由到业务数据库。
在本申请的实施例中,基于图1所示的应用场景示意图,本申请实施例提供了一种适用于生产环境下,基于测试用例快照的云原生应用测试方法。该技术方案中,一方面,将生产数据保存下来作为测试用例,有效的提升了测试可信度,另一方面,测试路径众多,避免了穷举测试的方案,可实现性强,准确度高。
可以理解的是,图1所示的实施例中仅列出了本申请所需要的部分设备和/或模块,其可以根据实际需要,包括其他的模块和/或设备,本申请实施例不对其进行限定。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图3为本申请实施例提供的云原生应用测试方法实施例一的交互示意图。图3以图1所示应用场景中的系统管理设备和测试执行设备的信息交互进行解释说明。如图3所示,该云原生应用测试方法可以包括如下步骤:
S301、系统管理设备获取应用测试请求,该应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路。
在本申请的实施例中,用户可以通过系统管理设备接收用户的指令,例如,通过系统管理设备的用户交互界面发出应用测试请求,以便系统管理设备选择目标云原生应用并执行应用测试。
可选的,通常情况下,系统管理设备能够用于管理多个云原生应用,为了区别要测试的云原生应用,该应用测试请求中需要携带目标云原生应用的标识。此外,每个云原生应用中具有多个核心调用链路,用户也可以通过该应用测试请求选择目标核心调用路径。
可选的,该系统管理设备中设置有测试用例快照库,该测试用户库中存储有针对各个云原生应用的测试用例快照。因而,用户也可以通过应用测试请求指定选择的目标测试用例快照。
S302、系统管理设备根据目标云原生应用的标识,确定目标云原生应用的理论测试架构信息和基础测试用例快照。
可选的,系统管理设备可以对应用测试请求进行解析,确定出应用测试请求包括的内容,例如,目标云原生应用的标识、目标测试用例快照和目标核心调用链路等。可理解,应用测试请求中还可以包括其他内容,本申请实施例不对其进行限定。
在本步骤中,参照图1所示的应用场景示意图,系统管理设备可以根据目标云原生应用的标识,查询系统管理设备中的测试架构管理模块,获取目标云原生应用的理论测试架构信息,例如,MES,MIC等信息。可选的,系统管理设备可以根据目标云原生应用的标识,查询系统管理设备中的测试用例快照库,获取目标云原生应用的基础测试用例快照。
S303、系统管理设备根据该理论测试架构信息和目标测试用例快照,生成随机测试策略。
可选的,系统管理设备在得到目标云原生应用的理论测试架构信息和基础测试用例快照后,便可以根据用户选择的策略或者随机策略生成一些随机测试策略,从而结合目标核心调用链路和基础测试用例快照产生适合于当前云原生系统的可执行测试用例。
在实际应用中,由于云原生系统处于不断的变化中,因此,系统管理设备的测试架构管理模块在生成随机测试策略之前,需要将已存储的目标云原生应用的MES,MIC等理论测试架构信息与云原生系统中目标云原生应用的当前测试架构信息进行匹配,进而来决定是否可以将获取到的理论测试架构信息和基础测试用例快照等信息应用到用户选择的目标云原生应用中。
具体的,在本实施例中,系统管理设备在执行该步骤S303之前,首先需要确定该理论测试架构信息处于有效状态;其中,该理论测试架构信息处于有效状态是指该理论测试架构信息与目标云原生应用的当前测试架构信息相匹配。所以,在确定该理论测试架构信息处于有效状态时,便可以基于该理论测试架构信息、目标核心调用链路和基础测试用例快照以及用户选择或者随机策略生成随机测试策略。
S304、系统管理设备根据该随机测试策略和目标核心调用链路对基础测试用例快照进行处理,生成可执行测试用例。
在本实施例中,系统管理设备可以根据应用测试请求中的目标核心调用链路以及生成的随机测试策略对基础测试用例快照进行处理生成可执行测试用例。
示例性的,图4为测试用例快照库中记录的基础测试用例快照;图5为本申请实施例中生成的可执行测试用例的测试用例快照。可理解,图4和图5所示测试用例快照的生成过程可以利用图2所示的云原生应用中的微服务进行解释说明,基础测试用例快照和可执行测试用例的测试用例快照均是树状结构。如图4所示,基础测试用例快照通过服务1、服务2和服务3的应用接口进行表征,如图5所示,生成的可执行测试用例的测试用例快照中,实心黑色节点为根据用户本次所指定的测试策略或者系统随机生成的测试策略,例如,销毁服务1的任意实例节点,增加服务3的实例节点等。
其中,树形结构的左侧分支为目标云原生应用的MIC,如表1所示,树状结构的其他分支为对目标云原生应用进行测试时,当前微服务中的系统压力情况,参照表2所示。可理解,表1和表2中的信息为举例说明,本申请实施例并不对其进行限定。
表1
表2
S305、系统管理设备向测试执行设备发送测试执行命令。
其中,该测试执行命令包括:可执行测试用例、目标核心调用链路和目标云原生应用的标识,测试执行设备可以用于根据目标核心调用链路和目标云原生应用的标识对该可执行测试用例进行处理得到目标云原生应用的测试结果。
可选的,为了云原生应用的正常执行,系统管理设备可以将生成的可执行测试用例、目标核心调用链路和目标云原生应用的标识通过测试执行命令的方式发送给测试执行设备,以触发目标云原生应用的测试。
具体的,系统管理设备通过测试用例分发模块将可执行测试用例,按照目标云原生应用的MES、MIC分发给测试执行设备中的测试执行模块,从而使得该测试执行设备触发云原生应用测试的执行。
S306、测试执行设备根据该目标核心调用链路,确定出目标云原生应用中的目标微服务。
可选的,由于核心调用链路是根据核心服务进行定义的,而核心服务承载了一个云原生应用中的核心业务,一个云原生应用以核心服务来作为测试对象,即待测试的目标微服务。因而,在本申请的实施例中,在已知目标核心调用链路时,可以确定出该目标核心调用链路对应的目标核心服务,从而根据该目标核心服务能够确定出目标云原生应用中的目标微服务。
S307、测试执行设备执行可执行测试用例,得到目标微服务的运行状态信息。
在本申请的实施例中,参照图5所示,可执行测试用例的测试用例快照包括:树状分层次分布的测试用例;相应的,该步骤可以通过如下方式执行:
采用层次遍历的方式依次执行可执行测试用例的测试用例快照在每层中的测试用例,得到目标微服务的运行状态信息。
具体的,测试用例快照的执行以层次遍历的方式,首先执行每层左侧节点的测试用例,也就是MIC中的关键用例,同时,执行本层中其他的测试用例,其他节点为加压节点,或者制造随机策略来对系统的健壮性进行测试。
在本申请的一种可能设计中,测试执行设备在执行S306之前,还可以执行如下步骤:
A1、确定该可执行测试用例对应测试用例快照的核心调用链路。
A2、根据该核心调用链路,生成针对目标微服务的加压器,该加压器用于提供服务访问压力。
在本实施例中,测试执行设备在开始测试时,会按照测试用例快照的MIC,针对目标微服务生成加压器,进而来提供更多的服务访问压力。
相应的,在上述S306之前,该方法还可以包括如下步骤:
利用上述加压器对可执行测试用例进行加压处理。
具体的,测试执行设备根据测试用例快照的MIC,可以针对不同微服务需要执行的测试用例进行打包,并根据测试策略准备需要触发的加压器和加压器的启动脚本以及相关测试用例。
可选的,测试执行设备可以通过开启监控度量功能对当前的自动化测试执行过程中的所有微服务进行监控和度量。测试执行模块根据测试用例或者测试策略中指定的并发压力数,启动一定数量的加压器,加压器根据测试用例中的测试对象以及压力值进行同步加压测试。
示例性的,测试执行设备可以按照上述图5所示的测试用例快照进行分层遍历并行测试。测试执行设备中的监控度量模块会对图5中所有的微服务进行不断的监控,获取输入参数、输出结果、日志等运行状态信息,然后将其与测试用例快照库中基础测试用例快照对应的目标微服务的运行状态信息进行比较。其中,字符串以文本相似度进行比较,数量参数以数值偏差进行比较。
进一步的,在本申请的实施例中,测试执行设备在接收系统管理设备发送的测试执行命令之前,还可以确定数据网关处于测试状态。
其中,数据网关处于测试状态时,该数据网关用于对接业务数据库和预设的测试数据库。
相应的,测试执行设备在接收系统管理设备发送的测试执行命令之后,判断测试执行命令的读写操作的来源,在测试执行命令的读写操作来自于测试用例快照时,利用数据网关将测试执行命令路由到测试数据库,在测试执行命令的读写操作来自于正常业务数据时,利用数据网关将测试执行命令路由到业务数据库。
具体的,为了保证本申请的技术方案可以在支撑生产情况下同时进行测试,数据网关会同时对接测试数据库和业务数据库。在测试状态时,数据网关会不断检测测试执行命令所承载的读写操作,如果发现测试执行命令所承载的读写操作来自于测试用例快照,数据网关将测试执行命令路由到测试数据库,如果测试执行命令所承载的读写操作是正常业务数据,数据网关将测试执行命令路由到业务数据库。因而,在生产环境中对云原生应用进行测试时,需要确定数据网关处于测试状态。
S308、测试执行设备根据目标微服务的运行状态信息,确定目标云原生应用的测试结果。
可选的,在测试执行设备利用测试执行模块检测到所有的可执行测试用例执行完毕,这时通知数据网关切换到普通状态,进而不再向测试数据库进行读写操作,监控度量模块将目标微服务的所有执行数据打包传输至测试执行模块,并由测试执行模块最终将所有执行数据返回给云应用评估模块进行最终的测试评估。相应的,云应用评估模块将接收到的所有执行数据与测试用例快照库中的基础测试用例快照的基准值进行比较,得出本次的测试结果,进而将其回传给测试执行模块。可理解,本次的测试结果即为目标云原生应用的测试结果。
示例性的,云应用评估模块可以按照表3所示的方法,比较参数可以包括:输入参数、返回值、执行时间、日志相似度、关键函数调用路径的相似度等5个维度,可选的,每个维度的权重为50%,根据这5个维度的比较结果可以得出本次的测试结果。例如:“服务1,成功复现度81%,服务2,成功复现度98%,服务3成功复现度62%”。
表3
本申请实施例提供的云原生应用测试方法,系统管理设备获取到应用测试请求后,可以根据应用测试请求中的目标云原生应用的标识,确定目标云原生应用的理论测试架构信息和基础测试用例快照,再根据理论测试架构信息和目标测试用例快照,生成随机测试策略,根据随机测试策略和目标核心调用链路对基础测试用例快照进行处理,生成可执行测试用例,进而通过测试执行命令的方式发送给测试执行设备,相应的,测试执行设备接收到测试执行命令后,根据目标核心调用链路,确定出目标云原生应用中的目标微服务,执行该可执行测试用例,得到目标微服务的运行状态信息,进而确定出目标云原生应用的测试结果。该技术方案中,云原生应用的测试可以在生产环境下运行,在不影响云原生系统正常运行的情况下,可以对变化的云原生应用进行自动化的测试,甚至主动创造变化来对整个云原生应用所在系统的正确性以及性能进行验证,提高了测试准确度。
可选的,在上述实施例的基础上,图6为本申请实施例提供的云原生应用测试方法实施例二的交互示意图。该方法主要对测试用例快照的生成方案进行解释说明,也即,测试用例快照的自动录制过程。
具体的,系统管理设备基于目标云原生应用的核心调用链路(MIC)进行测试,当在目标云原生应用中的测试用例快照开启录制时,系统管理设备将核心调用链路等信息传递给测试执行设备。测试执行设备的录制模块根据MIC的相关配置选择目标微服务以及应用代理进行测试用例录制,最终生成测试用例快照,并将其回传至系统管理设备进行存储。
在本实施例中,所谓录制就是通过应用代理来监控微服务,记录云原生应用中某个时刻开始的每个服务的第一个触发的应用接口API、触发参数、触发API后调用的关键函数调用路径、生成日志等内容,从而生成测试用例快照以及当MIC中的节点被调用时,服务中被并行访问的API以及其运行情况。示例性的,生成的测试用例快照如上述表1所示。此外,在录制测试用例快照时,用户通过测试架构管理模块可以查看已经定义的MES、MIC以及当前基于MIC的系统运行情况。
可选的,如图6所示,该云原生应用测试方法可以包括如下步骤:
S601、系统管理设备获取测试用例快照录制指示,该测试用例快照录制指示包括:云原生应用的标识。
可选的,在本申请的实施例中,在执行云原生应用的测试工作之前,系统管理设备可以执行通过用户触发的测试用例快照的录制工作。
示例性的,由于系统管理设备可以同时管理多个云应用,因而,在录制目标云原生应用的测试用例快照时,该测试用例快照录制指示中需要包括云原生应用的标识。
S602、系统管理设备根据云原生应用的标识,获取云原生应用的测试架构信息。
其中,该测试架构信息包括:核心服务和核心调用链路。
在本步骤中,系统管理设备的系统管理模块基于目标云原生应用的标识在测试架构管理模块中获取到目标云原生应用的核心服务、核心调用链路等测试架构信息。
S603、系统管理设备将测试架构信息发送给测试执行设备。
示例性的,系统管理设备可以利用测试架构管理模块将获取到目标云原生应用的测试架构信息传递给测试执行设备的录制模块,以便该录制模块执行测试用例快照的录制工作。
S604、测试执行设备根据测试架构信息和预设的关键函数调用路径,确定需要监控的目标微服务。
在本实施例中,由于核心调用链路与微服务是相互关联的,因而,根据测试架构信息中的核心调用链路,查询预设的关键函数调用路径,便可以确定出需要监控的目标微服务。
S605、测试执行设备通过目标微服务的应用代理,获取目标微服务的配置信息。
S606、测试执行设备基于目标微服务的配置信息,捕获目标微服务的当前服务运行信息。
其中,当前服务运行信息包括:所有关键调用链路的运行信息和执行上下文信息。
可选的,微服务与应用代理是伴随出现的,因而,该S606可以通过如下步骤实现:
B1、根据目标微服务的配置信息,捕获与目标微服务的核心调用链路相关联的链路快照信息;
B2、对该链路快照信息进行结构化处理,生成目标微服务中所有关键调用链路的运行信息和执行上下文信息。
可选的,测试执行设备可以利用度量监控模块捕获MIC相关的链路快照信息。目标微服务的应用代理会不断将目标微服务的restful接口调用、关键函数调用路径、输入输出结果、生成的日志等信息传递给度量监控模块。测试执行设备的录制模块会对链路快照信息进行结构化,并生成例如表1、表2所示的测试用例快照。
参照上述表2所示,录制模块记录了在MIC执行过程中目标微服务所有关键调用链路的运行信息,并以这样的方式定义MIC执行过程中所有关键调用链路的执行上下文信息,这样才能在测试用例快照执行时精准的还原测试执行情况。
S607、测试执行设备根据当前服务运行信息,生成目标微服务的测试用例快照。
可选的,当获取到触发停止录制的指令时,例如,获取到用户选择的停止录制指令,或者,根据用户定义的条件触发停止录制执行,或者,录制时间已经到达时,录制模块通知监控度量模块停止监控,并录制模块会获取到度量监控模块回传的当前服务运行信息。
相应的,录制模块根据监控度量模块返回的当前服务运行信息生成测试用例快照,并存储为JSON格式。进一步的,测试执行设备还可以将生成的测试用例快照发送给系统管理设备,进而将其保存到测试用例快照库中。
本申请实施例提供的云原生应用测试方法,系统管理设备获取到测试用例快照录制指示后,根据云原生应用的标识,获取云原生应用的测试架构信息,进而将该测试架构信息发送给测试执行设备,相应的,测试执行设备根据测试架构信息和预设的关键函数调用路径,确定需要监控的目标微服务,进而通过目标微服务的应用代理,获取目标微服务的配置信息以及捕获目标微服务的当前服务运行信息,进而生成目标微服务的测试用例快照。该技术方案中,系统管理设备和测试执行设备通过交互能够针对云原生应用中目标微服务生成测试用例快照,为后续的云原生应用测试奠定了基础。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7为本申请实施例提供的云原生应用测试装置实施例一的结构示意图。可选的,该云原生应用测试装置可以通过上述图1中的系统管理设备实现。
如图7所示,该云原生应用测试装置可以包括:
获取模块701,用于获取应用测试请求,所述应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路;
处理模块702,用于:
根据所述目标云原生应用的标识,确定所述目标云原生应用的理论测试架构信息和基础测试用例快照;
根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;
根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;
发送模块703,用于向测试执行设备发送测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识,所述测试执行设备用于根据所述目标核心调用链路和所述目标云原生应用的标识对所述可执行测试用例进行处理得到所述目标云原生应用的测试结果。
在本申请实施例的一种可能设计中,所述处理模块702,还用于确定所述理论测试架构信息处于有效状态;
其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配。
在本申请实施例的另一种可能设计中,所述获取模块701,还用于获取测试用例快照录制指示,所述测试用例快照录制指示包括:云原生应用的标识;
所述处理模块702,还用于根据所述云原生应用的标识,获取所述云原生应用的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
所述发送模块703,还将所述测试架构信息发送给所述测试执行设备。
本申请实施例提供的装置,可用于实现图3和图6所示实施例中系统管理设备的技术方案,其实现原理和技术效果类似,在此不再赘述。
图8为本申请实施例提供的云原生应用测试装置实施例二的结构示意图。可选的,该云原生应用测试装置可以通过上述图1中的测试执行设备实现。
如图8所示,该云原生应用测试装置可以包括:
接收模块801,用于接收系统管理设备发送的测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识;
处理模块802,用于:
根据所述目标核心调用链路,确定出所述目标云原生应用中的目标微服务;
执行所述可执行测试用例,得到所述目标微服务的运行状态信息;
根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果。
在本申请实施例的一种可能设计中,所述可执行测试用例的测试用例快照包括:树状分层次分布的测试用例;
所述处理模块802,用于执行所述可执行测试用例,得到所述目标微服务的运行状态信息,具体为:
所述处理模块802,具体用于采用层次遍历的方式依次执行所述可执行测试用例的测试用例快照在每层中的测试用例,得到所述目标微服务的运行状态信息。
可选的,所述处理模块802,还用于确定所述可执行测试用例对应测试用例快照的核心调用链路,以及根据所述核心调用链路,生成针对所述目标微服务的加压器,所述加压器用于提供服务访问压力;
相应的,所述处理模块802,还用于利用所述加压器对所述可执行测试用例进行加压处理。
在本申请实施例的另一种可能设计中,所述处理模块802,还用于确定数据网关处于测试状态;
其中,所述数据网关处于测试状态时,所述数据网关用于对接业务数据库和预设的测试数据库;
相应的,所述处理模块802,还用于在所述测试执行命令的读写操作来自于测试用例快照时,利用所述数据网关将所述测试执行命令路由到所述测试数据库,在所述测试执行命令的读写操作来自于正常业务数据时,利用所述数据网关将所述测试执行命令路由到所述业务数据库。
在本申请实施例的再一种可能设计中,所述接收模块801,还用于接收所述系统管理设备发送的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
所述处理模块802,还用于:
根据所述测试架构信息和预设的关键函数调用路径,确定需要监控的目标微服务;
通过所述目标微服务的应用代理,获取所述目标微服务的配置信息;
基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,所述当前服务运行信息包括:所有关键调用链路的运行信息和执行上下文信息;
根据所述当前服务运行信息,生成所述目标微服务的测试用例快照。
可选的,所述处理模块802,用于基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,具体为:
所述处理模块802,具体用于:
根据所述目标微服务的配置信息,捕获与所述目标微服务的核心调用链路相关联的链路快照信息;
对所述链路快照信息进行结构化处理,生成所述目标微服务中所有关键调用链路的运行信息和执行上下文信息。
本申请实施例提供的装置,可用于实现图2和图6所示实施例中测试执行设备的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图9为本申请提供的电子设备实施例的结构示意图。如图9所示,该电子设备可以包括:处理器901、存储器902、收发器903及存储在存储器902上并可在处理器901上运行的计算机程序;
在一种可能设计中,处理器901执行所述计算机程序时实现如上述方法实施例中系统管理设备的技术方案,在另一种可能设计中,处理器901执行所述计算机程序时实现如上述方法实施例中测试执行设备的技术方案。
可选的,在本实施例中,收发器903用于和其他设备进行通信。该电子设备还可以包括系统总线904。存储器902和收发器903通过系统总线904与处理器901连接并完成相互间的通信。
可选的,上述的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器可能包含随机存取存储器(random access memory,RAM),也可能包括只读存储器(read-only memory,RAM),还可能包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
收发器也可以称为通信接口,用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当该计算机执行指令在计算机上运行时,使得计算机执行如上述方法实施例中系统管理设备或测试执行设备的技术方案。
可选的,本申请实施例提供一种计算机程序产品,包括:计算机程序,所述计算机程序存储在可读存储介质中,所述计算机程序被执行时,用于实现上述方法实施例中系统管理设备或测试执行设备的技术方案。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (13)
1.一种云原生应用测试方法,其特征在于,应用于系统管理设备,所述方法包括:
获取应用测试请求,所述应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路;所述目标云原生应用包括至少一个核心服务,每个核心服务包括至少一个微服务,所述目标云原生应用包括多个核心调用链路;所述目标测试用例快照是所述目标云原生应用对应的测试用例快照中用户指定的测试用例快照,所述目标云原生应用对应的测试用例快照存储在所述系统管理设备中;
根据所述目标云原生应用的标识,获取所述系统管理设备中存储的所述目标云原生应用的理论测试架构信息和基础测试用例快照;所述理论测试架构信息包括所述目标云原生应用的所述核心服务和所述多个核心调用链路;
确定所述理论测试架构信息处于有效状态;其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配;
根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;
根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;
向测试执行设备发送测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识,所述测试执行设备用于根据所述目标核心调用链路和所述目标云原生应用的标识确定出所述目标核心调用链路对应的目标核心服务,根据所述目标核心服务确定出目标云原生应用中的目标微服务,以及对所述可执行测试用例进行处理得到所述目标云原生应用的所述目标微服务的运行状态信息,根据目标微服务的运行状态信息,确定所述目标云原生应用的测试结果。
2.根据权利要求1所述的方法,其特征在于,在所述获取应用测试请求之前,所述方法还包括:
获取测试用例快照录制指示,所述测试用例快照录制指示包括:云原生应用的标识;
根据所述云原生应用的标识,获取所述云原生应用的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
将所述测试架构信息发送给所述测试执行设备。
3.一种云原生应用测试方法,其特征在于,应用于测试执行设备,所述方法包括:
接收系统管理设备发送的测试执行命令,所述测试执行命令包括:可执行测试用例、目标核心调用链路和目标云原生应用的标识;
根据所述目标核心调用链路,确定出目标云原生应用中的目标微服务;
执行可执行测试用例,得到所述目标微服务的运行状态信息;
根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果;
所述系统管理设备用于:获取应用测试请求,所述应用测试请求包括:所述目标云原生应用的标识、目标测试用例快照和所述目标核心调用链路;所述目标云原生应用包括至少一个核心服务,每个核心服务包括至少一个微服务,所述目标云原生应用包括多个核心调用链路;所述目标测试用例快照是所述目标云原生应用对应的测试用例快照中用户指定的测试用例快照,所述目标云原生应用对应的测试用例快照存储在所述系统管理设备中;根据所述目标云原生应用的标识,获取所述系统管理设备中存储的所述目标云原生应用的理论测试架构信息和基础测试用例快照;所述理论测试架构信息包括所述目标云原生应用的所述核心服务和所述多个核心调用链路;确定所述理论测试架构信息处于有效状态;其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配;根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;向所述测试执行设备发送所述测试执行命令。
4.根据权利要求3所述的方法,其特征在于,所述可执行测试用例的测试用例快照包括:树状分层次分布的测试用例;
所述执行可执行测试用例,得到所述目标微服务的运行状态信息,包括:
采用层次遍历的方式依次执行所述可执行测试用例的测试用例快照在每层中的测试用例,得到所述目标微服务的运行状态信息。
5.根据权利要求4所述的方法,其特征在于,在所述根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果之前,所述方法还包括:
确定所述可执行测试用例对应测试用例快照的核心调用链路;
根据所述核心调用链路,生成针对所述目标微服务的加压器,所述加压器用于提供服务访问压力;
相应的,在所述执行所述可执行测试用例,得到所述目标微服务的运行状态信息之前,所述方法还包括:
利用所述加压器对所述可执行测试用例进行加压处理。
6.根据权利要求3所述的方法,其特征在于,在所述接收系统管理设备发送的测试执行命令之前,所述方法还包括:
确定数据网关处于测试状态;
其中,所述数据网关处于测试状态时,所述数据网关用于对接业务数据库和预设的测试数据库;
在所述接收系统管理设备发送的测试执行命令之后,所述方法还包括:
在所述测试执行命令的读写操作来自于测试用例快照时,利用所述数据网关将所述测试执行命令路由到所述测试数据库;
在所述测试执行命令的读写操作来自于正常业务数据时,利用所述数据网关将所述测试执行命令路由到所述业务数据库。
7.根据权利要求3-6任一项所述的方法,其特征在于,在所述接收系统管理设备发送的测试执行命令之前,所述方法还包括:
接收所述系统管理设备发送的测试架构信息,所述测试架构信息包括:核心服务和核心调用链路;
根据所述测试架构信息和预设的关键函数调用路径,确定需要监控的目标微服务;
通过所述目标微服务的应用代理,获取所述目标微服务的配置信息;
基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,所述当前服务运行信息包括:所有关键调用链路的运行信息和执行上下文信息;
根据所述当前服务运行信息,生成所述目标微服务的测试用例快照。
8.根据权利要求7所述的方法,其特征在于,所述基于所述目标微服务的配置信息,捕获所述目标微服务的当前服务运行信息,包括:
根据所述目标微服务的配置信息,捕获与所述目标微服务的核心调用链路相关联的链路快照信息;
对所述链路快照信息进行结构化处理,生成所述目标微服务中所有关键调用链路的运行信息和执行上下文信息。
9.一种云原生应用测试装置,其特征在于,包括:
获取模块,用于获取应用测试请求,所述应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路;所述目标云原生应用包括至少一个核心服务,每个核心服务包括至少一个微服务,所述目标云原生应用包括多个核心调用链路;所述目标测试用例快照是所述目标云原生应用对应的测试用例快照中用户指定的测试用例快照,所述目标云原生应用对应的测试用例快照存储在系统管理设备中;
处理模块,用于:
根据所述目标云原生应用的标识,获取所述系统管理设备中存储的所述目标云原生应用的理论测试架构信息和基础测试用例快照;所述理论测试架构信息包括所述目标云原生应用的所述核心服务和所述多个核心调用链路;
确定所述理论测试架构信息处于有效状态;其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配;
根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;
根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;
发送模块,用于向测试执行设备发送测试执行命令,所述测试执行命令包括:所述可执行测试用例、所述目标核心调用链路和所述目标云原生应用的标识,所述测试执行设备用于根据所述目标核心调用链路和所述目标云原生应用的标识确定出所述目标核心调用链路对应的目标核心服务,根据所述目标核心服务确定出目标云原生应用中的目标微服务,以及对所述可执行测试用例进行处理得到所述目标云原生应用的所述目标微服务的运行状态信息,根据目标微服务的运行状态信息,确定所述目标云原生应用的测试结果。
10.一种云原生应用测试装置,其特征在于,包括:
接收模块,用于接收系统管理设备发送的测试执行命令,所述测试执行命令包括:可执行测试用例、目标核心调用链路和目标云原生应用的标识;所述系统管理设备用于:获取应用测试请求,所述应用测试请求包括:目标云原生应用的标识、目标测试用例快照和目标核心调用链路;所述目标云原生应用包括至少一个核心服务,每个核心服务包括至少一个微服务,所述目标云原生应用包括多个核心调用链路;所述目标测试用例快照是所述目标云原生应用对应的测试用例快照中用户指定的测试用例快照,所述目标云原生应用对应的测试用例快照存储在所述系统管理设备中;根据所述目标云原生应用的标识,获取所述系统管理设备中存储的所述目标云原生应用的理论测试架构信息和基础测试用例快照;所述理论测试架构信息包括所述目标云原生应用的所述核心服务和所述多个核心调用链路;确定所述理论测试架构信息处于有效状态;其中,所述理论测试架构信息处于有效状态是指所述理论测试架构信息与所述目标云原生应用的当前测试架构信息相匹配;根据所述理论测试架构信息和所述目标测试用例快照,生成随机测试策略;根据所述随机测试策略和所述目标核心调用链路对所述基础测试用例快照进行处理,生成可执行测试用例;向所述测试执行设备发送所述测试执行命令;
处理模块,用于:
根据所述目标核心调用链路,确定出所述目标云原生应用中的目标微服务;
执行所述可执行测试用例,得到所述目标微服务的运行状态信息;
根据所述目标微服务的运行状态信息,确定所述目标云原生应用的测试结果。
11.一种电子设备,其特征在于,包括处理器、存储器、收发器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述权利要求1-2任一项所述的方法,或者,所述处理器执行所述计算机程序时实现如上述权利要求3-8任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述权利要求1-2任一项所述的方法;或者,所述计算机执行指令被处理器执行时用于实现如上述权利要求3-8任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括:计算机程序,所述计算机程序被处理器执行时用于实现如上述权利要求1-2任一项所述的方法;或者,所述计算机程序被处理器执行时用于实现如上述权利要求3-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111353905.3A CN114064475B (zh) | 2021-11-11 | 2021-11-11 | 云原生应用测试方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111353905.3A CN114064475B (zh) | 2021-11-11 | 2021-11-11 | 云原生应用测试方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064475A CN114064475A (zh) | 2022-02-18 |
CN114064475B true CN114064475B (zh) | 2024-08-20 |
Family
ID=80272495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111353905.3A Active CN114064475B (zh) | 2021-11-11 | 2021-11-11 | 云原生应用测试方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064475B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114996039A (zh) * | 2022-07-28 | 2022-09-02 | 云宏信息科技股份有限公司 | 基于第三方系统对接的云原生系统联调方法、系统及介质 |
CN115827500B (zh) * | 2023-02-24 | 2023-04-14 | 天翼云科技有限公司 | 一种云原生应用的调试方法、装置、设备及存储介质 |
CN116915516B (zh) * | 2023-09-14 | 2023-12-05 | 深圳市智慧城市科技发展集团有限公司 | 软件跨云交付方法、中转服务器、目标云及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463634A (zh) * | 2020-12-11 | 2021-03-09 | 中国人民银行清算总中心 | 微服务架构下的软件测试方法及装置 |
CN112685287A (zh) * | 2020-11-30 | 2021-04-20 | 青岛海尔科技有限公司 | 产品数据的测试方法、装置、存储介质及电子装置 |
CN113032263A (zh) * | 2021-03-25 | 2021-06-25 | 成都新希望金融信息有限公司 | 用例测试处理方法、装置、服务器及可读存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6922532B2 (ja) * | 2017-08-03 | 2021-08-18 | 富士通株式会社 | テスト実行制御プログラム、テスト実行制御方法、およびテスト実行制御装置 |
WO2019089446A1 (en) * | 2017-10-30 | 2019-05-09 | Hitachi Vantara Corporation | Generating testing infrastructure on a cloud for testing software applications |
CN109150978B (zh) * | 2018-07-24 | 2022-05-10 | 北京百度网讯科技有限公司 | 调试微服务的方法和装置 |
CN110620727B (zh) * | 2019-09-09 | 2022-02-22 | 平安科技(深圳)有限公司 | 多环境下的网关自动路由方法及相关设备 |
CN113626295B (zh) * | 2020-05-07 | 2023-07-07 | 云米互联科技(广东)有限公司 | 压测数据的处理方法、系统及计算机可读存储介质 |
CN112199276B (zh) * | 2020-09-24 | 2023-05-30 | 建信金融科技有限责任公司 | 微服务架构的变更检测方法、装置、服务器及存储介质 |
CN112486812A (zh) * | 2020-11-26 | 2021-03-12 | 北京海量数据技术股份有限公司 | 一种支持云的分布式框架软件测试方法及装置 |
CN112905486B (zh) * | 2021-03-26 | 2022-07-08 | 建信金融科技有限责任公司 | 一种服务集成测试方法、装置和系统 |
CN113220573B (zh) * | 2021-05-12 | 2024-06-25 | 北京百度网讯科技有限公司 | 用于微服务架构的测试方法、装置和电子设备 |
CN113505082B (zh) * | 2021-09-09 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 应用程序测试方法及装置 |
-
2021
- 2021-11-11 CN CN202111353905.3A patent/CN114064475B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685287A (zh) * | 2020-11-30 | 2021-04-20 | 青岛海尔科技有限公司 | 产品数据的测试方法、装置、存储介质及电子装置 |
CN112463634A (zh) * | 2020-12-11 | 2021-03-09 | 中国人民银行清算总中心 | 微服务架构下的软件测试方法及装置 |
CN113032263A (zh) * | 2021-03-25 | 2021-06-25 | 成都新希望金融信息有限公司 | 用例测试处理方法、装置、服务器及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114064475A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114064475B (zh) | 云原生应用测试方法、装置、设备及存储介质 | |
US9672137B1 (en) | Shadow test replay service | |
US20210303368A1 (en) | Operator management apparatus, operator management method, and operator management computer program | |
CN114979103A (zh) | 开放api集成整合及管理方法及计算机设备 | |
US20240160560A1 (en) | Testing automation for open standard cloud services applications | |
CN110838929B (zh) | 系统错误排查方法和系统错误排查装置 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
CN110058995A (zh) | 一种可避免数据库类型的干扰的数据库测试方法以及系统 | |
CN115796806A (zh) | 一种基于微服务的系统构建方法 | |
CN115269424A (zh) | 生产流量的自动回归测试方法、装置、设备及存储介质 | |
CN114385503A (zh) | 接口测试方法、装置、设备及存储介质 | |
CN114385498A (zh) | 性能测试方法、系统、计算机设备及可读存储介质 | |
US11074069B2 (en) | Replaying interactions with transactional and database environments with re-arrangement | |
CN112306848B (zh) | 微服务系统的架构视图生成方法及装置 | |
CN105824712A (zh) | 一种业务逻辑的执行方法和装置 | |
CN117235107B (zh) | 数据访问处理方法、装置、电子设备及存储介质 | |
CN102201945A (zh) | 模拟储存局域网络的测试系统 | |
CN112748981B (zh) | 虚拟网络功能的软件镜像的处理方法和装置 | |
WO2022269808A1 (ja) | ネットワーク管理装置、ネットワーク管理方法およびプログラム | |
US20240193032A1 (en) | Performing ci/cd error analysis involving software products that are dependent upon each other | |
US20210234921A1 (en) | Peer-to-peer blockchain fabric management mechanism | |
CN117632156A (zh) | 一种安装包部署方法、装置、电子设备及存储介质 | |
Punia et al. | Systematic Diagnostics for C4I Systems: A Conceptual Framework | |
CN116126687A (zh) | 接口模拟方法、装置、电子设备及存储介质 | |
CN116933263A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |