CN111290942A - 压力测试方法、装置以及计算机可读介质 - Google Patents
压力测试方法、装置以及计算机可读介质 Download PDFInfo
- Publication number
- CN111290942A CN111290942A CN201811505464.2A CN201811505464A CN111290942A CN 111290942 A CN111290942 A CN 111290942A CN 201811505464 A CN201811505464 A CN 201811505464A CN 111290942 A CN111290942 A CN 111290942A
- Authority
- CN
- China
- Prior art keywords
- test
- threads
- shared memory
- request
- pressure 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
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
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
本发明实施例提供一种压力测试方法和压力测试装置,所述压力测试方法包括:步骤1,从测试文件中读取测试用例,并写入到第一共享内存中;步骤2,从所述第一共享内存中读取所述测试用例,根据所述测试用例生成多个线程,控制所述多个线程向被测服务器发送请求,并记录所述多个线程的请求发送时间到第二共享内存中;步骤3,从所述第二共享内存中读取请求发送时间并从所述被测服务器接收请求回应,并整理成测试结果数据,其中,所述步骤1至3分别在一个线程或进程中执行。所述压力测试方法异步处理发送请求和接收请求响应,能够规避部署服务器的性能瓶颈,从而避免由于部署服务器的性能瓶颈而影响到性能测试。
Description
技术领域
本发明涉及计算机领域,具体涉及压力测试方法、装置以及计算机可读介质。
背景技术
目前主流压力测试工具主要是Loadrunner,Jmeter两种,这两种工具使用流程为先选择压力测试脚本,然后配置并发线程的数量,在点击运行执行性能测试场景实现对被测服务的性能测试。测试过程中,每个并发线程都操作以下四个步骤:1.和被测服务建立连接2.发送请求包3.接受请求回应包4.不断循环步骤1,2,3。从中可以看出,这两种工具采用的是同步发送请求和接收请求的方式,故压力测试工具的性能可能会受到压力测试工具部署在其上的部署服务器的性能限制,从而可能导致压力测试工具的性能不如预期。进一步地,当压力测试工具反馈性能问题时,由于部署服务器的性能瓶颈,可能导致无法准确定位性能问题来自被测服务自身,还是来自部署服务器。
发明内容
有鉴于此,本发明实施例提供一种压力测试方法,将发送请求和接收请求放在各自独立的进程或线程中执行,已解决部署服务器的性能瓶颈。
根据本发明的第一方面,提供一种压力测试方法,包括:
步骤1,从测试文件中读取测试用例,并写入到第一共享内存中;
步骤2,从所述第一共享内存中读取所述测试用例,根据所述测试用例生成多个线程,控制所述多个线程向被测服务器发送请求,并记录所述多个线程的请求发送时间到第二共享内存中;
步骤3,从所述第二共享内存中读取请求发送时间并从所述被测服务器接收请求回应,并整理成测试结果数据,
其中,所述步骤1至3分别在各自独立的线程或进程中执行。
优选地,所述压力测试方法还包括:在生成多个线程之前,向所述被测服务器发送多个请求并接受请求回应,据此计算所述多个线程的生成数量和所述多个线程发送请求的时间间隔。
优选地,所述压力测试方法还包括:将所述测试结果数据写入到第三共享内存中,
所述压力测试方法还包括:第四线程从第三共享内存中读取测试结果数据,并写入到监控***的内存中。
优选地,所述压力测试方法还包括:所述监控***读取内存中的测试结果数据并显示到客户端界面上。
优选地,所述多个线程为异步线程。
优选地,所述压力测试方法还包括:实时打印测试结果数据。
优选地,所述压力测试方法还包括:根据测试结果数据计算性能指标,并生成测试报告。
根据本发明实施例的第二方面,提供一种压力测试装置,包括:
用例处理模块,用于从测试文件中读取测试用例,并写入到第一共享内存中;
测试执行模块,用于从所述第一共享内存中读取所述测试用例,根据所述测试用例生成多个线程,并控制所述多个线程向被测服务器发送请求,并记录请求发送时间到第二共享内存中;
结果整理模块,用于从所述第二共享内存中读取请求发送时间并从所述被测服务器接收请求回应,并整理成测试结果数据,
其中,所述用例处理模块、所述测试执行模块和所述结果整理模块分别在各自独立的线程或进程中执行。
优选地,所述测试执行模块还包括:生成多个线程之前,向所述被测服务器发送多个请求并接受请求回应,据此计算所述多个线程的生成数量和所述多个线程发送请求的时间间隔。
优选地,所述多个线程为异步线程。
根据本发明实施例的第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述任一项的压力测试方法。
根据本发明实施例的第四方面,提供一种压力测试装置,包括:
存储器,用于存储计算机指令;
处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现上述任一项的压力测试方法。
本发明一实施例具有以下优点或有益效果:将发送请求和接收请求响应放在不同的线程或进程中处理,能够规避部署服务器的性能瓶颈,从而避免由于部署服务器的性能瓶颈而影响到性能测试。进一步地,通过多个线程发送请求,有助于满足高频发送请求的需求。
进一步地,将文件中的测试用例写入到共享内存中,当发送请求时,从共享内存中读取测试用例,避免文件I/O操作,有助于满足发送请求时的性能要求。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明第一实施例的压力测试方法的流程图;
图2是本发明第二实施例的压力测试方法的示意图;
图3是本发明第三实施例的压力测试装置的示意图;
图4是本发明第四实施例的压力测试装置的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
图1是本发明第一实施例的压力测试方法的流程图。具体包括以下步骤S101-S103,其中,步骤S101-S103分别在三个线程或进程中执行。具体如下。
在步骤S101中,从测试文件中读取测试用例,并写入到第一共享内存中。
在步骤S102中,从第一共享内存中读取测试用例,根据测试用例生成多个线程,控制多个线程向被测服务器发送请求,并记录多个线程的请求发送时间到第二共享内存中。
在步骤S103中,从第二共享内存中读取请求发送时间并从被测服务器接收请求回应,并整理成测试结果数据。
在本实施例中,测试文件包括多个测试用例。每个测试用例例如包括设定时间、请求数量、请求内容等信息,即通过在设定时间发送设定数量的请求并根据请求结果判定被测服务的性能指标。
在本实施例中,先采用第一线程或进程将测试文件中的测试用例都写入到第一共享内容中,然后采用第二线程或进程从第一共享内存中读取测试用例,并生成多个线程,每个线程发送若干个请求,并将每个线程的请求日志记录到第二共享内存中,请求日志包含请求发送时间、发送请求的线程ID,接着采用第三线程或进程从被测服务器接收请求回应,并从第二共享内存中读取请求日志,将请求日志和请求回应信息整理成测试结果数据。从而,请求发送和接收请求实现异步处理,规避了由于部署服务器的性能瓶颈导致的处理不及时的问题,从而避免由于部署服务器的性能瓶颈影响到被测服务的性能测试。进一步地,将测试用例写入到共享内存中,当发送请求时,从共享内存中读取测试用例,避免文件I/O操作,有助于达到发送请求的性能要求。同时,通过多个线程发送请求,有助于满足高频发送请求的需求。
图2是本发明第二实施例的压力测试方法的示意图。
参见图2,在模块201中,创建线程1-1,线程1-1顺序执行步骤S301和S302。S301从测试文件2011中读取数据,步骤S302将数据写入到共享内存2012中。在模块202中,首先执行步骤S401,步骤S401从共享内存2012中读取数据,然后执行步骤S402,步骤S402根据读取到的数据和设定的规则计算生成线程的数量和时间间隔,生成的N个线程。再分别执行步骤S403和S404,即向服务器300上的被测服务发送请求,并记录请求发送时间到共享内存2021。在模块203中,创建线程1-2,线程1-2执行步骤S405,即从共享内存2012中读取数据,并执行步骤S406和S407,即接收请求返回,并记录请求回应时间,将整理好的测试结果数据并写入到共享内存2022。在模块204中,创建线程1-3,线程1-3执行步骤S408,即定时从共享内存2022读取数据,并执行步骤S409,即将数据写入到内存2023,监控***205从内存2023中读取数据,并在客户端界面上显示。应该指出,为了达到本发明实施例的压力测试效果,模块201、202、203优选为在各自独立的线程或进程中执行。
上述实施例中采用共享内存2022存储测试结果数据。可选地,模块203还可以将测试结果数据生成测试报告。可选地,模块203还可以采集诸如AVG,TP50,TP90,TP99,TP999,调用次数,错误数等性能指标作为测试结果数据的一部分。AVG为内存或CPU平均使用情况。TP50指在一个时间段内(如5分钟),统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,取第50%的那个值作为TP50值;配置此监控指标对应的报警阀值后,需要保证在这个时间段内该方法所有调用的消耗时间至少有50%的值要小于此阀值,否则***将会报警。TP90,TP99,TP999与TP50值计算方式一致,它们分别代表着对方法的不同性能要求,TP50相对较低,TP90则比较高,TP99,TP999则对方法性能要求很高。
模块201、202和203组成测试工具,通常部署在同一台服务器上。该服务器即背景技术中所述的部署服务器。被测服务通常部署在另一台服务器上。根据本发明实施例,只需要定期更新测试文件,不需要编写压力测试脚本,就可以完成压力测试,从而减轻了测试人员的工作压力。
图3是本发明第三实施例的压力测试装置的示意图。压力测试装置300包括用例处理模块301、测试执行模块302、结果整理模块303和创建模块304。创建模块304用于创建三个线程或进程,使得其他模块分别在一个独立的线程或进程中执行。当然创建模块304本身既可以是一个单线程或单进程,也可以是一个多线程或多进程。当创建模块304是一个单线程或单进程时,负责整个流程的控制工作,还可以负责读取一些配置信息和资源回收工作。当创建模块304是一个多进程或多线程时,则将其负责的工作分配到不同的进程或线程中进行。
用例处理模块301用于从测试文件中读取测试用例,并写入到第一共享内存中。
测试执行模块302用于从第一共享内存中读取测试用例,根据测试用例生成多个线程,并控制所述多个线程向被测服务器发送请求,并记录请求发送时间到第二共享内存中。
结果整理模块303用于从第二共享内存中读取请求发送时间并从被测服务器接收请求回应,并整理成测试结果数据。
在一个实施例中,上述压力测试装置300还包括:计算模块,用于向被测服务发送多个请求并接受请求回应,据此计算所述多个线程的生成数量和多个线程发送请求的时间间隔。计算模块可以在测试执行模块302所在的线程或进程中执行,也可以在创建模块304所在的线程或进程中执行。
在一个实施例中,测试执行模块302创建的多个线程为异步线程。异步线程在发送请求后,不必等待请求回应,从而能够在不同的线程或进程中发送请求和接收请求回应。
图4是本发明第四实施例的压力测试装置的示意图。图4示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。
参考图4,该装置包括通过总线连接的处理器401、存储器402和输入输出设备403。存储器402包括只读存储器(ROM)和随机访问存储器(RAM),存储器402内存储有执行***功能所需的各种计算机指令和数据,处理器401从存储器402中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。存储器402还存储有以下的计算机指令以完成本发明实施例的装置规定的操作:步骤1,从测试文件中读取测试用例,并写入到第一共享内存中;步骤2,从所述第一共享内存中读取所述测试用例,根据所述测试用例生成多个线程,控制所述多个线程向被测服务器发送请求,并记录所述多个线程的请求发送时间到第二共享内存中;步骤3,从所述第二共享内存中读取请求发送时间并从所述被测服务器接收请求回应,并整理成测试结果数据,其中,所述步骤1至3分别在各自独立的线程或进程中执行。
相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述方法所规定的操作。
附图中的流程图、框图图示了本发明实施例的***、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
***的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其特征在于的某些步骤并行或按照相反顺序执行。
根据本发明的***和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或***,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种压力测试方法,其特征在于,包括:
步骤1,从测试文件中读取测试用例,并写入到第一共享内存中;
步骤2,从所述第一共享内存中读取所述测试用例,根据所述测试用例生成多个线程,控制所述多个线程向被测服务器发送请求,并记录发送日志到第二共享内存中;
步骤3,从所述第二共享内存中读取所述发送日志并从所述被测服务器接收请求回应,并整理成测试结果数据,
其中,所述步骤1至3分别在一个线程或一个进程中执行。
2.根据权利要求1所述的压力测试方法,其特征在于,还包括:
在生成多个线程之前,向所述被测服务器发送多个请求并接受请求回应,据此确定所述多个线程的生成数量和所述多个线程发送请求的时间间隔。
3.根据权利要求1所述的压力测试方法,其特征在于,还包括:
将所述测试结果数据写入到第三共享内存中;以及
从第三共享内存中读取测试结果数据,并写入到监控***的内存中。
4.根据权利要求3所述的压力测试方法,其特征在于,还包括:
所述监控***读取内存中的测试结果数据并显示到客户端界面上。
5.根据权利要求1所述的压力测试方法,其特征在于,所述多个线程均为异步线程。
6.根据权利要求1所述的压力测试方法,其特征在于,还包括:实时打印测试结果数据。
7.根据权利要求1所述的压力测试方法,其特征在于,还包括:根据测试结果数据计算性能指标,并生成测试报告。
8.一种压力测试装置,包括:
创建模块,用于创建三个线程或进程,使所述用例处理模块、所述测试执行模块和所述结果整理模块分别在一个线程或进程中执行;
用例处理模块,用于从测试文件中读取测试用例,并写入到第一共享内存中;
测试执行模块,用于从所述第一共享内存中读取所述测试用例,根据所述测试用例生成多个线程,并控制所述多个线程向被测服务器发送请求,并记录请求发送时间到第二共享内存中;
结果整理模块,用于从所述第二共享内存中读取请求发送时间并从所述被测服务器接收请求回应,并整理成测试结果数据。
9.根据权利要求8所述的压力测试装置,其特征在于,还包括:计算模块,用于向所述被测服务器发送多个请求并接受请求回应,据此计算所述多个线程的生成数量和所述多个线程发送请求的时间间隔。
10.根据权利要求8所述的压力测试装置,其特征在于,所述多个线程为异步线程。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如权利要求1至7任一项所述的压力测试方法。
12.一种压力测试装置,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现如权利要求1至7中任一项所述的压力测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811505464.2A CN111290942A (zh) | 2018-12-10 | 2018-12-10 | 压力测试方法、装置以及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811505464.2A CN111290942A (zh) | 2018-12-10 | 2018-12-10 | 压力测试方法、装置以及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111290942A true CN111290942A (zh) | 2020-06-16 |
Family
ID=71021340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811505464.2A Pending CN111290942A (zh) | 2018-12-10 | 2018-12-10 | 压力测试方法、装置以及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111290942A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148616A (zh) * | 2020-09-30 | 2020-12-29 | 中国民航信息网络股份有限公司 | 一种性能测试管理平台 |
CN112732575A (zh) * | 2021-01-08 | 2021-04-30 | 北京虹信万达科技有限公司 | 一种基于信息技术应用创新环境下的业务***测试方法 |
CN116594884A (zh) * | 2023-05-16 | 2023-08-15 | 上海安般信息科技有限公司 | 一种基于使用并发方式的模糊测试方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1728657A (zh) * | 2004-07-30 | 2006-02-01 | Ut斯达康通讯有限公司 | 用于流媒体服务的负载模拟器以及负载模拟*** |
CN1953401A (zh) * | 2005-10-20 | 2007-04-25 | 英业达股份有限公司 | 一种多线程的网络压力测试方法 |
CN103138995A (zh) * | 2011-11-24 | 2013-06-05 | 中兴通讯股份有限公司 | 服务器性能测试的方法和装置 |
CN103544102A (zh) * | 2013-09-02 | 2014-01-29 | 烟台中科网络技术研究所 | 一种软件性能测试模拟方法及装置 |
-
2018
- 2018-12-10 CN CN201811505464.2A patent/CN111290942A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1728657A (zh) * | 2004-07-30 | 2006-02-01 | Ut斯达康通讯有限公司 | 用于流媒体服务的负载模拟器以及负载模拟*** |
CN1953401A (zh) * | 2005-10-20 | 2007-04-25 | 英业达股份有限公司 | 一种多线程的网络压力测试方法 |
CN103138995A (zh) * | 2011-11-24 | 2013-06-05 | 中兴通讯股份有限公司 | 服务器性能测试的方法和装置 |
CN103544102A (zh) * | 2013-09-02 | 2014-01-29 | 烟台中科网络技术研究所 | 一种软件性能测试模拟方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148616A (zh) * | 2020-09-30 | 2020-12-29 | 中国民航信息网络股份有限公司 | 一种性能测试管理平台 |
CN112148616B (zh) * | 2020-09-30 | 2024-04-26 | 中国民航信息网络股份有限公司 | 一种性能测试管理平台 |
CN112732575A (zh) * | 2021-01-08 | 2021-04-30 | 北京虹信万达科技有限公司 | 一种基于信息技术应用创新环境下的业务***测试方法 |
CN116594884A (zh) * | 2023-05-16 | 2023-08-15 | 上海安般信息科技有限公司 | 一种基于使用并发方式的模糊测试方法及装置 |
CN116594884B (zh) * | 2023-05-16 | 2023-10-27 | 上海安般信息科技有限公司 | 一种基于使用并发方式的模糊测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3447642B1 (en) | System and method for predicting application performance for large data size on big data cluster | |
US9483383B2 (en) | Injecting faults at select execution points of distributed applications | |
US9229838B2 (en) | Modeling and evaluating application performance in a new environment | |
US10116534B2 (en) | Systems and methods for WebSphere MQ performance metrics analysis | |
US10452463B2 (en) | Predictive analytics on database wait events | |
US20130081001A1 (en) | Immediate delay tracker tool | |
US10135693B2 (en) | System and method for monitoring performance of applications for an entity | |
CN111290942A (zh) | 压力测试方法、装置以及计算机可读介质 | |
US10528456B2 (en) | Determining idle testing periods | |
CN111949545A (zh) | 自动化测试方法、***、服务器及存储介质 | |
US20220171689A1 (en) | Distributed Tracing Of Huge Spans for Application and Dependent Application Performance Monitoring | |
US20140067886A1 (en) | Information processing apparatus, method of outputting log, and recording medium | |
KR20150118963A (ko) | 큐 모니터링 및 시각화 | |
US11169910B2 (en) | Probabilistic software testing via dynamic graphs | |
US20050125784A1 (en) | Hardware environment for low-overhead profiling | |
CN112463574A (zh) | 软件测试方法、装置、***、设备和存储介质 | |
CN112115118B (zh) | 数据库压测的优化方法及装置、存储介质、电子设备 | |
CN117093335A (zh) | 分布式存储***的任务调度方法及装置 | |
CN114816914A (zh) | 基于Kubernetes的数据处理方法、设备及介质 | |
Mohror et al. | Trace profiling: Scalable event tracing on high-end parallel systems | |
CN116136813B (zh) | 适配多型号的航电信号仿真方法、装置及存储介质 | |
CN113254325A (zh) | 测试用例的处理方法和装置 | |
CN113590300B (zh) | 定时任务的执行方法、装置、存储介质及设备 | |
CN112540846B (zh) | 一种控制服务器性能稳定的方法、装置及介质 | |
CN117806943A (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 |