目录
一、安装JDK
首先安装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
二、安装Jmeter
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 &
参数说明:
- -h 帮助 -> 打印出有用的信息并退出
- -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
- -t 测试文件 -> 要运行的 JMeter 测试脚本文件
- -l 日志文件 -> 记录结果的文件
- -r 远程执行 -> 启动远程服务
- -H 代理主机 -> 设置 JMeter 使用的代理主机
- -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
注意:如果未设置Jmeter的环境变量则在执行脚本的时候需要检查当前目录是否是jmeter的bin目录下。
三、Windows上使用Jmeter
1、window上打开Jmeter,左上角-文件-可以保存测试计划生成.jmx文件。
2、参数信息
接口地址: /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 }
3、使用Jmeter部署环境
(1)首先打开Jmeter,在测试计划下添加线程组。
(2)在线程组下添加HTTP信息头管理器。
(3)在线程组下添加HTTP请求。
(4)在线程组下添加察看结果树。
(5)在线程组下添加聚合报告。
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)参数化设置
- 这里在线程组下添加CSV Data Set Config来设置。
- 以下是CSV Data Set Config各个参数的简要说明:
- FileName:csv文件的名称及路径
- File Encoding: 文件编码----默认为空
- Varible Names: 定义文本文件中的参数名,定义后可当变量的方式来引用
- Ignore first line(only used if variable name is not empty):忽略第一行(仅使用变量名不是空的)----默认为false
- Delimiter:分隔符—每个参数之间的分隔符号,一般默认使用逗号,
- Allow Quoated data: 允许数据引—
- Recycle on EOF: 文件结束循环----设置为True后,允许循环取值
- Stop Thread on EOF: 文件结束后停止线程------默认为false,如果设置为True则会影响文件结束循环
- Sharing Mode: 设置线程是否共享—默认设置为All threads
- 我们这里把请求明文参数taxCode、areaCode保存在E盘的prt.csv(文件格式另存为.csv)。
- 这里定义了三个变量名为【aestaxCode,entName,areaCode】,各参数之间用,隔开,三个变量和.csv文件里的列名一一对应,此参数分享给所有的线程。
- 查看.csv文件格式,这里有1001个数据。
(4)参数加密
- 加解密的jar包放到Jmeter的lib\ext目录下。
- 测试计划–>Add directory or jar to classpath 添加需要的jar包。
(5)Jmeter调用加密后的参数
- 在线程组下添加Bean Shell PreProcessor
- 编写脚本
- 代码如下,其中taxCode和areaCode参数调用.csv里的数据。
//导入加密类,在测试计划中已经导入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);
-
如图jmeter中通过${}方式直接引用加密后的aesContent
-
其他类似的,用户名和密码加密如下
//导入加密类,在测试计划中已经导入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);
5、运行结果
(1)设置线程组,根据测试需求来设置。我们这里设置的是1001个虚拟用户,时间是60s,循环1次。
(2)全部都设置好了就可以点击绿色箭头运行了,或者点击“运行”菜单栏的“启动”列表。运行完成后,我们来看看查看结果数。点击响应数据查看返回数据是否和研发部编写的一致。
- 请求参数
- 相应数据
(3)我们再来检查一下请求的参数是否正确。由于我们请求参数加密处理过,可以看相应数据里的taxNum是否在对应.csv文件中。
四、在Jmeter中远程调用启动Linux服务器
1、服务端配置
(1)Linux上安装Jmeter,配置好环境路径,本文上面有写。
最好与客户端保持同版本,jdk最好也保持同版本,无法满足时至少保证服务器上的jmeter能正常运行(如jmeter3.0以后需要jdk1.7及以上版本)。
(2)在服务器的%JMETER_HOME%bin目录下执行./jmeter-server命令启动jmeter服务就可以,启动成功如下图:
(3)注意:上图红框中的ip为服务器的ip地址,当服务器有多网卡时它会随机挑选一个网卡使用,红框中的端口号port为启动jmeter服务监听的port,一般会有个默认端口号1099,但最好自定义,确保端口号不冲突。修改方法在下文介绍。
2、客户端配置
(1)在本地安装Jmeter的bin目录下,找到jmeter.properties打开,添加远程服务器ip+服务监听的port,保存后重新打开Jmeter。多个机器的配置可通过逗号分隔。
(2)左上角-运行-可以看到刚刚添加的服务器地址,运行。
(3)在客户端通过监听器-聚合报告或察看结果数可看到执行结果。
3、自定义端口号配置
(1)在服务器的%JMETER_HOME%bin目录下找到jmeter.properties,修改如下两项配置,即可自定义端口号:
(2)修改后执行服务端的jmeter-server即可看到控制台消息中修改是否生效;修改生效后需在客户端修改相应的jmeter.properties下的remote_hosts。