2024最新最全jmeter工具使用:jmeter 命令行用法、文件解读、生成报告
也方便你下次能够快速查找。如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,测试开发视频教程、学习笔记领取传送门!!。
简介
本篇文章主要介绍如何配置jmeter使用内存,出现的一些异常如何处理,以及详细描述运行时的字段说明。最后在目录4介绍使用案例,包括:基本用法、测试完成后如何生成报告、测试结束后自动生成报告等。
文章目录如下
1. 参数说明
2. 基本配置及异常处理
2.1. jmeter内存配置
2.2. 简单运行 jmeter
2.3. 解决出现的问题
3. 运行界面和jmx解读
3.1. jmx开头和结尾标识
3.2. jmx测试元素说明
3.3. 执行测试界面解读
4. 应用案例
4.1. 基本用法
4.2. 生成测试结果日志
4.3. 将结果日志生成报告
4.4. 执行jmeter自动生成报告
1. 参数说明
常用参数
-n:命令行模式运行JMeter
-t:指定要执行的jmx文件
-l:指定测试结果的日志文件(类似于查看结果树)
-j:指定JMeter日志文件(INFO、ERROR、DEBUG等)
-g:指定结果文件的路径(指定jtl文件生成报告)
-e:在测试结束后生成HTML报告
-o:指定用于生成HTML报告的目标目录
-f:强制将JMeter进程结束,或者在运行非GUI测试时,立即结束测试并生成结果文件。 # jmeter -n -t test.jmx -l result.jtl -f
分布式压测参数
-r:远程运行JMeter客户端和服务器模式 # jmeter-server -Djava.rmi.server.hostname=192.168.1.100
-s:运行JMeter作为服务器(用于分布式测试) # jmeter-server
-c:指定远程服务器的 IP 地址或主机名 # jmeter -c 192.168.1.100
-i:指定本地 IP 地址,用于远程服务器通信 # jmeter -i 192.168.1.101
其他参数
-H:设置用于代理服务器的主机名。 # jmeter -H proxy.example.com
-P:设置用于代理服务器的端口号。 # jmeter -P 8080
2. 基本配置及异常处理
本章节主要介绍内存配置和运行时出现的异常处理方法。
2.1. jmeter内存配置
jmeter 使用命令行大部分用于压力测试或者稳定性测试,所以需要先了解 jmeter 的内存配置。
内存配置根据执行的文件配置,比如 Windows 配置 jmeter.bat,Linux 配置 jmeter 或 jmeter.sh,总之,用哪个文件就配置哪个。在文件中找到这一行:
HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
-Xms1g:指定初始堆内存大小为 1GB。
-Xmx1g:指定最大堆内存大小为 1GB。
-XX:MaxMetaspaceSize=256m:指定 Metaspace 区域的最大空间为 256MB。它用于存储类的元数据信息的,并不直接受 -Xms 和 -Xmx 这两个参数的影响。Metaspace 的大小由 JVM 自动管理,根据需要动态调整,不受 Java 堆的限制。但它在实际运行过程中仍然需要占用一部分内存空间。如果设置过小的 Metaspace 大小,可能导致元数据无法存储,从而导致类加载失败。如果设置过大的 Metaspace,可能占用了过多的本地内存,导致系统资源不足。
比如系统总内存128GB,测试 1000 并发,那么可以配置初始2g,最大8g,Metaspace 1g。
在 1000 并发的情况下,可以设置较高的初始堆内存,以保证开始时的性能。
根据业务复杂度,如果业务比较消耗内存,则可以增大-Xmx 。
2.2. 简单运行 jmeter
./jmeter -n -t test.jmx
出现了几个异常
2.3. 解决出现的问题
解决第1个问题
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
将虚拟机的处理器设置为2以上
重启虚拟机即可
reboot
解决第2个问题
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
设置 jmeter/bin/log4j2.xml 的日志级别为 ERROR
解决第3个问题
WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
在测试文件的 URL 中添加 useSSL=false
再来运行一次(无多余日志)
3. 运行界面和jmx解读
本章节主要对jmeter测试文件和测试结果信息解读。
3.1. jmx开头和结尾标识
jmx 文件是我们使用 GUI 模式配置后保存的xml文件,相信这种文件大家并不陌生,文件内容的开头和结尾根据缩进来判断,开头和结尾标识的关键字示例:
<关键字> # 开头标识
<关键字/> # 结尾标识
举个例子:jmx文件的开头和结尾分别使用了 <jmeterTestPlan> 和 </jmeterTestPlan> 关键字。
jmeterTestPlan:表示测试计划。
第2级的 <hashTree> 是一个组合元素,用于组织和嵌套其他测试元素,例如线程组、samplers、断言、监听器等。
3.2. jmx测试元素说明
每个常规配置中包含以下4个属性:
guiclass:表示测试元素的界面类。
testclass:表示测试元素的测试类。
testname:表示测试元素的名称。
enabled:表示测试元素的启用状态(true | false)。
只需要通过 testname 和 enabled 就能找到对应元素和是否启用的设置了。
线程组说明
ThreadGroup.on_sample_error:指定当线程组中的任何样本遇到错误时的处理方式。 “continue”(继续执行,默认)、“start next loop”(开始下一个循环)和 “stop thread”(停止线程)。
JDBC Connection Configuration 说明
3.3. 执行测试界面解读
运行的这个界面类似于GUI中的聚合报告缩小版,解释如下:
【第1部分】样本数
summary + # 当前测试信息
summary = # 总的测试信息
67477 in 00:00:08 = 8256.1/s # 8秒完成67477个请求数,每秒平均完成8256.1个
平均请求数可能会因为并发或网络延迟造成计算不准确的情况
【第2部分】响应时间(单位ms)
Avg: 1 # 平均响应时间
Min: 0 # 最小响应时间
Max: 560 # 最大响应时间
Err: 0 (0.00%) # 错误数和错误率
【第3部分】线程数
Active: 10 # 当前活动的线程数
Started: 10 # 已启动的线程数
Finished: 0 # 已完成的线程数
4. 应用案例
本章节主要介绍命令行的基本用法,生成 jtl 日志的结果解读,以及如何生成HTML报告。
4.1. 基本用法
jmeter 的命令行基本用法需要使用2个参数
-n:命令行模式运行JMeter
-t:指定要执行的jmx文件
jmeter -n -t 测试文件
执行过程中会自动将日志写入到当前路径下的 jmeter.log,包括:INFO(一般信息)、WARN(警告信息)、ERROR(错误信息)、DEBUG(调试信息)、FATAL(致命错误信息)
如果需要生成debug信息,则修改配置文件
版本低于 5.3:jmeter/bin/jmeter.properties,搜索 "log_level.jmeter"
版本高于 5.3:jmeter/bin/log4j2.xml,搜索 "Root" 元素
将 info 修改为 debug
重新运行后的 jmeter.log 日志如下:
也可以使用 -j 指定日志路径
4.2. 生成测试结果日志
jmeter 通过 -l 生成测试结果的日志
jmeter -n -t 测试文件 -l 结果文件
每列数据说明
timeStamp # 测试执行的时间戳(单位:ms)
elapsed # 请求的响应时间(单位:ms)
label # JDBC Request或HTTP的业务名称
responseCode # 响应的状态码
responseMessage # 响应的状态消息
threadName # 线程的名称或标识符
dataType # 请求或响应的数据类型,通常是文本或二进制
success # 请求是否成功(true、false)
failureMessage # 如果请求执行失败,则记录失败的原因或错误消息
bytes # 响应的字节数,表示响应数据的大小
sentBytes # 请求发送的字节数,表示请求数据的大小
grpThreads # 当前线程组中活跃的线程数
allThreads # 所有线程组中活跃的线程数
URL # 请求的 URL
Latency # 发送请求后,服务器响应开始之前的延迟时间(单位:ms)
IdleTime # 在发送请求之间的空闲时间(单位:ms)
Connect # 与服务器建立连接所花费的时间(单位:ms)
4.3. 将结果日志生成报告
《目录4.2》中说明了如何生成结果日志,在运行结束后可以将该文件生成报告,有2种方式。
注意:结果日志越大,生成报告越慢
【方法一】使用命令行生成报告
jmeter -g 日志文件 -o 报告目录 # 需要一个不存在的目录,jmeter自动创建
将该目录下载到本地,打开 index.html,完整报告如下:
【方法二】使用GUI工具生成报告
点击 "工具" 中的 "Generate HTML report"
生成报告如下:
【方法三】使用GUI工具生成图表
打开 jmeter 添加几个报告,比如:聚合报告、响应时间、吞吐量等。
右击线程组 → 添加 → 监听器 → 聚合报告
右击线程组 → 添加 → 监听器 → jp@gc - Response Times Over Time
右击线程组 → 添加 → 监听器 → jp@gc - Transactions per Second
在报告的页面打开这个日志文件,举个例子(吞吐量报告):
结果如下:
4.4. 执行jmeter自动生成报告
执行 jmeter 后自动生成报告需要使用2个参数:
-e:在测试结束后生成HTML报告
-o:指定用于生成HTML报告的目标目录
jmeter -n -t 测试文件 -l 结果日志 -e -o 报告目录 # 报告目录为不存在的目录
生成的报告与上面 -g 是一样的,在本地打开 index.html 即可(注意:需要下载整个目录到本地,否则打开 index.html 是空的)
总结
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面
总结: 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)