特别说明:
1、本文是一个Jmeter快速入门的一个完整过程;
2、可帮助快速了解Jmeter性能测试过程和Jmeter简单操作;
3、文中通过一个简单的实例把Jmeter从安装、汉化到基本操作进行了贯穿,仅作为学习参考。
1 Jmeter安装
1.1 下载安装
- 详细参考Jmeter安装配置详细教程;
- 简单总结下:
1、下载官网:Jmeter下载地址;
2、选择对应的版本;
3、安装JDK环境;
4、JDK环境变量配置;
5、Jmeter环境配置。
1.2 Jmeter汉化
1.2.1 临时修改
- 即设置后只对本次使用有效,重启后恢复默认语言。
- 选择
Options—>Choose Language—>选择其他语言(例如:Chinese(Simplified)简体中文)设置成功。
重启Jmeter
又会恢复英文。1.2.2 永久修改
- 即永久性设置,设置后每次打开显示的语言都是一样的;
- 进入到
Jmeter
的bin
目录下,找到jmeter.properties
文档; - 以记事本的方式打开查找
language
,找到language=en
的行
如下图,将en
改为cn
,并且去掉前面的#
号,保存退出; - 重启
jmeter
,语言设置成功。1.3 验证环境
- 命令行输入:
jmeter
,出现以下内容,表示OK
;2 测试对象
2.1 测试对象说明
- 为了清晰的了解整个测试过程,我们使用
禅道开源版
作为测试对象; - 后续会对其中的一两个接口使用
Jmeter
进行测试; - Jmeter安装环境为
Windows
,测试对象禅道安装在ubuntu
下。2.2 测试对象安装
2.2.1 下载安装
- 下载地址:禅道官网;
- 找到
Linux
一键安装包: - 点击下载后,使用
xftp
上传到ubuntu
上: - 把上传到
ubuntu
上的禅道安装包复制到/opt
目录下:
sudo cp ZenTaoPMS-18.8-zbox_amd64.tar.gz /opt/
- 将安装包直接解压到
/opt
目录下:
sudo tar -zxvf ZenTaoPMS-18.8-zbox_amd64.tar.gz
2.2.2 启动测试对象服务
禅道服务包括Apache和Mysql,启动命令如下。
- 启动所有服务:
/opt/zbox/zbox start
- 停止所有服务:
/opt/zbox/zbox stop
- 重启所有服务:
/opt/zbox/zbox restart
- 开机自动启动:以把
/opt/zbox/zbox restart
加到操作系统的自启目录。
2.2.3 访问测试对象
- 禅道安装完并启动服务后,直接浏览器输入:
http://禅道服务器ip:apache端口。
特别注意:这里需要开放几个端口:
1、sudo ufw status
查看开放的端口:
2、开放需要的端口:sudo ufw allow 端口
2.2.4 注意事项
- 如果网页无法访问,请先关闭禅道所在电脑的
防火墙
和selinux
再刷新网页访问试一下; - 使用云服务器请注意在安全组中开放
apache
使用端口; - 禅道默认管理员帐号是
admin
,密码123456
; - 初次登陆请修改密码:
2.2.5 其他参数
- 如果不加任何参数执行
/opt/zbox/zbox
会打印输出命令可用参数:
Usage: ./zbox {
start|stop|status} [--aport=8080] [--mport=3307]
--aport参数 可以修改Apache的端口
--mport参数 可以修改Mysql的端口
2.2.6 网页登录数据库
- 禅道数据库管理用的是
adminer
,但是为了安全,访问adminer
的时候需要身份验证,需要运行sudo /opt/zbox/auth/adduser.sh
来添加用户,如下命令:
# 进入脚本目录
cd /opt/zbox/auth
# 执行添加用户的脚本
bash adduser.sh
This tool is used to add user to access adminer
Account: admin # 输入用户名
Password: # 输入密码
Adding password for user admin
- 打开浏览器,输入
http://禅道服务的ip:apache端口
点击“数据库管理”: - 输入用户名和密码:
- 网页直接显示登录界面:
1、系 统:默认选择MySQL。
2、服务器:127.0.0.1:MySQL端口
(MySQL端口启用的是3306,那么就填写127.0.0.1:3306。
注意:ip只能写127.0.0.1)
3、用户名:root(禅道默认的数据库用户名是root) 密 码:123456(禅道默认的数据库密码是123456) 数据库:zentao。
- 登陆成功如下:
2.2.7 命令行连接数据库
- 登录数据库:
/opt/zbox/bin/mysql -u root -P MySQL端口 -p
(如:/opt/zbox/bin/mysql -u root -P 3306 -p)
- 导入数据库:
/opt/zbox/bin/mysql -u root -P MySQL端口 -p 要导入的库名 < XXXX.sql (如:/opt/zbox/bin/mysql -u root -P 3306 -p zentao < zentao.sql)
3 明确测试目标
3.1 测试接口
- 登陆禅道后,点击
更多-后台-二次开发
: - 可以看到接口信息,我们这里简单就拿
token
来验证:3.2 测试数据
- 将以下数据中的地址、用户名等参数改为自己的即可:
# 请求地址:
http://172.18.126.87:80/zentao/api.php/v1/tokens
# 请求方式:
POST
# 请求参数:
{
"account": "admin", "password": "Kenwaytest123456"}
3.3 测试目标
- 使用登陆接口,对登陆接口进行压测;
- 并发20,持续时间为5分钟。
4 Jmeter脚本设计
4.1 启动Jmeter
cmd
命令行输入:jmeter
即可打开图形化界面:
4.2 添加http信息头管理器
测试计划-右键-添加-配置元件-HTTP信息头管理器
,如下:
- 参数设置如下:
4.3 添加http请求默认值
测试计划-右键-添加-配置元件-HTTP请求默认值
,如下:- 设置参数如下:
4.4 添加线程组
测试计划-右键-添加-线程(用户)-线程组
,如下:- 设置参数如下:
4.5 添加http请求
线程组-右键-添加-取样器-http请求
,如下:- 设置参数如下:
4.6 添加查看结果树
测试计划-右键-添加-监听器-查看结果树
,如下:4.7 运行调试
- 点击运行按钮,查看返回数据是否ok,如下:
- 如果返回如下
token
值,则说明说有设置是ok的:5 客户端安装jmeter-plugins-manager插件
- 我们需要关注被压测服务器的
cpu
、内存、磁盘、网络等指标参数的浮动来衡量压测服务器的能力; - 可以通过在
jmeter
客户端集成jmeter-plugins-manager
插件,在服务端部署插件serverAgent
来实时监控被压测服务器的性能;
5.1 下载jmeter-plugins-manager插件
- 下载插件管理包,地址:插件包管理地址;
5.2 jmeter-plugins-manager包配置
- 将下载的
jar
包添加到Jmeter
中; - 即将其放置到
jmeter
的安装目录lib\ext
下:
5.3 下载PerfMon插件并应用
- 重启
Jmeter
; - 点击选项-插件管理器:
PerfMon(Servers Performance Monitoring)
选项,点击右下角的Apply Changes and Restart JMeter
按钮应用:5.4 添加PerfMon监听器
测试计划-右键-添加-监听器-jp@gc-PerfMon Metrics Collector
,如下:6 服务端配置ServerAgent
对linux服务器的服务进行压测时,服务器的运行情况可以通过添加插件serverAgent来观察,可以实时监控性能指标。
6.1 下载ServerAgent
- 下载S
erverAgent-2.2.3.zip
,下载官网地址;
6.2 配置ServerAgent
下载后上传到
ubuntu
上,比如目录soft
下:解压缩:
sudo unzip ServerAgent-2.2.3.zip
进入到解压目录
ServerAgent-2.2.3
下,直接运行./startAgent.sh
启动;
特别注意:
1、默认启动端口为4444;
2、也可以使用命令指定端口启动(例如将指定TCP为5678,UDP指定为6789):./startAgent.sh --tcp-port 5678--udp-port 6789--sysinfo
;
3、建议将此脚本写成shell脚本,授权chmod -R 777 XXX
之后下次直接启动脚本程序。
- 运行
./startAgent.sh
提示没有java
环境,这个需要jre1.8
以上版本: - 输入
java
按照提示的安装包进行安装即可: - 启动服务:
7 测试服务是否OK
Windows
下cmd
执行以下命令,检查ServerAgent
代理端口:
telnet 172.18.126.87 4444
- 如果进入以下界面说明4444端口是被开放的:
- 如果提示无法连接到4444端口,需要在ubuntu上开放4444端口:
sudo ufw allow 4444
8 Jmeter配置监控指标
- 在
jp@gc-PerfMon Metrics Collector
上进行指标选择; - 点击
AddRow
,然后在host
的地方添加需要监控的服务器的主机域名或者IP
,port
填写端口,Metric to collect
下拉选择监控的指标(CPU、Memory、Swap、Disks I/O、Network I/O等)
- 运行时如果报错:
ERROR: java.net.ConnectException: Connection refused: connect
,需要检查端口,ip是否正确,另外设置本地防火墙策略,参考Jmeter监控服务器资源报错问题ERROR;
9 GUI方式运行
- 直接运行脚本,可以看到如下监控数据:
10 非GUI运行
- 性能测试时建议使用这种方式可以提升性能;
- 这种方法运行时将监控数据输出到指定文件,文件必修是
.jtl
结尾;
10.1 安装jmeter-plugins-cmd插件
- 在插件管理器中勾选如图即可:
10.2 命令行启动性能脚本
- 创建报告存放路径,比如:
D:\A_jmeter_test\report
; - 创建压测数据存放路径,比如:
D:\A_jmeter_test\jtl
; - 脚本存放路径,比如:
D:\A_jmeter_test\登陆.jmx
; - 命令行执行脚本命令为:
jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
- 比如:
jmeter -n -t D:\A_jmeter_test\登陆.jmx -l D:\A_jmeter_test\jtl\登陆.jtl -e -o D:\A_jmeter_test\report\
- 命令行运行以上命令如下:
10.3 查看报告
- 打开报告存放路径,比如:
D:\A_jmeter_test\report
: - 运行
index.html
,如下:10.4 命令行生成监控图片
- 新建存放图片的路径,比如
D:\A_jmeter_test\picture
; - 命令行先执行
JMeterPluginsCMD.bat
,看下这个命令有没有问题: - 发现这个文件找不到,我们看下图片中的
D:\apache-jmeter-5.3\bin\\..\lib\cmdrunner-2.2.jar
中的文件是否存在: - 结果发现是
cmdrunner-2.3.jar
而不是cmdrunner-2.2.jar
,则需要修改JMeterPluginsCMD.bat
文件; - 而
JMeterPluginsCMD.bat
文件在D:\apache-jmeter-5.3\bin
目录下: - 完整的执行命令如下:
JMeterPluginsCMD.bat --generate-png 存放图片的路径 --input-jtl jtl数据文件路径 --plugin-type PerfMon --width 图片宽度 --height 图片高度
- 示例如下:
JMeterPluginsCMD.bat --generate-png D:\A_jmeter_test\picture\登陆.png --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon --width 800 --height 600
- 生成的图片如下:
10.5 命令行生成csv文件
- 创建
csv
文件存放路径,比如:D:\A_jmeter_test\csv
; - 执行的命令为:
JMeterPluginsCMD.bat --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
- 示例如下:
JMeterPluginsCMD.bat --tool Reporter --generate-csv D:\A_jmeter_test\csv\登陆.csv --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon