今天闲来无事整理了一下之前JMeter测试的相关的文档
一、基本测试
Jmeter环境安装
1.JDK下载:
2.Jmeter下载:
3.环境变量配置:
- JAVA_HOME
C:\Program Files\Java\jdk1.8.0_91
- PATH
%JAVA_HOME%\bin
- CLASSPATH
.;%JAVA_HOME%\lib;
- JMETER_HOME
D:\Program Files (x86)\apache-jmeter-3.0
http请求测试
1.启动jmeter
jmeter无需安装,解压后在apache-jmeter-3.0\bin
目录下有个jmeter.bat
文件,双击执行
2.建立测试Sampler
1)建立线程组
右键测试计划
,添加Threads—>线程组

这里设置线程数为100个模拟100个用户;
Ramp-Up Period为10s,在10s内建立全部的线程;
循环测试为10,每个线程重复执行10遍
具体参数说明:关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
2)添加http请求
右键线程组
,添加Sampler->HTTP请求

设置好web服务器的名称,端口号,协议,方法,字符编码,路径
如果只对一个页面进行压力测试,路径填该页面的路径即可,比如:测https://www.leangoo.com/blog.html,路径填写
/blog.html
如果测多个链接,可以将链接保存到一个文本文件中,然后随机读取,具体操作:
- 新建一个txt文件,里面保存链接路径,格式如下
/blog.html
/event.html
/11664.html
/leangoo_app.html
/leangoo_guide/leangoo_guide_login.html
- 点击
选项->函数助手对话框
,选择_StringFromFile
,填上文件的绝对路径,点击生成。将生成的结果填写到路径中即可
3)运行查看运行结果
右键线程组
,添加监听器
,一般我们观察Summary Report
,查看结果树
,用表格查看结果
点击启动按钮,即可观察测试的结果
二、脚本测试
BadBoy录制操作脚本
1.BadBoy下载:
2.脚本录制

在地址栏输入网站地址,完成一系列的用户操作,点击停止按钮即完成脚本的录制
点击
File->Export to JMeter
,保存脚本为JMeter可读取的格式
JMeter测试脚本

在JMeter中打开该脚本,可以看到该脚本被保存为一个测试案例,里面一些参数需要做参数化处理,比如登录的用户名和密码,具体操作:
-
新建一个csv文件,用记事本打开,里面填写用户名和密码,用半角逗号隔开
-
在函数助手里,选择
_CSVRead
,填上文件绝对路径和参数的列号,点击生成 -
填写请求参数
image_1av89ipd01ifc15l8ahb2fd7bg13.png-13.5kB
参数处理好之后,同之前一样,设置线程组属性,添加监听器,点击运行
三、WebSocket测试
安装JMeter WebSocketSampler
由于JMeter里没有针对WebSocket的Sampler,所以就需要安装开源的插件,以使其支持WebSocket协议。
- 下载JMeter-WebSocketSampler,百度云:http://pan.baidu.com/s/1nuEGHEp
- 下载Jetty Bundles 9.1.1.v20140108依赖包,百度云:http://pan.baidu.com/s/1hrXhJtq
- 将
JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar
放到lib\ext
中 - 将依赖包放到
lib
中org.eclipse.jetty.http_9.1.1.v20140108.jar org.eclipse.jetty.io_9.1.1.v20140108.jar org.eclipse.jetty.util_9.1.1.v20140108.jar org.eclipse.jetty.websocket.api_9.1.1.v20140108.jar org.eclipse.jetty.websocket.client_9.1.1.v20140108.jar org.eclipse.jetty.websocket.common_9.1.1.v20140108.jar
- 重启之后,可以看到
Sampler
中新增一个Websocket Sampler
建立WebSocketSampler

同之前一样,首先建立一个线程组,然后添加一个
WebSocketSampler
,设置相关参数注意:
Streaming Connection
– 选择这个TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么得到第一次响应后该链接就会被关闭。Request data
:填入将要发送的请求,这里填的是[5,${__counter(false,num)}]
用了一个计数器,使每个线程每次发送的数据都不一样,保证每个websocket连接都是新开的
分布式测试
Jmeter 是java 应用,对于CPU和内存的消耗比较大,单台机器模拟数以千计的并发用户量,会引起JAVA内存溢出错误。所以JMeter支持多台机器分布式测试。操作步骤:
- 一台机器作为controller,其他机器作为agent。所有机器的JMeter环境要相同,注意agent机器是否开启防火墙
- 在controller机器的
bin
目录下,找到jmeter.properties
文件,编辑该文件
找到remote_hosts将agent的ip地址都填上
remote_hosts=192.168.0.121,192.168.0.106
- 所有的agent机器执行
jmeter-server.bat
文件 - controller机器建立好测试Sampler,点击
运行->远程全部启动
。注意:设置线程数时填写的是每台机器的线程数,而不是总的线程数
网友评论