jmeter学习使用笔记【不定期更新】
jmeter是一款用于性能测试的Java组件包,可模拟进行交易的调用,以达到压力测试,疲劳测试等目的,学习之路还任重道远,现整理笔记以供后续翻阅
一、jmeter安装
1.1.安装JDK1.8版本
jmeter是一款java开发的测试软件,需要JDK运行环境支持,因此在安装jmeter前需要安装调试好jdk运行环境。jmeter3.0需要1.7以上版本jdk才可以正常运行。
windows下直接执行JDK的.exe安装包安装即可
1.2环境变量设置
Jmeter无需安装,解压即可使用,使用前需配置好环境变量
在windows下,点击我的电脑-属性-高级-环境变量,设置以下环境变量,变量示例中【具体路径请修改为自己实际安装路径】,【请勿直接拷贝】。
新建系统变量JMETER_HOME值为jmeter的安装路径。
JMETER_HOME:D:\Tools\apache-jmeter-3.0
在环境变量CLASSPATH中添加以下内容,包含Jmeter及上一步安装的JDK的jar包所在所在路径,与原有CLASSPATH内容使用分号;间隔,如果没有建议新建一个坏境变量。
CLASSPATH:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JEMRER_HOME%\lib\logkit-1.2.jar;C:\Program Files\Java\jdk1.8.0_66\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_66\lib\tools.jar
寻找path变量,在path变量最前面!注意!
加上C:\Program Files\Java\jdk1.8.0_66\bin;
这个时候可以在cmd窗口运行下Java -version,确认下是否为刚刚安装的JDK版本。
1.3.jmeter文件配置
在jmeter安装目录下找到jmeter.bat(如是unix系统需修改jmeter.sh),使用记事本或其它工具打开文件,找到JAVA_HOME并将路径修改为你自己安装的1.7以上版本JDK实际路径。如果没有这一行,则自己贴上去就好。
l windows系统下jmeter的启动文件jmeter.bat配置如下:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_66(找到这一行,修改路径)
set PATH=%JAVA_HOME%\bin;%PATH%
l unix系统下jmeter的启动文件jmeter.sh配置如下:
MINIMAL_VERSION=1.8.0
JAVA_HOME= /weblogic/jdk/jdk1.8.0_66(找到这一行,修改路径)
PATH=%JAVA_HOME%/bin;%PATH%
1.4.安装检查
进入jmeter目录下的bin文件夹,windows点击jmeter.bat(unix执行jmeter.sh),查看页面显示,如果能显示jmeter图形化页面则安装成功。如下图:

二、Jmeter组件介绍
2.1测试计划
测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
名称:你可以为你的测试计划取一个有意义的名字。
注释:对测试计划的注释。
用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量名=url,值=http://www.baidu.com,在需要时直接用${url}即可。
Add directory or jar to classpath:向类路径即%JMETER-HOME%\lib中添加目录及jar包。
2.2线程组
右键测试计划,添加->threads->线程组。

名称:为线程组起名字。
线程属性-线程数:设置发送请求的用户数目,即并发数。
线程属性-Ramp-Up Period(in second):线程在多少时间内启动,单位是秒,可根据这个算出线程间的时间间隔。
举个例子,如果线程数填100,Ramp-Up Period时间为10s,那么这100个线程将在10s内启动,每个线程间的启动间隔是0.1s;
同理,如果线程数填5000,Ramp-Up Period时间为10s,那么这5000个线程将在10s内启动,每个线程间的启动间隔是0.002s;
线程属性-循环次数:请求的重复次数,如果选择后面的forever(永远),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数,如果输入1,那么请求将执行一次,如果是0,会出现问题。
调度器配置-启动时间:测试计划什么时候启动,启动延迟会覆盖它。
调度器配置-结束时间:测试计划什么时候结束,持续时间会覆盖它。
调度器配置-持续时间:测试计划持续多长时间,会覆盖结束时间。
调度器配置-启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。
2.3取样器(TCP请求)
已TCP请求为例,其他请求后面用到了再更新。

右键线程组->添加->sampler->TCP取样器。
TCPClient classname:填写TCP三种报文格式默认前缀为:org.apache.jmeter.protocol.tcp.sampler
格式一,TCPClientImpl:用于普通文本传输,可设置编码格式(如Json串);
格式二,BinaryTCPClientImpl:十六进制报文,常用,截图中即为该报文格式;
格式三,LengthPrefixedBinaryTCPClientImpl:继承了格式二类,并在其基础上增加两个字节数据长度。
Target server:填写服务器正确的IP地址和端口。
Timeouts:最大连接时间和响应时间,一旦超时就算失败,一般不设置或者设置的时间长一点。
Re-use connection:TCP长连接,一个线程里,复用这个连接,常用。
End of line(EOL)byte value:填写响应数据的最后两位转换为10进账的值,取值区间[-128,127],例如响应数据是“F000”,最后两位00,则填入0.
要发送的文本:TCP报文,16进制不能有空格也不能有换行。
2.4查看结果(使用结果树)
右键线程组->添加->监听器->查看结果树。
可以查看每个请求的结果,和响应数据。
这里遇到请求结果返回中文乱码的问题,更改jmeter配置文件的编码方式仍然不行,后来找到了如下解决方式,插在这里。
解决Jmeter请求返回中文乱码:
在线程组里添加后置处理器,选择BeanShellPostProcessor,在脚本里添加:“prev.setDataEncoding("utf-8");”再次运行后就不会有中文乱码啦,如下图。

【不定期更新~】