CN115599651A - 一种应用系统测试方法、装置、电子设备和存储介质 - Google Patents
一种应用系统测试方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115599651A CN115599651A CN202211323887.9A CN202211323887A CN115599651A CN 115599651 A CN115599651 A CN 115599651A CN 202211323887 A CN202211323887 A CN 202211323887A CN 115599651 A CN115599651 A CN 115599651A
- Authority
- CN
- China
- Prior art keywords
- fault
- application system
- tested
- performance
- testing
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 117
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000002347 injection Methods 0.000 claims abstract description 68
- 239000007924 injection Substances 0.000 claims abstract description 68
- 238000011056 performance test Methods 0.000 claims abstract description 63
- 238000012544 monitoring process Methods 0.000 claims abstract description 44
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000004088 simulation Methods 0.000 claims abstract description 31
- 238000013515 script Methods 0.000 claims description 41
- 230000000739 chaotic effect Effects 0.000 claims description 28
- 238000009434 installation Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 230000010354 integration Effects 0.000 claims description 14
- 238000009826 distribution Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 9
- 101150096185 PAAS gene Proteins 0.000 claims description 6
- 101001074449 Crotalus durissus terrificus Phospholipase A2 inhibitor CNF Proteins 0.000 claims description 5
- 238000010276 construction Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000001276 controlling effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 5
- 238000010998 test method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种应用系统测试方法、装置、电子设备和存储介质。其中,该方法包括:通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入,通过流量重放模块根据性能测试工具对注入所述故障后的所述待测应用系统进行流量模拟,通过集成监控模块监测所述待测应用系统在所述故障注入前后的性能指标。本发明实施例可适用于多种类型的复杂应用系统架构,实现了持续自动化测试,具有较高的测试效率,同时降低了应用系统测试的门槛,简化了测试人员手工操作,提高了测试便捷性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用系统测试方法、装置、电子设备和存储介质。
背景技术
随着各种应用系统架构向分布式、微服务等方向转变,系统的复杂度也随之增加。混沌工程,作为保障应用系统稳定性的重要技术,可以利用混沌工程测试提前探查系统风险,通过架构优化和运维模式的改进来解决系统风险,从而将故障扼杀在襁褓之中,建立系统抵御生产环境中发生不可预知问题的信心,进而提升系统的容错性。
然而,目前现有的混沌工程测试方法存在以下问题:
1、大多测试方法不能实现持续自动化测试功能,同时在故障注入时需要人为地输入注入故障命令,因此存在测试效率较低和耗时耗力的问题;
2、大多测试方法适用的应用系统范围较为单一,因此存在不具有普适性的问题;
3、大多测试方法需要测试人员具备较高的技术门槛,需要对待测应用系统和系统架构有较为深入的了解,因此存在混沌工程测试不便捷的问题。
发明内容
本发明提供了一种应用系统测试方法、装置、电子设备和存储介质,可适用于多种类型的复杂应用系统架构,可以实现持续自动化测试,具有较高的测试效率,同时降低了应用系统测试的门槛,简化了测试人员手工操作,提高了测试便捷性。
根据本发明的一方面,提供了一种应用系统测试方法,其中,该方法包括:
通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入;
通过流量重放模块根据性能测试工具对注入故障后的待测应用系统进行流量模拟;
通过集成监控模块监测待测应用系统在故障注入前后的性能指标。
根据本发明的另一方面,提供了一种应用系统测试装置,包括:
故障编排模块,用于从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入;
流量重放模块,用于根据性能测试工具对注入故障后的待测应用系统进行流量模拟;
集成监控模块,用于监测待测应用系统在故障注入前后的性能指标。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的应用系统测试方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的应用系统测试方法。
本发明实施例的技术方案,通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入,通过流量重放模块根据性能测试工具对注入故障后的待测应用系统进行流量模拟,通过集成监控模块监测待测应用系统在故障注入前后的性能指标。本发明实施例可适用于多种类型的复杂应用系统架构,实现了持续自动化测试,具有较高的测试效率,同时降低了应用系统测试的门槛,简化了测试人员手工操作,提高了测试便捷性。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种应用系统测试方法的流程图;
图2是根据本发明实施例二提供的一种应用系统测试方法的流程图;
图3是根据本发明实施例三提供的一种应用系统测试方法的流程图;
图4是根据本发明实施例三所适用的应用系统测试系统的结构示例图;
图5是根据本发明实施例三提供的任务分发的构建示例图;
图6是根据本发明实施例三提供的针对“服务器CPU利用率高”故障注入的构建示例图;
图7是根据本发明实施例三提供的针对“服务器磁盘IO负载高”故障注入的构建示例图;
图8是根据本发明实施例三提供的多故障注入的构建示例图;
图9是根据本发明实施例三提供的流量模拟的构建示例图;
图10是根据本发明实施例四提供的一种应用系统测试装置的结构示意图;
图11是实现本发明实施例的应用系统测试方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供了一种应用系统测试方法的流程图,本实施例可适用于对应用系统进行测试的情况,该方法可以由应用系统测试装置来执行,该应用系统测试装置可以采用硬件和/或软件的形式实现,该应用系统测试装置可配置于电子设备中。如图1所示,本实施例一提供的一种应用系统测试方法,具体包括如下步骤:
S110、通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入。
在本发明实施例中,故障编排模块可以理解为对故障进行一定的编排,使其按照规定的流程执行的软件模块。预设故障库可以理解为包含若干故障信息的数据库,预设故障库可以包括多种故障类型的故障。故障类型可以理解为待注入故障的类型,故障类型可以包括硬件故障、网络延迟和隔离、资源耗尽、拜占庭错误和下游依赖故障等。待测应用系统可以理解为用于测试的应用系统,待测应用系统可以包括但不限于以下之一:WAS服务器集群、CICS服务器集群、PAAS云服务器集群、批量服务器集群和数据库服务器。
具体地,可以通过故障编排模块按照故障名称、故障编号等信息在预设故障库中选取至少一种故障类型的故障,并让各故障按照顺序执行或者并行执行等故障编排方式,实现对待测应用系统进行故障注入,示例性地,可以通过破坏待测应用系统的服务器的中央处理器(Central Processing Unit,CPU)资源或者磁盘资源,进而实现服务器CPU利用率高或者服务器磁盘输入/输出(Input/Output,I/O)负载高的故障注入;进一步地,若只选取一种故障类型的故障时,故障编排模块可以将该故障直接注入待测应用系统中,即单一故障注入;若选取的故障数量大于或等于2时,故障编排模块可以对各故障的执行方式进行编排,例如可以将各故障按照顺序执行或者并行执行的方式对待测应用系统进行故障注入,即多故障注入。
S120、通过流量重放模块根据性能测试工具对注入故障后的待测应用系统进行流量模拟。
在本发明实施例中,流量重放模块可以理解为使用真实环境的流量对注入故障后的待测应用系统进行流量重放测试的软件模块。性能测试工具可以理解为用于对注入故障后的待测应用系统进行性能测试的工具,性能测试工具可以包括各种语言编写的性能测试脚本、LoadRunner以及JMeter等测试工具。流量模拟可以理解为使用真实环境的流量对注入故障后的待测应用系统进行真实业务流量模拟的过程。
具体地,流量重放模块可以利用LoadRunner等性能测试工具或者性能测试脚本,通过改变流量、并发用户数或同时在线用户数等信息,进而实现对注入故障后的待测应用系统进行流量模拟,示例性地,流量重放模块可以调用性能测试脚本或者LoadRunner等性能测试工具,并根据实际业务需求设置相应的并发用户数等信息,进而对注入故障后的待测应用系统进行真实业务流量模拟。
S130、通过集成监控模块监测待测应用系统在故障注入前后的性能指标。
在本发明实施例中,集成监控模块可以理解为用于获取待测应用系统的各项性能指标的软件模块,集成监控模块可以包括kylinPET、Nmon Analyser和PerfMon等性能监控工具或者插件。性能指标可以理解为用于衡量待测应用系统的性能优劣的指标,性能指标可以包括系统性能指标,例如响应时间、吞吐量、并发数和每秒事务数(Transaction PerSecond,TPS)等;资源性能指标,例如CPU利用率、内存利用率和磁盘利用率等;中间件指标,例如堆使用率、处于排队的用户请求数等;稳定性指标,例如最短稳定时间等,不同待测应用系统对应的性能指标可全包含上述各维度信息,也可仅包括上述部分维度信息,也可还包括更多维度的信息,本发明实施例对此不进行限制。
具体地,在对待测应用系统故障进行注入前后,可以通过集成监控模块例如NmonAnalyser和PerfMon等性能监控工具或者插件,实时对待测应用系统的各项性能指标(例如响应时间、TPS和成功率等)进行监控。在一些实施例中,可以利用JMeter性能测试工具的PerfMon插件,配置待测应用系统的服务器的IP地址、端口号和需要展示的资源项等信息,在PerfMon插件完成配置信息后,运行该插件即可实时获取故障注入前后的待测应用系统的各项性能指标。
本发明实施例的技术方案,通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入,通过流量重放模块根据性能测试工具对注入故障后的待测应用系统进行流量模拟,通过集成监控模块监测待测应用系统在故障注入前后的性能指标。本发明实施例可适用于多种类型的复杂应用系统架构,实现了持续自动化测试,具有较高的测试效率,同时降低了应用系统测试的门槛,简化了测试人员手工操作,提高了测试便捷性。
实施例二
图2为本发明实施例二提供的一种应用系统测试方法的流程图,基于上述实施方式进一步进行优化与扩展,并可以与上述实施方式中各个可选技术方案结合。如图2所示,本实施例二提供的一种应用系统测试方法,具体包括如下步骤:
S210、从预设故障库中按照待测应用系统的业务种类选取故障。
在本发明实施例中,业务种类可以理解为待测应用系统实现业务的种类,业务种类可以包括音/视频播放、银行交易、电子商务和数据存储等。
具体地,可以根据待测应用系统的业务种类,从预设故障库中选取对应的故障,示例性地,若待测应用系统的业务种类是音/视频播放,则可以从预设故障库中选取网络抖动、网络延时和网络丢包等故障;若待测应用系统的业务种类是银行交易,则可以从预设故障库中选取CPU利用率高和内存利用率高等故障;若待测应用系统的业务种类是电子商务,则可以从预设故障库中选取网络延时、网络抖动和网络端口不可通用等故障;若待测应用系统的业务种类是数据存储,则可以从预设故障库中选取CPU利用率高、内存利用率高和磁盘I/O繁忙等故障;需要说明的是,上述待测应用系统的业务种类的维度以及各维度对应的故障仅作为示例,在实际测试中,可以根据实际测试需要和目标测试计划书从预设故障库中选取合适的故障。
在一些实施例中,在S210之前,还可以包括:控制持续集成工具安装参数构建扩展插件和文件传输插件;调用参数构建扩展插件配置任务分发参数,并通过文件传输插件将预设混沌工程工具安装包发送至待测应用系统;控制待测应用系统根据预设混沌工程工具安装包安装预设混沌工程工具。
在本发明实施例中,持续集成工具可以理解为一类用于将开发者频繁需要构建、编译、测试和部署等操作自动进行的工具,持续集成工具可以包括Jenkins、TeamCity和Buddy等。构建扩展插件可以理解为用于参数化构建的插件,构建扩展插件可以包括GitParameter和Extended Choice Parameter等插件。文件传输插件可以理解为用于远程传输文件的插件,文件传输插件可以包括Publish Over SSH和Publish Over FTP等插件。任务分发参数可以理解为用于确定待测应用系统的目标服务器的参数,任务分发参数可以包括服务器的网络协议(Internet Protocol,IP)地址和端口号等参数。预设混沌工程工具可以理解为通过主动制造故障,测试待测应用系统在各种压力下的行为的测试工具,预设混沌工程工具可以包括ChaosBlade、ChaosToolkit和Netflix等工具。
具体地,可以在Jenkins等持续集成工具上安装参数构建扩展插件和文件传输插件,其中,参数构建扩展插件用于通过配置任务分发参数确定待测应用系统的目标服务器,文件传输插件用于将预设混沌工程工具安装包发送至待测应用系统,在待测应用系统对该安装包解压缩后,即可完成预设混沌工程工具的安装。在一些实施例中,可以调用GitParameter构建扩展插件和Publish Over SSH文件传输插件在Jenkins平台上配置目标服务器IP地址等任务分发参数,然后向目标服务器发送ChaosBlade混沌工程工具安装包,进而实现在待测应用系统的目标服务器安装ChaosBlade混沌工程工具。
S220、将故障注入待测应用系统。
具体地,可以通过ChaosBlade混沌工程工具将选取的故障注入到待测应用系统中,示例性地,若选取的故障为服务器CPU利用率高,可以通过ChaosBlade混沌工程工具向待测应用系统的目标服务器发送修改服务器CPU利用率(例如可以为80%)的指令,进而完成对待测应用系统的故障注入。
S230、确定流量模拟的性能测试脚本。
在本发明实施例中,性能测试脚本可以理解为用于对注入故障后的待测应用系统进行性能测试的工具,性能测试脚本可以包括XMeter测试脚本、LoadRunner测试脚本和JMeter测试脚本等。
具体地,可以通过录制(例如本地录制和代理录制等)的方式获取到用于下一步流量模拟的性能测试脚本,示例性地,可以通过截取并解析与目标服务器的交互协议包,进而生成脚本文件。在一些实施例中,可以通过在JMeter性能测试平台的超文本传输协议(Hyper Text Transfer Protocol,HTTP)代理服务器组件录制脚本模板中,配置HTTP请求的IP地址和端口号后,可以实现对目标服务器的性能测试脚本录制。
S240、调用参数构建扩展插件配置性能测试参数。
在本发明实施例中,性能测试参数可以理解为用于对注入故障后的待测应用系统进行性能测试所需的参数,性能测试参数可以包括但不限于以下之一:性能测试脚本ID、并发数、执行时间。
具体地,可以在Jenkins等持续集成工具上调用Git Parameter等构建扩展插件配置所需的性能测试参数,示例性地,可以在Jenkins平台上新建一个基础项目,并通过GitParameter插件配置性能测试所需的参数,例如性能测试脚本ID、并发数和脚本执行时间等。
S250、调用HTTP请求插件将性能测试参数封装成HTTP请求。
在本发明实施例中,HTTP请求可以理解为从客户端到服务器端的请求信息。HTTP请求插件可以理解为用于实现HTTP请求的插件,HTTP请求插件可以包括HTTP Request和Postman等插件。
具体地,可以在Jenkins等持续集成工具上调用HTTP Request等HTTP请求插件将性能测试参数封装成HTTP请求,示例性地,可以在Jenkins平台上调用HTTP Request插件,通过POST请求、PUT请求、GET请求或者DELETE请求等形式将上述性能测试参数封装成HTTP请求,关于HTTP Request插件的具体封装过程可以参考现有技术中的相关描述,这里不再赘述。
S260、根据流量重放模块按照HTTP请求内的性能测试参数调用性能测试脚本对待测应用系统进行流量模拟。
具体地,可以在Jenkins等持续集成工具上对HTTP请求内容进行解析,获取到相关的性能测试参数,例如性能测试脚本ID、并发数和执行时间等,进而根据性能测试脚本ID调用对应的性能测试脚本,以及按照性能测试脚本设置的并发数和执行时间对待测应用系统进行流量模拟。在一些实施例中,可以在Jenkins平台上解析出HTTP请求内容包含的性能测试脚本ID、并发数和执行时间等性能测试参数,进而根据性能测试脚本ID从预设性能脚本数据库中调用对应的性能测试脚本,并按照预设性能测试并发数和脚本执行时间对待测应用系统进行流量模拟。
S270、控制持续集成工具安装链接添加插件,并调用链接添加插件添加性能指标监控链接。
在本发明实施例中,链接添加插件可以理解为用于添加外部链接的插件,链接添加插件可以包括Sidebar Links和AnchorChain等插件。性能指标监控链接可以理解为用于监控待测应用系统的性能指标的外部链接,性能指标监控链接可以包括Prometheus(一款基于时序数据库的开源监控告警系统)和Redis缓存云平台等外部系统链接。
具体地,可以在Jenkins等持续集成工具上调用Sidebar Links等链接添加插件,添加Prometheus和Redis缓存云平台等外部性能指标监控链接。
S280、根据性能指标监控链接获取待测应用系统在故障注入前后的性能指标。
具体地,可以通过Prometheus和Redis缓存云平台等外部性能指标监控链接,对待测应用系统在故障注入前后的各项性能指标进行监控。在一些实施例中,可以通过与Jenkins平台连接的Prometheus和Redis缓存云平台等外部性能指标监控链接,实时获取待测应用系统在故障注入前后的各项性能指标,例如:CPU利用率、内存利用率、响应时间、成功率和TPS等;进一步地,可以对故障注入前后的待测应用系统的各项性能指标进行观察分析,若不符合预期性能指标值,则进一步定位问题根源,对待测应用系统进行相应的调整。
本发明实施例的技术方案,通过从预设故障库中按照待测应用系统的业务种类选取故障,将故障注入待测应用系统,确定流量模拟的性能测试脚本,调用参数构建扩展插件配置性能测试参数,调用HTTP请求插件将性能测试参数封装成HTTP请求,根据流量重放模块按照HTTP请求内的性能测试参数调用性能测试脚本对待测应用系统进行流量模拟,控制持续集成工具安装链接添加插件,并调用链接添加插件添加性能指标监控链接,根据性能指标监控链接获取待测应用系统在故障注入前后的性能指标。本发明实施例实现了故障库扩充和维护的简易化,可适用于多种类型的复杂应用系统架构,实现了持续自动化测试,具有较高的测试效率,同时降低了应用系统测试的门槛,简化了测试人员手工操作,提高了测试便捷性。
实施例三
图3为本发明实施例三提供的一种应用系统测试方法的流程图。本实施例在上述实施例的基础上,提供了一种应用系统测试方法的一个实施方式,能够快速对待测应用系统进行测试。本发明实施例在对待测应用系统进行混沌工程测试时,主要从以下三个方面开展,一是在WAS服务器集群上,进行系统层面、网络层面的故障场景测试;二是在PAAS云服务器集群上,进行容器层面、网络层面、数据和应用层面联机交易方面的故障场景测试;三是在批量服务器集群上,进行应用层面批量程序方面的故障场景测试。图4为本发明实施例三所适用的应用系统测试系统的结构示例图。
如图3所示,本发明实施例三提供的一种应用系统测试方法,具体包括如下步骤:
S310、基于Jenkins平台进行混沌工程测试故障库的建设。
具体地,针对混沌工程测试范围,在Jenkins平台进行混沌工程测试故障库的新增和维护操作,即对于WAS服务器、CICS服务器等非云上部分,利用Git Parameter插件在Jenkins平台上进行各种类型故障的基础参数配置,然后通过HTTP Request插件将上述参数封装成HTTP请求;对于PAAS云服务器部分,仍然先利用Git Parameter插件配置基础参数,然后通过Publish Over SSH插件修改目标服务器的YAML文件(一种可读性非常高,与程序语言数据结构非常接近,同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言)。经过上述步骤,可完成WAS服务器、CICS服务器、PAAS云服务器等各类资源的混沌工程测试故障库的建设。
S320、采用插件在Jenkins平台上进行任务分发,向目标服务器安装混沌工程工具。
具体地,在完成混沌工程测试故障库的建设后,通过Git Parameter和PublishOver SSH插件配置基础参数,然后通过构建的方式进行任务分发,向目标服务器安装ChaosBlade混沌工程工具,图5示出了任务分发的构建示例图。
S330、采用插件在在Jenkins平台上完成单一故障的注入。
具体地,在目标服务器中完成ChaosBlade混沌工程工具及部分插件的安装后,可对目标服务器进行单一故障的注入,即根据目标测试计划,从故障库中选取任意故障类型,在构建界面输入基础参数,即可完成单一故障的注入。在一些实施例中,针对“服务器CPU利用率高”的故障注入过程如下:首先基于Jenkins平台新建一个基础项目,并通过参数化构建配置一些默认参数,例如待注入故障的服务器IP、端口、CPU利用率、故障注入时长;然后采用HTTP Request插件将上述参数封装成HTTP请求,至此即是进行故障库的建设;最后进行故障注入时,只需要在构建页面通过直接修改上述参数的值来实现自动调起针对不同服务器不同CPU利用率的故障注入,图6示出了针对“服务器CPU利用率高”故障注入的构建示例图。
在另外一些实施例中,针对“服务器磁盘IO负载高”的故障注入过程如下:首先基于Jenkins平台新建一个基础项目,并通过参数化构建配置一些默认参数,例如待注入故障的服务器IP、端口、磁盘读/磁盘写/磁盘同时读写、磁盘IO的目录、故障注入时长;然后采用HTTP Request插件将上述参数封装成HTTP请求,至此即是进行故障库的建设;最后进行故障注入时,只需要在构建页面通过直接修改上述参数的值来实现自动调起针对不同服务器磁盘IO负载高的故障注入,图7示出了针对“服务器磁盘IO负载高”故障注入的构建示例图。
S340、基于Jenkins平台的多任务项目,使用Multijob Phase插件添加多个单一故障场景项目来实现Jenkins任务按顺序执行或并行执行,实现流程编排。
具体地,在进行单一故障注入后,可通过Jenkins平台进行流程编排,实现多故障注入。首先基于Jenkins平台新建一个多任务项目,然后使用Multijob Phase(用于让Jenkins任务按顺序执行或并行执行)插件添加多个单一故障场景项目来实现Jenkins任务按顺序执行或并行执行;最后在构建页面通过选择不同的单一故障场景,即可完成多故障注入,图8示出了多故障注入的构建示例图。
S350、将Jenkins平台与XMeter平台进行连接,自动调起执行任意性能脚本,实现流量模拟。
具体地,基于Jenkins平台新建一个基础项目,并通过参数化构建配置一些默认参数,例如Xmeter平台中性能测试脚本的id、性能测试并发数、性能脚本执行时间等;然后采用HTTP Request插件向Xmeter平台发送请求;最后在构建页面,可通过直接修改上述参数的值来实现自动调起执行任意性能脚本以实现流量模拟;同时也可将当前性能测试项目添加至S340中的Multijob Phase插件中,与各种类型的故障进行流程编排,按顺序执行或并行执行,图9示出了流量模拟的构建示例图。
S360、采用插件在Jenkins平台上添加外部监控系统链接,用于性能指标数据的查看。
具体地,基于Jenkins平台新建一个多任务项目,然后采用Sidebar Links插件添加Prometheus、Redis缓存云平台等外部系统链接,用于性能指标数据的查看。
S370、对待测应用系统在注入各种类型故障前后的性能指标数据进行观察,如果不符合预期结果,则进行深入分析,定位问题原因,并对该应用系统进行调整。
本发明实施例的技术方案,通过基于Jenkins平台进行混沌工程测试故障库的建设,采用插件在Jenkins平台上进行任务分发,向目标服务器安装混沌工程工具,采用插件在在Jenkins平台上完成单一故障的注入,基于Jenkins平台的多任务项目,使用MultijobPhase插件添加多个单一故障场景项目来实现Jenkins任务按顺序执行或并行执行,实现流程编排,将Jenkins平台与XMeter平台进行连接,自动调起执行任意性能脚本,实现流量模拟,采用插件在Jenkins平台上添加外部监控系统链接,用于性能指标数据的查看,对待测应用系统在注入各种类型故障前后的性能指标数据进行观察,如果不符合预期结果,则进行深入分析,定位问题原因,并对该应用系统进行调整。本发明实施例实现了支持在Jenkins平台直接对故障库进行补充和维护,且该故障库与应用系统完全分离,扩展性强,可最大程度地用于各种应用系统;在进行故障注入时,提供清晰的前台界面,测试人员只需要理解界面要素的含义,即可用最便捷的方式对待测应用系统进行故障注入,开展混沌工程测试,极大地减少了时间成本,且操作简单;基于Jenkins平台实现了混沌工程工具自动安装、单故障注入、多故障注入、任务编排等,支持将性能脚本与各种类型的故障进行统一编排,无论是故障注入还是流量模拟,均可以自动调起与执行,有效地提升了混沌工程测试效率。
实施例四
图10为本发明实施例四提供的一种应用系统测试装置的结构示意图。如图10所示,该装置包括:
故障编排模块41,用于从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入。
流量重放模块42,用于根据性能测试工具对注入故障后的待测应用系统进行流量模拟。
集成监控模块43,用于监测待测应用系统在故障注入前后的性能指标。
本发明实施例的技术方案,通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入,通过流量重放模块根据性能测试工具对注入故障后的待测应用系统进行流量模拟,通过集成监控模块监测待测应用系统在故障注入前后的性能指标。本发明实施例可适用于多种类型的复杂应用系统架构,实现了持续自动化测试,具有较高的测试效率,同时降低了应用系统测试的门槛,简化了测试人员手工操作,提高了测试便捷性。
进一步地,在上述发明实施例的基础上,故障编排模块41包括:
故障选取单元,用于从预设故障库中按照待测应用系统的业务种类选取故障。
故障注入单元,用于将故障注入待测应用系统。
进一步地,在上述发明实施例的基础上,流量重放模块42包括:
测试脚本确定单元,用于确定流量模拟的性能测试脚本。
参数配置单元,用于调用参数构建扩展插件配置性能测试参数。
HTTP请求封装单元,用于调用HTTP请求插件将性能测试参数封装成HTTP请求。
流量模拟单元,用于根据流量重放模块按照HTTP请求内的性能测试参数调用性能测试脚本对待测应用系统进行流量模拟。
进一步地,在上述发明实施例的基础上,集成监控模块43包括:
监控链接添加单元,用于控制持续集成工具安装链接添加插件,并调用链接添加插件添加性能指标监控链接。
性能指标监控单元,用于根据性能指标监控链接获取待测应用系统在故障注入前后的性能指标。
在一些实施例中,在通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入之前,还可以包括:
插件安装模块,用于控制持续集成工具安装参数构建扩展插件和文件传输插件;
任务分发模块,用于调用参数构建扩展插件配置任务分发参数,并通过文件传输插件将预设混沌工程工具安装包发送至待测应用系统;
混沌工程工具安装模块,用于控制待测应用系统根据预设混沌工程工具安装包安装预设混沌工程工具。
在一些实施例中,性能测试参数包括以下至少之一:性能测试脚本ID、并发数、执行时间。
在一些实施例中,待测应用系统包括以下至少之一:WAS服务器集群、CICS服务器集群、PAAS云服务器集群、批量服务器集群、数据库服务器。
本发明实施例所提供的应用系统测试装置可执行本发明任意实施例所提供的应用系统测试方法,具备执行方法相应的功能模块和有益效果。
实施例五
图11示出了可以用来实施本发明的实施例的电子设备50的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图11所示,电子设备50包括至少一个处理器51,以及与至少一个处理器51通信连接的存储器,如只读存储器(ROM)52、随机访问存储器(RAM)53等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器51可以根据存储在只读存储器(ROM)52中的计算机程序或者从存储单元58加载到随机访问存储器(RAM)53中的计算机程序,来执行各种适当的动作和处理。在RAM 53中,还可存储电子设备50操作所需的各种程序和数据。处理器51、ROM 52以及RAM 53通过总线54彼此相连。输入/输出(I/O)接口55也连接至总线54。
电子设备50中的多个部件连接至I/O接口55,包括:输入单元56,例如键盘、鼠标等;输出单元57,例如各种类型的显示器、扬声器等;存储单元58,例如磁盘、光盘等;以及通信单元59,例如网卡、调制解调器、无线通信收发机等。通信单元59允许电子设备50通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器51可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器51的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器51执行上文所描述的各个方法和处理,例如应用系统测试方法。
在一些实施例中,应用系统测试方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元58。在一些实施例中,计算机程序的部分或者全部可以经由ROM 52和/或通信单元59而被载入和/或安装到电子设备50上。当计算机程序加载到RAM 53并由处理器51执行时,可以执行上文描述的应用系统测试方法的一个或多个步骤。备选地,在其他实施例中,处理器51可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行应用系统测试方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种应用系统测试方法,其特征在于,包括:
通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入;
通过流量重放模块根据性能测试工具对注入所述故障后的所述待测应用系统进行流量模拟;
通过集成监控模块监测所述待测应用系统在所述故障注入前后的性能指标。
2.根据权利要求1所述的方法,其特征在于,在所述通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入之前,还包括:
控制持续集成工具安装参数构建扩展插件和文件传输插件;
调用所述参数构建扩展插件配置任务分发参数,并通过所述文件传输插件将预设混沌工程工具安装包发送至所述待测应用系统;
控制所述待测应用系统根据所述预设混沌工程工具安装包安装预设混沌工程工具。
3.根据权利要求1所述的方法,其特征在于,所述通过故障编排模块从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入,包括:
从所述预设故障库中按照所述待测应用系统的业务种类选取所述故障;
将所述故障注入所述待测应用系统。
4.根据权利要求1所述的方法,其特征在于,所述性能测试工具包括性能测试脚本,相应的,所述通过流量重放模块根据性能测试工具对注入所述故障后的所述待测应用系统进行流量模拟,包括:
确定所述流量模拟的性能测试脚本;
调用所述参数构建扩展插件配置性能测试参数;
调用HTTP请求插件将所述性能测试参数封装成HTTP请求;
根据所述流量重放模块按照所述HTTP请求内的所述性能测试参数调用所述性能测试脚本对所述待测应用系统进行所述流量模拟。
5.根据权利要求4所述的方法,其特征在于,所述性能测试参数包括以下至少之一:
性能测试脚本ID、并发数、执行时间。
6.根据权利要求1所述的方法,其特征在于,所述通过集成监控模块监测所述待测应用系统在所述故障注入前后的性能指标,包括:
控制所述持续集成工具安装链接添加插件,并调用所述链接添加插件添加性能指标监控链接;
根据所述性能指标监控链接获取所述待测应用系统在所述故障注入前后的性能指标。
7.根据权利要求1-6中所述的方法,其特征在于,所述待测应用系统包括以下至少之一:
WAS服务器集群、CICS服务器集群、PAAS云服务器集群、批量服务器集群、数据库服务器。
8.一种应用系统测试装置,其特征在于,包括:
故障编排模块,用于从预设故障库中确定至少一种故障类型的故障对待测应用系统进行故障注入;
流量重放模块,用于根据性能测试工具对注入所述故障后的所述待测应用系统进行流量模拟;
集成监控模块,用于监测所述待测应用系统在所述故障注入前后的性能指标。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的应用系统测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的应用系统测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211323887.9A CN115599651A (zh) | 2022-10-27 | 2022-10-27 | 一种应用系统测试方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211323887.9A CN115599651A (zh) | 2022-10-27 | 2022-10-27 | 一种应用系统测试方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599651A true CN115599651A (zh) | 2023-01-13 |
Family
ID=84851120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211323887.9A Pending CN115599651A (zh) | 2022-10-27 | 2022-10-27 | 一种应用系统测试方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599651A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116405412A (zh) * | 2023-02-24 | 2023-07-07 | 中电金信软件有限公司 | 服务端集群的有效性验证方法和系统 |
-
2022
- 2022-10-27 CN CN202211323887.9A patent/CN115599651A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116405412A (zh) * | 2023-02-24 | 2023-07-07 | 中电金信软件有限公司 | 服务端集群的有效性验证方法和系统 |
CN116405412B (zh) * | 2023-02-24 | 2024-05-03 | 中电金信数字科技集团有限公司 | 基于混沌工程故障模拟服务端集群有效性验证方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9658895B2 (en) | System and method for configuring boot-time parameters of nodes of a cloud computing system | |
US8887056B2 (en) | System and method for configuring cloud computing systems | |
CN106776280B (zh) | 可配置性能测试装置 | |
US20190340115A1 (en) | System and method for automated thin client contact center agent desktop testing | |
US20140047084A1 (en) | System and method for modifying a hardware configuration of a cloud computing system | |
US20140047272A1 (en) | System and method for configuring a cloud computing system with a synthetic test workload | |
US20140047342A1 (en) | System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics | |
US20140047095A1 (en) | System and method for tuning a cloud computing system | |
US20140047079A1 (en) | System and method for emulating a desired network configuration in a cloud computing system | |
WO2014025584A1 (en) | System and method for tuning a cloud computing system | |
CN113377665B (zh) | 基于容器技术的测试方法、装置、电子设备及存储介质 | |
CN102696013A (zh) | 用于预测多层计算机软件系统的性能的方法和设备 | |
US11394807B2 (en) | Critical path estimation for accelerated and optimal loading of web pages | |
Lin et al. | Tracing function dependencies across clouds | |
Lei et al. | Performance and scalability testing strategy based on kubemark | |
US10122602B1 (en) | Distributed system infrastructure testing | |
US11301362B1 (en) | Control system for distributed load generation | |
CN115599651A (zh) | 一种应用系统测试方法、装置、电子设备和存储介质 | |
CN111984523B (zh) | 消息处理任务测试方法、装置、系统、设备及介质 | |
Tchana et al. | A self-scalable and auto-regulated request injection benchmarking tool for automatic saturation detection | |
CN112131095A (zh) | 压力测试方法和装置 | |
Anderson | Performance modelling of reactive web applications using trace data from automated testing | |
CN115470193A (zh) | 一种雷达数据模拟方法、装置、设备及介质 | |
CN118158130A (zh) | 一种网络质量分析系统、方法、设备及存储介质 | |
CN117290014A (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 |