Jmeter对websocket进行测试

这篇具有很好参考价值的文章主要介绍了Jmeter对websocket进行测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar下载

公司使用websocket比较奇怪,需要带认证信息进行长连接,通过websocket插件是请求失败,如下图,后面通过代码实现随再打包jar包完成websocket测试

Jmeter对websocket进行测试,jmeter,websocket,网络协议

本地实现代码如下:

package com.fangdd.socket;

import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
import java.net.URI;
import java.net.URISyntaxException;
import java.io.IOException;

public class SocketIOExample {
	
    public static void main(String[] args) throws URISyntaxException, IOException {
    	IO.Options options = new IO.Options();        
        options.query="tid=wwwww1231&uid=12352547&ticket=mxLqAgCaq7R";
        Socket socket = IO.socket(URI.create("http://localhost:9092"), options);

        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("connect");

// 如果需要发消息参考此代码 连接成功后发送具有body的自定义事件,公司暂不需要注释此代码
//                JSONObject body = new JSONObject();
//                try {
//                    body.put("message", "Hello, Server!");
//                } catch (JSONException e) {
//                    e.printStackTrace();
//                }
//
//                // 发送事件到服务器--需要与开发确认事件(customEvent)
//                socket.emit("customEvent", body);
            }
        });

        socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("connect_error: " + args[0]);
            }
        });

        socket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("disconnect due to: " + args[0]);
            }
        });

        socket.connect();
     // 监听服务器返回的自定义事件----需要与开发确认监听事件(messageEvent)
        socket.on("messageEvent", new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                // 处理服务器返回的数据,如果是json需要数据处理
                //JSONObject response = (JSONObject) args[0];
                System.out.println("Server response: " + args[0].toString());
            }
        });
    }

   
}

显示如下:

Jmeter对websocket进行测试,jmeter,websocket,网络协议

 开发代码打包到lib/ext目录,通过Jmeter对本地方法进行测试,具体实现代码如下:

底层实现代码:


import java.net.URI;
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;

public class NomalTools {	

	public static void  IOsocket(String url,String tid) {
		IO.Options options = new IO.Options();        
        options.query="tid="+tid+"&uid=12352547&ticket=mxLqA";
        Socket socket = IO.socket(URI.create(url), options);

        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("connect");
              
            }
        });

        socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("connect_error: " + args[0]);
            }
        });

        socket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("disconnect due to: " + args[0]);
            }
        });

        socket.connect();
     // 监听服务器返回的自定义事件
        socket.on("messageEvent", new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                // 处理服务器返回的数据
//                JSONObject response = (JSONObject) args[0];
                System.out.println("Server response: " + args[0].toString());
            }
        });
        
               //10秒后自动关闭连接
//        try {
//			Thread.sleep(10000);
//			System.out.println("10秒自动关闭连接");
//		} catch (InterruptedException e) {
//			e.printStackTrace();
//		}
//        socket.close();
	}
	

}

Jmeter封装代码:


import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import Common.NomalTools;



public class socketTest extends AbstractJavaSamplerClient{
	private NomalTools nomalTools;
	private String url;
	private String tid;
	private static long start = 0;
	private static long end = 0;
	
	public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("url", "");
        params.addArgument("tid", "");
        return params;
    }
	
	//每个线程测试前执行一次,做一些初始化工作;
    public void setupTest(JavaSamplerContext arg0) {
    	nomalTools=new  NomalTools();
    	url = arg0.getParameter("url");
    	 tid = arg0.getParameter("tid");
    	start = System.currentTimeMillis();
    }
    
	public SampleResult runTest(JavaSamplerContext arg0) {
		SampleResult sr = new SampleResult();
        sr.setSamplerData("请求参数num1:"+url+"\n请求参数num2:"+tid);
		
        try {
            sr.sampleStart();// jmeter 开始统计响应时间标记
            // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
            nomalTools.IOsocket(url, tid);            
//             System.out.println(resultData);
            sr.setSuccessful(true);
        } catch (Throwable e) {
            sr.setSuccessful(false);
            e.printStackTrace();
        } finally {
            sr.sampleEnd();// jmeter 结束统计响应时间标记
        }
        return sr;
	}

	//测试结束时调用;
    public void teardownTest(JavaSamplerContext arg0) {
    	end = System.currentTimeMillis();
        // 总体耗时
        System.err.println("cost time:" + (end - start) + "毫秒");
    }
	
    public static void main(String[] args) {
    	Arguments params = new Arguments(); 
        params.addArgument("url", "http://localhost:9092");//设置参数,并赋予默认值1 
        params.addArgument("tid", "qwe123");//设置参数,并赋予默认值2
        JavaSamplerContext arg0 = new JavaSamplerContext(params); 
        socketTest test = new socketTest(); 
        test.setupTest(arg0); 
        test.runTest(arg0);
        test.teardownTest(arg0); 
    }
}

集成到Jmeter的效果:

Jmeter对websocket进行测试,jmeter,websocket,网络协议

 

 参考文献:

【JMeter】Jmeter进行webSocket接口测试_千重萌的博客-CSDN博客

https://github.com/socketio/socket.io-client-java/blob/main/src/test/java/io/socket/Fiddle.java文章来源地址https://www.toymoban.com/news/detail-664283.html

到了这里,关于Jmeter对websocket进行测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 性能进阶:使用JMeter进行websocket测试【建议收藏】

    本次测试案例主要是分享如何使用JMeter进行websocket协议下的聊天接口性能测试。 包含websocket插件的下载安装、线程组及sampler的设置、csv参数化和组建分布式测试的方法、如何通过调整参数来获得发压机的最大并发数以及对测试过程的总结。 整篇文章只侧重介绍进行websocket测

    2024年02月08日
    浏览(52)
  • 全网最详细,Jmeter性能测试-性能进阶, 多协议实战Websocket/Dubbo(七)

    Jmeter是目前主流的性能测试工具,原因除了他是开源的、免费的之外,还有它的拓展性非常强。Jmeter默认使用的协议是Http/HTTPS协议,但这并不是唯一的协议,通过加载插件,可以让Jmeter支持更多协议的脚本开发。 webservice(soap)协议 webservice是一个web的应用程序,使用xml想外

    2023年04月20日
    浏览(50)
  • jmeter工具测试和压测websocket协议【杭州多测师_王sir】

    一、安装JDK配置好环境变量,安装好jmeter 二、下载WebSocketSampler发送请求用的 ,地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.2.15.363f211bH03KeI 下载解压后的jar包放到D:JMeterapache-jmeter-3.3libext目录下 三、如果需要在jmeter中安装那么就需要下载jmeter的插件

    2024年02月13日
    浏览(44)
  • Jmeter接口测试-websocket测试

    壹 Jmeter接口测试-websocket测试 测试之前的准备工作,需要websocket插件 方式一: 去github下载: https://github.com/maciejzaleski/JMeter-WebSocketSampler/wiki/Dependencies jetty-http-9.1.2.v20140210.jar jetty-io-9.1.2.v20140210.jar jetty-util-9.1.2.v20140210.jar websocket-api-9.1.1.v20140108.jar websocket-client-9.1.1.v20140108.jar websoc

    2024年02月06日
    浏览(56)
  • 【接口测试】JMeter测试WebSocket接口

    目录 一、WebSocket简介 二、JMeter测试WebSocket接口 三、WebSocket和Socket的区别 最近老被问到WebSocket,突然想到以前大学时上Java课的时候,老师教我们socket连接,一个同学电脑做客户端,一个同学电脑做服务端,当双方消息发送成功,第一次感觉到代码的奇妙~ 毕竟抄代码都不利索

    2024年02月08日
    浏览(51)
  • JMeter websocket接口测试

    前言 在一个网站中,很多数据需要即时更新,比如期货交易类的用户资产。在以前,这种功能的实现一般使用http轮询,即客户端用定时任务每隔一段时间向服务器发送查询请求来获取最新值。这种方式的弊端显而易见: 有可能造成数据更新不及时,如果前端轮询频率为5s,

    2024年02月16日
    浏览(42)
  • jmeter如何测试websocket接口?

    jmeter做接口测试,很多人都是做http协议的接口,就有很多人问websocket的接口怎么测试啊? 首先,我们要明白,websocket接口是什么接口。 然后,我们怎么用jmeter测试? jmeter要测试websocket接口,需要先下载安装一个websocket samplers by peter doornbosch 的插件,插件安装成功后,再次

    2024年02月08日
    浏览(42)
  • “Jmeter WebSocket协议压测”,助你轻松应对高并发场景!

    目录 引言 背景说明 步骤1:安装插件JMeter WebSocket Samplers 步骤2:采集器使用 步骤3:脚本执行  结语 在当今高并发的网络环境下,WebSocket协议已经成为了最受欢迎的实时通信技术之一。 然而,对于开发人员来说,如何有效地压测WebSocket协议仍是一个挑战。 Jmeter是一款功能强

    2024年02月14日
    浏览(35)
  • 【接口测试】Jmeter接口实战-TCP及Websocket接口,打通接口测试...

    Jmeter测试TCP接口 1、TCP接口结构 TCP接口:只有ip和port 传参数据类型根据开发定义的类型 需要添加一个ascii码的十进制字节结束符,tcp才会关闭 2、TCP接口环境搭建 在testfan-tcp-server.jar目录下,启动cmd命令行,输入:java -jar testfan-tcp-server.jar 3、Jmeter测试tcp接口 1)添加tcp取样器

    2024年02月03日
    浏览(39)
  • Jmeter 实现 mqtt 协议压力测试

    1. 下载jmeter,解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例,下载地址: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压: unzip apache-jmeter-5.4.3.zip 2. 下载mqtt-jmeter插件 下载地址: https://github.com/emqx/mqtt-jmeter/releases https://github.com/emqx/mqtt-jmeter/releases/downloa

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包