JMeter压测工具
目录
JMeter是Apache托管的一款用于进行接口测试的工具。功能比较丰富,还有插件可以进行拓展。
安装
- 前置安装JDK(配置好JAVA_HOME、CLASSPATH)
- 去官网下载二进制包传送门
- 解压缩,windows下运行bin/jmeter.bat
测试计划示例
- 配置测试相关变量
配置变量
- 创建线程组
- 创建控制器(可选)
- 配置登录请求(可选)
- 某些测试可能需要先获取token,需要先发一些其他请求并处理
创建登录请求
- 从登录请求中获取access_token(可选)
正则提取token
将token设置为全局变量auth
- 某些测试可能需要先获取token,需要先发一些其他请求并处理
- 测试请求token填充
使用全局变量auth
- 发送待测试请求
- 创建响应断言
- 查看结果树
BeanShell
- 概述:BeanShell是JMeter所使用的脚本语言,BeanShell也支持了很多其他项目,具体可查看BeanShell的Github主页
- 主要特点:
- 可以在${}内用符号_拼接数字,来访问一批变量。也有些特殊单词如_matchNr代表此类变量的数量。
- 支持对象,对象也基本支持Java语法
- 内置:
- 使用${__P},${__setProperty}等内置函数读取/设置JMeter变量
- 使用${__threadNum}等内置变量
- 一段JMeter后处理代码示例:
//log.info("stationCodes: ${stationCodes_2}"); int i=${stationCodes_matchNr}; log.info("station Count: " + String.valueOf(i)); //${__setProperty(stationCodesOutput,${stationCodes},)} String s=""; for(int j=1;j<=i;j++){ s += vars.get("stationCodes_"+j)+","; } //String str = Arrays.toString(a); //vars.put("test",str); //log.info("????"+str); //${__setProperty(stationCodesOutput,str,)} props.put("test",s); //log.info("????: ${__P(stationCodesOutput,)}"); String value = props.get("test"); log.info("value : "+value); String trimValue = value.substring(0,value.length()-1); log.info("trimValue : "+trimValue); String[] stationCodesArray = trimValue.split(","); for(int i=0;i!=stationCodesArray.length;++i){ vars.put("stationCodes_"+(i+1),stationCodesArray[i]); }
- 参考:
插件
- JMeter对插件的支持很好,可以根据自己的需求找一些开源的第三方测试插件,主要步骤如下
- 去jmeter插件官网下载jmeter-plugins-manager.jar
- 将该jar抱放入jmeter内,/lib/ext目录下
- 在jmeter内的菜单options->plugins manager菜单项,打开插件管理器
- 安装你喜欢的插件
- WebSocket插件:websocketsamplers by peter doornbosch
- 在取样器中和其他测试工具一样
- 参考: