Jmeter(五十四) - 从入门到精通高级篇 - 如何在linux系统下运行jmeter脚本 - 上篇(详解教程)

1.简介

上一篇已经介绍了如何在Linux系统中安装Jmeter,想必各位小伙伴都已经在Linux服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在Linux系统下运行Jmeter脚本。

2.具体步骤

2.1创建Jmeter测试脚本

你要在Linux系统中运行Jmeter脚本首先要有Jmeter。在Windows系统中启动jmeter,创建Jmeter测试脚本,这里以访问我博客首页为例

1.启动Jmeter后,添加线程组,如下图所示:

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337 

2.选中“线程组”,添加取样器“HTTP请求”,如下图所示:

 

3.选中“HTTP请求”,添加监听器“察看结果树”,如下图所示:

4.点击保存按钮,脚本保存为test.jmx,运行脚本进行调试直到调试成功,如下图所示:

 

5.将线程组修改成100,然后保存,将文件上传至linux服务器。

2.2运行脚本

1.在Linux服务器的usr目录下创建一个test文件夹,如下图所示:

2.将在Windows调试好的基本上传到此文件夹中,如下图所示:

3.将脚本上传至linux服务器,然后就在当前的test目录下,输入命令 jmeter -n -t test.jmx -l log.jtl ,运行jmeter脚本。运行结果,如下图所示:

4.将脚本上传至linux服务器,或者进入jmeter的bin目录下,输入命令 jmeter -n -t /usr/test/test.jmx -l /usr/test/log.jtl ,运行jmeter脚本。运行结果,如下图所示: 

 

PS:常用命令解析:

# 常见命令说明
-h 帮助:打印出有用的信息并退出
-n 非 GUI 模式:在非 GUI 模式下运行 JMeter
-t 测试文件:要运行的 JMeter 测试脚本文件
-l 日志文件:记录结果的文件
-r 远程执行:启动远程服务
-H 代理主机:设置 JMeter 使用的代理主机
-P 代理端口:设置 JMeter 使用的代理主机的端口号

5.跑完之后,在test目录下,生成两个文件:一个是jmeter.log(jmeter运行日志),一个是我们的性能结果文件(log.jtl),我们用命令把log.jtl文件导入windows系统就能查看结果了,如下图所示:

2.3查看测试报告

1.在windows上启动jmeter,添加所需的监听器,导入脚本运行产生的log.jtl文件,查看测试结果,(注:察看结果树的请求内无信息,后边宏哥会给出解决方案),如下图所示:

 

从上图可以看出:前边线程组设置的是100,这里的聚合报告的样本也是100,说明没有问题,运行的是宏哥上传的脚本。

以上,即为在linux环境中运行jmeter脚本,并生成测试报告的的过程,具体操作,请自行实践,本文仅供参考。

2.4解决结果树查看无请求信息

1.在windows上启动jmeter,添加察看结果树监听器,导入脚本运行产生的log.jtl文件,查看测试结果,发现察看结果树的请求内无信息。如下图所示:

2.解决linux下运行jmeter脚本,导出的jtl文件,用结果树查看无请求信息问题,解决方法:在linux的jmeter安装目录下bin/user.properties 加入如下参数: 

jmeter.save.saveservice.output_format=xml

jmeter.save.saveservice.response_data=true

jmeter.save.saveservice.samplerData=true

jmeter.save.saveservice.requestHeaders=true

jmeter.save.saveservice.url=true

jmeter.save.saveservice.responseHeaders=true

3.修改好以后,重新运行脚本,重新导入log.jtl文件查看测试的察看结果树,可以看到请求信息。如下图所示:

2.5解决中文乱码

1.察看结果树,有请求信息了,但是查看响应信息看到中文乱码了,如下图所示:

2.解决linux下运行jmeter脚本,导出的jtl文件,用结果树查看查看响应信息看到中文乱码了。解决办法:

修改bin目录下的user.properties文件,追加配置:

jmeter.save.saveservice.encoding=true

 另外:JMeter结果树响应数据中文乱码解决办法:

encoding编码,打开apache-jmeter-5.4\bin\jmeter.properties文件,搜索“encoding”关键字,找到如下配置:

#The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1

 将注释删掉,并改成utf-8编码,即:

sampleresult.default.encoding=utf-8

重启JMeter即可。

3.修改好以后,重新运行脚本,重新导入log.jtl文件查看测试的察看结果树,可以看到响应信息没有中文乱码了。如下图所示:

3.小结

1.jmeter为了减轻客户机负担,没有默认把这些信息(请求信息)保存,如果想要保存,也可以,需要做一下前边的配置即可。性能测试建议还是不要开这些配置,会增加报告的大小。

从生产的日志文件大小就可以看出确实是增加了客户机的负担,如下图所示:

2.修改完jmeter的配置文件信息,如果没有作用,记得要使用命令 source /etc/profile 运行后,再次尝试一下。

3.细心的小伙伴或者童鞋们会发现宏哥在登录Linux服务器的时候不是同一个用户,最前边是admin,后边又是root。这是因为宏哥之前用admin的时候,权限没有root的大,在运行脚本时,报错如下:main ERROR FileManager (jmeter.log) java.io.FileNotFoundException: jmeter.log (Permission denied) java.io.FileNotFoundException: jmeter.log (Permission denied) 报了一个权限错误。一时间没有找到解决办法就切换到root用户了,然后就成功运行了脚本。后来宏哥觉得是jmeter启动的日志文件写入不了test的文件夹中,于是就给文件夹赋予了最大权限,如下图所示:

 再次运行jmeter脚本运行成功了,如下图所示:

4.要注意:

  • 不在JMeter脚本所在的当前目录中执行命令,需要填写脚本文件的全路径。

  • 还有就是运行脚本所产生的jmeter.log文件和结果文件,如果没有指定生成路径的话。会在执行JMeter命令的当前目录中生成。(这点要注意一下)