我们公司某团队开发了一个OData服务,现在我接到任务,要测试这个服务在高并发访问场景下的性能指标,比如5万个请求同时到来后,每个请求的平均响应时间,因此我选择了jMeter这个好用的工具来模拟高并发请求。
创建一个新的测试plan,基于其再创建一个线程组:
下列设置意思是我想创建三个并发请求,每个请求通过一个线程实现,每个线程仅仅执行一次。每个线程派生后的延时是0秒,意思是主线程同时创建三个线程。
创建一个新的HTTP请求,维护下列设置:
(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 - 记得这个勾别打上
这个意思就是每个并发请求同时发起OData查询,参数为我的名字Wang
如果有代理的话,在下图位置维护代理服务器信息。
在HTTP Header Manager里维护访问这个Odata服务的credential。因为我们开发的OData服务支持Basic Authentication这种认真方式,所以我在此处的HTTP header字段里维护Authentication信息。
创建listener,主要用途当然是显示测试结果了。我使用的是jMeter自带的Listener,Table类型的,以表格形式显示高并发请求和响应的各项指标。
一切就绪,点击这个绿色的三角形开始测试:
测试完毕后,双击我们之前创建的Table Result Listener,我这三个并发请求的性能指标就显示出来了。可以看到三个请求中,最快的请求用了5.1秒,最慢的6.9秒
-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是一致的。
我的Java程序放在我的github上:https://github.com/i042416/JavaTwoPlusTwoEquals5/tree/master/src/odata
到目前为止,我的三个并发请求进行搜索的参数都是硬编码的Wang,这个和实际场景不太符合。有没有办法生成一些随机的搜索字符串,这样更贴近真实使用场景呢?
当然有办法:右键菜单,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内的随机正整数
在http请求里,用固定的前缀JerryTestCustomer_加上随机参数,以此来构造随机搜索字符串:
通过Table Result listener,能观察到这次确实每个请求发起的搜索都使用了不同的字符串了。
希望这篇文章介绍的jMeter使用技巧对大家工作有所帮助。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。