jmeter实现websocket聊天室功能

前言 【图片觉得看不清的可以点击放大】
先把依赖包下载并解压到Jmeter跟目录下lib/ext下,重启Jmeter才能玩得转

谷歌WebScoket连接依赖包点击下载
点击支持作者的依赖包下载地址

  • 一、添加线程组

1. 添加线程组等其他元件

  • 添加线程组,Jmeter执行是通过线程组进行驱动的,测试计划必须最少有一个线程组,选中测试计划,点击右键,添加》线程》线程组
    在这里插入图片描述

  • 添加CSV 数据文件设置元件,该元件可用来参数化,点击右键》添加》配置元件》CSV 数据文件设置
    在这里插入图片描述

  • 添加用户定义的变量,该变量可在整个线程中进行调用,点击右键》添加》配置元件》用户定义的变量
    在这里插入图片描述

  • 添加HTTP信息头管理器,该请求头可在http请求时自动调用,点击右键》添加》配置元件》HTTP信息头管理器
    在这里插入图片描述

  • 添加HTTP Cookie管理器,该Cookie管理器可在整个线程中自动调用,点击右键》添加》配置元件》HTTP Cookie管理器

  • 添加HTTP请求默认值,默认值可在整个线程中进行调用,点击右键》添加》配置元件》HTTP请求默认值
    在这里插入图片描述

- 二、依次添加如下请求

  1. 添加登录请求-选中线程组,点击右键,添加》取样器》HTTP请求
    在这里插入图片描述
  • 获取用户信息、授权接口提取返回值,HTTP请求点击右键,添加》后置处理器》JSON提取器
    在这里插入图片描述
  1. 添加创建连接请求-选中线程组,点击右键,添加》取样器》WebSocket Open Connection
    在这里插入图片描述
  • 建立长连接参数可以通过chrome接口请求查看
    在这里插入图片描述

  • 该请求的作用是和websocket接口创建连接,供其他接口连接,然后发送请求给服务器,配置如下:
    在这里插入图片描述

  1. 添加加入聊天室请求-选中线程组,点击右键,添加》取样器》HTTP请求
    在这里插入图片描述

  2. 添加发送请求-选中线程组,点击右键,添加》取样器》WebSocket request-response Sampler
    在这里插入图片描述

  3. 添加读取请求-选中线程组,点击右键,添加》取样器》WebSocket Single Read Sampler
    在这里插入图片描述

  • 该请求的作用是读取系统返回的请求,需根据实际情况设置循环,比如发送信息会返回:加入聊天室成功、发送是否成功、发送具体消息等;第4点中 WebSocket request-response Sampler,会默认获取一次返回值
    在这里插入图片描述

  • 添加断言,判断响应信息中是否包含{“succeed”:true 返回信息,选中该WebSocket请求,点击右键,添加》断言》响应断言,输入预期结果
    在这里插入图片描述

  1. 添加关闭请求-选中线程组,点击右键,添加》取样器》WebSocket Close
  • 该请求用来关闭已经连接的websocket接口,如需持续发送消息,无需添加关闭,配置如下
    在这里插入图片描述

  • 三、添加察看结果树

  • 察看结果树用来察看每次响应结果的响应数据,选中线程组,点击右键,添加》监听器》察看结果树
    查看所有接口请求信息
    在这里插入图片描述

  • 实现效果如下,可以实现模拟多人在线聊天 -->> 具体效果,点击查看
    在这里插入图片描述

  • 四、补充用到的插件

  1. 发送随机聊天文本,CSV随机获取器,点击右键》添加》配置元件》bzm - Random CSV Data Set Config
    在这里插入图片描述

  2. 发送消息条数记录,计数器,点击右键》添加》配置元件》计数器
    在这里插入图片描述

  3. 发送消息随机等待时长,高斯随机定时器,点击右键》添加》定时器》高斯随机定时器
    在这里插入图片描述

  4. 并发发送消息,同步定时器,点击右键》添加》定时器》同步定时器
    在这里插入图片描述

  5. 接口请求前进行参数组装,点击右键》添加》前置处理器》BeanShell 预处理程序
    在这里插入图片描述

  • 最后彩蛋,来点随机消息源码,供参考
import java.io.UnsupportedEncodingException;
import java.util.Random;

/**
 * 随机生成常见的汉字
 * 
 * @author 火陌
 * 
 */
	
private static char getRandomChar(){
	String str = "";
	int hightPos; //
	int lowPos;

	//随机数对象
	Random random = new Random();

	//区码,0xA0打头,从第16区开始,即0xB0=11*16=176,16~55一级汉字,56~87二级汉字
	hightPos = (176 + Math.abs(random.nextInt(39)));
	//位码,0xA0打头,范围第1~94列
	lowPos = (161 + Math.abs(random.nextInt(93)));

	//字节码
	byte[] b = new byte[2];
	b[0] = (Integer.valueOf(hightPos)).byteValue();
	b[1] = (Integer.valueOf(lowPos)).byteValue();
	
	try {
		//区位码组合成汉字
		str = new String(b, "GBK");
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
		System.out.println("错误");
	}
	//根据索引返回对应的字符
	return str.charAt(0);
}

//随机生成汉字消息
String msginfo="";
Random rands = new Random();

int msginfo_min = Integer.parseInt("${msginfo_min}");
int msginfo_max = Integer.parseInt("${msginfo_max}");

int msginfo_num = rands.nextInt(msginfo_max - msginfo_min) + msginfo_min;

for (int i = 1; i <= msginfo_num; i++){
	msginfo = msginfo + getRandomChar();
}

//msginfo = "【${msgnum}】" + msginfo;

vars.put("msginfo",msginfo);

//log.info("========="+ msginfo);





  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值