1、运行环境
Jre
https://www.oracle.com/java/technologies/javase-jre8-downloads.html
2、下载路径
(1)http://jmeter.apache.org/download_jmeter.cgi
(2)下载.zip
3、环境变量配置
(1)classpath变量的值是
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
(2)JMETER_HOME变量的值是apache-jmeter-5.3的解压路径
4、启动方式
双击bin文件夹下的jmeter.bat,中文设置在jmeter.properties中将language=en改为language=zh_CN
5、分布式压测部署
(1)执行机(Slave)和控制机(Controller也称调度机)
(2)基于SSL的配置
①执行机Slave 配置
1)生成rmi_keystore.jks证书文件
a.双击create-rmi-keystore.bat,生成rmi_keystore.jks证书文件,注意最后两项只能输入(是否正确)y和(密钥口令)编辑打开create-rmi-keystore.bat中的-storepass后的单词(默认是changeit)。如果.bat打不开闪退了,则说明cmd不能执行keytool 或已经生成此文件。
b.如果修改了密钥口令,则需要修改并启用jmeter.properties中的,
将其后的密码改为修改后的密钥口令。
2)启动执行机Slave的jmeter服务,双击jmeter-server.bat:
表示配置完成,等待控制机调用。
②控制机配置:
1)远程slave配置,端口默认1099可不配置
2)重启jmeter,可在运行中远程启动或远程启动所有调用执行机
(3)http连接(不需要证书)
①控制机和执行机都需要将jmeter.properties中的server.rmi.ssl.disable=false改为true并启用
②Slave启动jmeter -server.bat,成功后如下
③同样的配置controller控制机,启动远程
(4)异常情况
①日志查看
②缺少SSL证书或未去掉SSL连接:
③三处SSL密钥不一致:
④执行机Slave的jmeter -server.bat未启动或未连接正确的端口
执行机Slave对应的jmeter.properties需要启用server_port=2099:
⑤端口占用:
⑥
6、插件安装
(1)作用:需要一些额外的功能,比如:需要自定义线程的变化,可以安装Custom Thread Groups插件。
(2)安装:首先安装插件管理功能,https://jmeter-plugins.org/install/Install/,点击plugins-manager.jar即可下载,保存到lib/ext文件夹下;
(3)重新启动jmeter,在菜单的选项最下方可打开插件管理。
(4)打开插件管理,进入Available Plugins选项,搜索对应的插件勾选
(5)点击右下角的申请 重启按钮。
7、使用简要
- 测试计划
- 可以设置整个计划的全局变量,比如访问ip、端口以及访问工程和用户名密码等等。设置用户定义的变量,使用${}引用这些变量;
使用例子:
-
-
- HTTP请求默认值
-
根据位置不同,作用范围也不相同
作用整个测试计划,都使用相同的http请求ip和端口。
-
- 察看结果树
- 作用:记录每个请求的请求头、请求信息、响应信息、响应头以及执行结果等等
- 数据写入一个文件: 路径使用/test/test.jtl(文件会被存储到对应的存储盘根目录下)和./test/test.jtl(文件会被存储到jmeter的bin文件夹下)。
- 线程组:
- 察看结果树
-
-
- setUp线程组、线程组、tearDown线程组,一般setUp线程组是在线程组之前执行的准备(比如:用户登录 获取token等等),tearDown线程组是结束后的操作。
- jp@gc - Stepping Thread Group (deprecated)自定义线程组,根据图形设置压力测试等等,需要安装Custom Thread Groups插件。
- HTTP请求
- 设置Http请求的路径、方式、参数等等,其中设置跟随重定向此处会导致一个请求触发多个响应结果。
-
-
-
- 需要设置http请求的请求头信息 cookie等等,都可以添加配置元件中的工具。
- HTTP信息头管理
-
-
- 正则表达式提取器
-
-
- 注意选择提取的位置:信息头提取session
- 引用名称:使用时放入${}的参数名称
- 正则表达式:匹配字符串,其中()表示要提取的值,.表示匹配任何字符串,+表示一次或多次,?表示在找到第一个匹配项停止;$1$表示获取正则表达式中第一个()匹配的值。
- 作用域:正则表达式提取器提取的值只能在线程组内部使用。
- BeanShell 后置处理程序
-
-
-
- 作用域:可生成全局变量,在整个测试计划中使用。
- 参数:传递给BeanShell后置处理程序的参数,通过bsh.args[0]获取值,通过__setProperty函数设置全局属性。
- JSON断言
-
-
-
- 通过对响应文本json解析,判断响应是否成功
- 参数设置
- 用户参数
-
可以设置多个变量,每个变量可以设置多个值。勾选迭代,会使使用时每次遍历使用。
-
-
- 用户定义的变量
-
-
-
-
- 可以设置单个值的多个参数。
- CSV数据文件设置:
-
-
-
-
-
- 参数文件以.dat结尾,以UTF-8编码格式另存为;
-
- JSON提取
-
-
-
- 响应断言
-
-
- 其他