首先安装JDK,并正确配置环境变量。
一、上传并解压jdk压缩包jdk-8u151-linux-x64.tar.gz,建议把软件都安装到/usr/local/下,如/usr/local/jdk1.8.0_151。
二、安装java环境
1、用vim编辑器打开/etc/profile文件,在文件尾部加入环境变量的定义
# JDK相关
export JAVA_HOME=/usr/local/java
export JAVA_BIN=/usr/local/java/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
2、重启电脑,或者输入如下命令使配置立即生效
source /etc/profile
3、查看java版本
java -version
1、将Jmeter的安装包(直接使用windows下的zip压缩包都行)apache-jmeter-3.1.zip上传至Linux的/usr/local/目录下,解压。
2、编辑/etc/profile文件,配置Jmeter的环境变量
#jmeter
export JMETER=/usr/local/apache-jmeter-3.1
export CLASSPATH=${JMETER}/lib/ext/ApacheJMeter_core.jar:${JMETER}/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:${CLASSPATH}
export PATH=${JMETER}/bin/:${PATH}
3、重启电脑,或者输入如下命令使配置立即生效
source /etc/profile
4、启动Jmeter
使用命令执行脚本,其中prt.jmx脚本可通过在Windows上操作Jmeter生成。
jmeter -n -t /usr/local/apache-jmeter-3.1/my_threads/prt.jmx -l /usr/local/apache-jmeter-3.1/test.jtl &
参数说明:
注意:如果未设置Jmeter的环境变量则在执行脚本的时候需要检查当前目录是否是jmeter的bin目录下。
接口地址: /prtXX/get-transferXX
请求方式:POST
consumes:[“multipart/form-data”]
produces:["/"]
接口描述:PRTXX客户端 (10~60分钟随机) 数据上传开关,
请求的时候会在Head 里面加入 YXKH(标识优先上传), 接口明文:
"taxCode": "3399019999XXXXX",
"machine": "0",
"areaCode": "3399XX"
请求参数:
响应数据:{ "code": 200, "data": {}, "msg": "请求成功", "success": true }
(1)首先打开Jmeter,在测试计划下添加线程组。
(2)在线程组下添加HTTP信息头管理器。
(3)在线程组下添加HTTP请求。
(4)在线程组下添加察看结果树。
(1)填写HTTP信息头管理器
Head 里面加入 YXKH(标识优先上传)
(2)填写HTTP请求,点击添加,把请求参数名称conTent和值${aesContent}填入进去(这里的值可看下文的加密操作)。
协议:http
请求方式: post
Content encoding:UTF-8
IP:192.168.XXX.XXX
端口号:XXXX
接口地址:/prt/get-transfer
其他:我这里勾选“Use multipart/form-data for POST”
(3)参数化设置
//导入加密类,在测试计划中已经导入jar包
import com.XXX;
//加密的key值
String KEY = "sMdqF9H%tQPuU5U*";
//${aestaxCode}和${areaCode}参数化调用.csv里的数据
String json_str = "{\"taxCode\":\"${aestaxCode}\",\"machine\":\"0\",\"areaCode\":\"${areaCode}\"}";
//System.out.println("============"+json_str);
//调用加密方法
String json_aes = CipherUtils.aesEncrypt(json_str,KEY);
//System.out.println("============"+json_aes);
//将加密后的参数放入aesContent中,aesContent可以在jmeter中通过${}方式直接引用
vars.put("aesContent",json_aes);
//导入加密类,在测试计划中已经导入jar包
import AES.AESUtil;
//获取登陆接口的用户名参数,我之前将username和password存放在用户变量中,在此要拿出用户变量分别赋值给name和password
String name = vars.get("username");
String password = vars.get("password");
//将name和password进行加密后分别赋值给aesName和aesPassword
String aesName = AESUtil.encrypt(name);
String aesPassword = AESUtil.encrypt(password);
//将加密后的用户名和密码分别放入aesname和aespwd中,aesname和aespwd可以在jmeter中通过${}方式直接引用
vars.put("aesusername",aesName);
vars.put("aespwd",aesPassword);
(1)设置线程组,根据测试需求来设置。我们这里设置的是1001个虚拟用户,时间是60s,循环1次。
(2)全部都设置好了就可以点击绿色箭头运行了,或者点击“运行”菜单栏的“启动”列表。运行完成后,我们来看看查看结果数。点击响应数据查看返回数据是否和研发部编写的一致。
(1)Linux上安装Jmeter,配置好环境路径,本文上面有写。
最好与客户端保持同版本,jdk最好也保持同版本,无法满足时至少保证服务器上的jmeter能正常运行(如jmeter3.0以后需要jdk1.7及以上版本)。
(2)在服务器的%JMETER_HOME%bin目录下执行./jmeter-server命令启动jmeter服务就可以,启动成功如下图:
(3)注意:上图红框中的ip为服务器的ip地址,当服务器有多网卡时它会随机挑选一个网卡使用,红框中的端口号port为启动jmeter服务监听的port,一般会有个默认端口号1099,但最好自定义,确保端口号不冲突。修改方法在下文介绍。
(1)在本地安装Jmeter的bin目录下,找到jmeter.properties打开,添加远程服务器ip+服务监听的port,保存后重新打开Jmeter。多个机器的配置可通过逗号分隔。
(2)左上角-运行-可以看到刚刚添加的服务器地址,运行。
(3)在客户端通过监听器-聚合报告或察看结果数可看到执行结果。
(1)在服务器的%JMETER_HOME%bin目录下找到jmeter.properties,修改如下两项配置,即可自定义端口号:
(2)修改后执行服务端的jmeter-server即可看到控制台消息中修改是否生效;修改生效后需在客户端修改相应的jmeter.properties下的remote_hosts。