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



    『授人以鱼,不如授人以渔』

    仅以此文赠送那些需要学习Jmeter入门的伙伴。

    仅供学习和参考,转载请注明出处。

    文章通俗易懂,虽然很长,但是一篇文章可帮大家快速了解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目录下:
    sudo cp ZenTaoPMS-18.8-zbox_amd64.tar.gz /opt/
    
    • 1
    • 将安装包直接解压到/opt目录下:
    sudo tar -zxvf ZenTaoPMS-18.8-zbox_amd64.tar.gz 
    
    • 1

    在这里插入图片描述

    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

    特别注意:这里需要开放几个端口:
    在这里插入图片描述
    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]
    
    • 1
    --aport参数 可以修改Apache的端口
    --mport参数 可以修改Mysql的端口
    
    • 1
    • 2

    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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    • 打开浏览器,输入 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"}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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代理端口:
    telnet 172.18.126.87 4444
    
    • 1
    • 如果进入以下界面说明4444端口是被开放的:
      在这里插入图片描述
    • 如果提示无法连接到4444端口,需要在ubuntu上开放4444端口:
    sudo ufw allow 4444
    
    • 1

    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
    • 命令行执行脚本命令为:
    jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
    
    • 1
    • 比如:
    jmeter -n -t D:\A_jmeter_test\登陆.jmx -l D:\A_jmeter_test\jtl\登陆.jtl -e -o D:\A_jmeter_test\report\
    
    • 1
    • 命令行运行以上命令如下:
      在这里插入图片描述

    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 图片高度
    
    • 1
    • 示例如下:
    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
    
    • 1

    在这里插入图片描述

    • 生成的图片如下:
      在这里插入图片描述

    10.5 命令行生成csv文件

    • 创建csv文件存放路径,比如:D:\A_jmeter_test\csv
    • 执行的命令为:
    JMeterPluginsCMD.bat --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
    
    • 1
    • 示例如下:
    JMeterPluginsCMD.bat --tool Reporter --generate-csv D:\A_jmeter_test\csv\登陆.csv --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Solidity快速入门之函数输出
    活性染料研究:Lumiprobe AF594 NHS 酯,5-异构体
    倍福CX5120实现温度控制例程详细解析
    logcat: Unexpected EOF!的解决方法
    从能用到好用,国产CPU不是你想象中的样子了?
    Log4j有哪几种日志级别呢?
    七、Request&Response
    Vue+Echarts图表动态适配
    经典文献阅读之--Deformable DETR
    C++产生随机数字最全教程
  • 原文地址:https://blog.csdn.net/NoamaNelson/article/details/134053575