如何使用Jmeter对某个OData服务进行高并发性能测试

发表于:2019-5-14 10:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:JerryWangSAP    来源:思否

  我们公司某团队开发了一个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),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号