For project reason I have to measure the performance of OData service being accessed parallelly. And I plan to use the open source tool JMeter to generate a huge number of request in parallel and measure the average response time. Since I am a beginner for JMeter, I write down what I have learned into this blog. I will continue to explorer the advanced feature of JMeter in my daily work.
我们公司某团队开发了一个OData服务,现在我接到任务,要测试这个服务在高并发访问场景下的性能指标,比如5万个请求同时到来后,每个请求的平均响应时间,因此我选择了jMeter这个好用的工具来模拟高并发请求。
- Download JMeter from its official website:
Go to the installation folder, add the following text in file \bin\user.properties:
httpclient4.retrycount=1
hc.parameters.file=hc.parameters
-
Create a new test plan for example Customer_Query_OData_test, and right click on it and create a thread group from context menu.
创建一个新的测试plan,基于其再创建一个线程组:
Below configuration means I would like to generate three request in parallel via three threads, each thread is executed only once. And there is no delay during the spawn of each threads ( Ramp-Up Period = 0 )
下列设置意思是我想创建三个并发请求,每个请求通过一个线程实现,每个线程仅仅执行一次。每个线程派生后的延时是0秒,意思是主线程同时创建三个线程。
创建一个新的HTTP请求,维护下列设置:
Create a new Http Request and maintain the following settings:
(1) Protocol: https
(2) Server name:
(3) Http request method: GET
(4) Http path: /sap/c4c/odata/v1/c4codata/AccountCollection/ - 这就是OData服务的相对路径了
(5) Use KeepAlive: do NOT select this checkbox - 记得这个勾别打上
In Parameter tab, maintain query option $search with value ‘Wang’
这个意思就是每个并发请求同时发起OData查询,参数为我的名字Wang
Switch to Advanced tab, choose “HttpClient4” from drop down list for Implementation, and maintain proxy server name and port number.
如果有代理的话,在下图位置维护代理服务器信息。
- Create a new HTTP Header Manager and specify the basic authentication header field and value.
在HTTP Header Manager里维护访问这个Odata服务的credential。因为我们开发的OData服务支持Basic Authentication这种认真方式,所以我在此处的HTTP header字段里维护Authentication信息。
- Create a listener for the test plan. In my test I simply choose the most simple one: View Results in Table.
创建listener,主要用途当然是显示测试结果了。我使用的是jMeter自带的Listener,Table类型的,以表格形式显示高并发请求和响应的各项指标。
Once done, start the test:
一切就绪,点击这个绿色的三角形开始测试:
After the test is finished, double click on View Result Listener and the response time for each request and the average response time is displayed there:
测试完毕后,双击我们之前创建的Table Result Listener,我这三个并发请求的性能指标就显示出来了。可以看到三个请求中,最快的请求用了5.1秒,最慢的6.9秒
当然,jMeter也支持命令行方式使用:
Or you can use command line to achieve the same:
-n: use non-GUI mode
-t: specify which test plan you want to run
-l: specify the path of output result file
为了检验jMeter采集的数据是否正确可靠,我还花时间写了一个Java程序,用JDK自带的线程池产生并发请求,测试的结果和jMeter是一致的。
And I have written a simple Java application to generate parallel request via multiple thread and the result measured in Java program is consistent with the one got from JMeter.
The source code could be found from my github:
我的Java程序放在我的github上:
https://github.com/i042416/JavaTwoPlusTwoEquals5/tree/master/src/odata
How to generate random query for each thread in JMeter
到目前为止,我的三个并发请求进行搜索的参数都是硬编码的Wang,这个和实际场景不太符合。有没有办法生成一些随机的搜索字符串,这样更贴近真实使用场景呢?
Suppose we would like each thread in JMeter to generate different customer query via OData with the format JerryTestCustomer_<1~100>, we can simply create a new user parameter:
当然有办法:右键菜单,Add->Pre Processors(预处理器)->User Parameters:
参数名Parameter name,取为uuid
参数值Parameter value: use JMeter predefined function __Random to generate random number.
使用jMeter自带的随机数生成函数__Random。
因此最后参数uuid的值为${__Random(1,100)},意思是生成1到100内的随机正整数
and in http request, just specify reference to this variable via ${uuid}:
在http请求里,用固定的前缀JerryTestCustomer_加上随机参数,以此来构造随机搜索字符串:
So that in the end each thread will issue different query to OData service end point.
通过Table Result listener,能观察到这次确实每个请求发起的搜索都使用了不同的字符串了。
希望这篇文章介绍的jMeter使用技巧对大家工作有所帮助。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
【使用JMeter进行性能测试】 性能测试是评估软件系统在高负载或大数据量下的稳定性和效率的关键步骤。Apache JMeter是一款强大的、开放源代码的性能测试工具,适用于Web应用、FTP服务器、数据库和其他通用协议。它...
综上所述,JMeter是一款功能强大、灵活性高的性能测试工具,通过模拟用户负载对服务器进行压力测试,可以帮助开发者和测试人员发现并优化软件的性能瓶颈。在实际使用过程中,需要重点注意环境的搭建、软件的下载与...
JMeter是一款强大的开源性能测试工具,广泛应用于Web应用、FTP服务器、数据库和其他协议的服务性能测试。JMeter由Apache Software Foundation开发,支持多线程并行测试,能够模拟大量并发用户来评估系统的性能和稳定...
JMeter是一款由Apache开发的、开源的、适用于Web应用的负载和性能测试工具,它能模拟大量并发用户,对系统进行性能评估,从而确保小程序在高并发情况下依然能够稳定运行。 1. 测试内容与目标 测试内容主要针对武汉...
【性能测试-Jmeter.pptx】的培训内容涵盖了性能测试的多个重要环节,包括数据制造、性能测试方案设计、脚本执行、性能监控与调优以及编写性能测试报告。以下是对这些知识点的详细阐述: 1. **如何制造数据**: - ...
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。 2.完全的可移植性和100% 纯java。 3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。 4.完全多线程 ...
总结来说,JMeter MQTT服务器压力测试是一项重要的性能验证手段,它帮助我们确保MQTT服务器在面对大规模并发连接和高频率消息传输时能够正常工作。通过深入理解MQTT协议、JMeter工具和定制化的加密方法,我们可以...
JMeter是一款广泛使用的开源性能测试工具,适用于模拟多种负载条件,进行负载测试、压力测试、并发测试和容量测试,以验证系统的性能表现。 1.1 性能测试概念 性能测试包括负载测试和压力测试,前者用于了解系统在...
在IT行业中,压力测试是确保系统稳定性和性能的关键环节,而Apache JMeter...通过对JMeter的深入理解和使用,IT专业人员可以有效地评估系统的性能极限,定位潜在问题,并进行系统优化,以保证服务的稳定性和用户体验。
7. **执行测试**:运行JMeter测试计划,观察性能指标。 8. **分析结果**:根据测试结果,分析系统在高负载下的表现,找出可能的性能瓶颈。 总之,JMeter作为一款强大的性能测试工具,提供了全面的功能来模拟多种...
线程组是JMeter测试计划的基础,包含以下几个关键参数: 1. **线程组名**:标识测试计划中的不同测试部分。 2. **注释**:用于记录测试目的或注意事项。 3. **线程数**:模拟并发用户数量。 4. **循环次数**:每个...
JMeter是一款开源的性能测试工具,它主要用于测试静态和动态资源的性能,比如静态...通过熟练使用JMeter,测试者可以有效地模拟用户负载,评估系统在高并发下的性能表现,找出系统的瓶颈,从而为系统优化提供数据支持。
以上是对Jmeter性能测试报告模板中的知识点进行的详细解析。通过这份报告,读者可以了解到如何进行性能测试、如何分析测试结果以及如何根据测试结果进行优化。这对于提高软件产品的质量和性能至关重要。
JMeter通常被用来对一些静态的或者动态资源进行性能测试。然后通过分析它产生的性能图表来判断测试结果。简单的说:是Apache下的一个测试工具,可以对服务器进行并发测试,测试服务器所能承受的并发量,以各种曲线图...
1.Jmeter对HTTP请求压力测试、并发测试的简单使用方法 2.HTTP请求压力测试、并发测试的简单使用方法 3.Jmeter对HTTP请求压力测试、并发测试的简单使用方法
使用JMeter 对Web服务器压力测试