『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程

特别说明: 1、本文是一个Jmeter快速入门的一个完整过程; 2、可帮助快速了解Jmeter性能测试过程和Jmeter简单操作; 3、文中通过一个简单的实例把Jmeter从安装、汉化到基本操作进行了贯穿,仅作为学习参考。

1 Jmeter安装

1.1 下载安装

1、下载官网:Jmeter下载地址; 2、选择对应的版本; 3、安装JDK环境; 4、JDK环境变量配置; 5、Jmeter环境配置。

1.2 Jmeter汉化

1.2.1 临时修改

  • 即设置后只对本次使用有效,重启后恢复默认语言。
  • 选择Options--->Choose Language--->选择其他语言(例如:Chinese(Simplified)简体中文)设置成功。重启Jmeter又会恢复英文。

1.2.2 永久修改

  • 即永久性设置,设置后每次打开显示的语言都是一样的;
  • 进入到Jmeterbin目录下,找到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目录下:
python 复制代码
sudo cp ZenTaoPMS-18.8-zbox_amd64.tar.gz /opt/
  • 将安装包直接解压到/opt目录下:
python 复制代码
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 访问测试对象

  • 禅道安装完并启动服务后,直接浏览器输入:
python 复制代码
http://禅道服务器ip:apache端口。

特别注意:这里需要开放几个端口: 1、sudo ufw status查看开放的端口: 2、开放需要的端口:sudo ufw allow 端口

2.2.4 注意事项

  • 如果网页无法访问,请先关闭禅道所在电脑的防火墙selinux再刷新网页访问试一下;
  • 使用云服务器请注意在安全组中开放apache使用端口;
  • 禅道默认管理员帐号是 admin,密码 123456;
  • 初次登陆请修改密码:

2.2.5 其他参数

  • 如果不加任何参数执行 /opt/zbox/zbox 会打印输出命令可用参数:
python 复制代码
Usage: ./zbox {start|stop|status} [--aport=8080] [--mport=3307]
python 复制代码
--aport参数 可以修改Apache的端口
--mport参数 可以修改Mysql的端口

2.2.6 网页登录数据库

  • 禅道数据库管理用的是adminer,但是为了安全,访问adminer的时候需要身份验证,需要运行 sudo /opt/zbox/auth/adduser.sh来添加用户,如下命令:
python 复制代码
# 进入脚本目录
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 测试数据

  • 将以下数据中的地址、用户名等参数改为自己的即可:
python 复制代码
# 请求地址:
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

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

  • Windowscmd执行以下命令,检查ServerAgent代理端口:
python 复制代码
telnet 172.18.126.87 4444
  • 如果进入以下界面说明4444端口是被开放的:
  • 如果提示无法连接到4444端口,需要在ubuntu上开放4444端口:
python 复制代码
sudo ufw allow 4444

8 Jmeter配置监控指标

  • jp@gc-PerfMon Metrics Collector上进行指标选择;
  • 点击AddRow,然后在host的地方添加需要监控的服务器的主机域名或者IPport填写端口,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
  • 命令行执行脚本命令为:
python 复制代码
jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
  • 比如:
python 复制代码
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目录下:
  • 完整的执行命令如下:
python 复制代码
JMeterPluginsCMD.bat --generate-png 存放图片的路径 --input-jtl jtl数据文件路径 --plugin-type PerfMon --width 图片宽度 --height 图片高度
  • 示例如下:
python 复制代码
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
  • 执行的命令为:
python 复制代码
JMeterPluginsCMD.bat --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
  • 示例如下:
python 复制代码
JMeterPluginsCMD.bat --tool Reporter --generate-csv D:\A_jmeter_test\csv\登陆.csv --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon

相关推荐
freejackman41 分钟前
Selenium框架——Web自动化测试
python·selenium·测试
沐土Arvin2 小时前
Nginx 核心配置详解与性能优化最佳实践
运维·开发语言·前端·nginx·性能优化
有时间要学习2 小时前
Test——BUG篇
bug·测试
爱的叹息2 小时前
针对 SQL 查询中 IN 子句性能优化 以及 等值 JOIN 和不等值 JOIN 对比 的详细解决方案、代码示例及表格总结
数据库·sql·性能优化
我有医保我先冲11 小时前
SQL复杂查询与性能优化:医药行业ERP系统实战指南
数据库·sql·性能优化
anda010912 小时前
11-leveldb compact原理和性能优化
java·开发语言·性能优化
爱吃馒头爱吃鱼12 小时前
QML编程中的性能优化二
开发语言·qt·学习·性能优化
桂月二二16 小时前
Vue3服务端渲染深度解析:从Nuxt3架构到性能优化实战
性能优化·架构
我有医保我先冲16 小时前
SQL复杂查询与性能优化全攻略
数据库·sql·性能优化
庸俗今天不摸鱼17 小时前
【万字总结】前端全方位性能优化指南(九)——FSP(First Screen Paint)像素级分析、RUM+合成监控、Lighthouse CI
前端·性能优化