jmeter接口测试教程_使用Jmeter的Websocket:获取性能数字

本文介绍了如何使用JMeter进行WebSocket接口的性能测试,特别是针对SockJs / Stomp Spring Websocket代理。通过修改JMeter的插件,实现WebSocket连接的持续监听,利用队列同步数据,并通过Java Request Sampler验证消息,从而获取性能数字。
摘要由CSDN通过智能技术生成
jmeter接口测试教程

jmeter接口测试教程

问题:

我最近遇到了一个问题,该问题需要针对多个用户测试SockJs / Stomp Spring Websocket代理的性能。 由于WebSocket本质上是异步的,因此它比常规的http / https请求-响应测试更加棘手。

解:

嗯,不需要解释为什么Jmeter是执行这种测试的好工具,而是需要一个插件来使用stomp协议从Jmeter建立与服务器的Websocket连接。

在这里,我发现插件非常有用,因为它确实处理了与服务器层建立Stomp协议连接的样板代码。

但是这个插件有一个局限性,一旦它创建了连接并订阅了一个websocket主题,它便进入睡眠状态,一旦出来,它就在睡眠时间内打印所有接收到的消息并结束其执行。

这通常不适用于交互式应用程序,在这些应用程序中,我们的Websocket会根据其他用户的各种活动/当前用户执行的活动不断接收通知,而不会停止其他屏幕功能。

因此,我们需要对上述插件进行更改,以便websocket可以继续监听消息,并且我们的应用程序可以继续执行其他各种活动。

实现方法非常简单:

a)更改SockJsSampler.java文件,以最后删除websocket的Hibernate和关闭。 它基本上是181和182行。

b)编写一个扩展AbstractJavaSamplerClient.java的新Java类。 该类负责侦听进入您的网络套接字的消息。

c)现在我们有2个Sampleres(一个用于websocket,一个用于从websocket监听,它们可以通过队列连接。在我的情况下,我使用ArrayBlockingQueue)

d)修改SockJsSampler以将消息放入此ArrayBlockingQueue中。 这可以在handleframe方法中的插件的SockJsWebsocketSubscriptionHandler类中完成。

因此,想法是在线程组执行开始时创建一次websocket连接,并继续用传入消息填充队列,并且在测试计划的各个点上,使用在点(b)中创建的新示例作为Jmeter Java Request Sampler来读取消息从队列中验证数据。

关于在websocket上接收消息所花费的时间,我们可以开始捕获自定义采样器启动时的时间,并减去它收到其预期消息时的时间。 使用SampleResult API的result.sampleStart()和result.sampleEnd()可以更轻松地完成此操作,当您从AbstractJavaSamplerClient扩展此类时,该方法将在runTest方法中继承。

注意:如果要运行多于1个线程的线程组来模拟多个用户,则可能必须为每个线程设置1个ArrayBlockingQueue ,以便不同线程的侦听器无法读取消息。 这很重要,因为我们需要记住,我们只有1个websocket连接,所有线程都共享。 如果您打算让所有线程都有自己的websocket连接,那么您可能不必担心这一点。

翻译自: https://www.javacodegeeks.com/2019/08/websockets-jmeter-getting-performance-numbers.html

jmeter接口测试教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值