编写jmeter脚本的原则和正确执行方式
一、前言
jmeter是一款开源的java语言编写的性能测试工具,很容易上手。但是,在不同的测试人员来使用情况下,得到的性能测试结果会有很大的不同,下面我们来稍微说明下。
二、编写jmeter的原则
1、提取公共部分,做到精简化
说明:上述的脚本包含了多个http请求,每个脚本都有请求host和port,即繁琐也不好维护
良好的习惯:
线程组---添加---配置元件---HTTP请求默认值,在此基础上维护host和port
2、禁用查看结果树
在我们进行脚本调试的时候,通常会使用查看结果树来验证数据返回的正确性。但是,此组件本身是比较消耗客户端性能的,一般来说,在调试的时候,使用一个查看结果树就可以了,在正式压测的时 候,还要进行对其禁止,不然容易漏掉
3、简化脚本逻辑
不要过多的使用if判断和循环等插件,虽然能让我们比较容易的进入测试场景,但这样会增加脚本的复杂性,影响压测客户端的发起效率。需要做的是增加前和增加后,对比性能测试结果,是否可去掉
4、减少使用不必要的插件
比如使用 JMeter 去监控服务器资源,这样的监控不仅简单粗糙,而且较大地影响 JMeter 的压力发起的效率。客户端就做客户端的事,服务端的资源监控有更好的更加专业的解决方案
三、正确执行jmeter的方式
1、命令行执行脚本
jmeter工具是跨平台的,在windows、mac和linux环境下都能运行。它提供了两种运行方式,图形化和命令行。图形化方式是在windows或mac上比较常用来方便调试脚本用的。官方并不建议在正式压测上使用此方式,而是建议命令行方式。并且,大多公司的PC是在局域网上的,信息安全部或多或少会对个人办公电脑进行网络带宽限制,所以还是需要找一个不受网络带宽影响的服务器,使用命令行方式运行脚本,排除压测客户端的性能瓶颈带来的TPS上不去的问题。
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
-n 表示在非 GUI 模式下运行 JMeter;
-t 表示要运行的 JMeter 测试脚本文件,一般是 jmx 结尾的文件;
-l 表示记录结果的文件,默认以 jtl 结尾;
-e 表示测试完成后生成测试报表;
-o 表示指定的生成结果文件夹位置
2、分布式执行脚本
根据多年的实践经验得出,单节点的jmeter在实际压测时,设置的并发线程最好不要超过1000,因为线程数越往上,压测的客户端发起效率并不会越好,甚至会降低,所以此时必须要使用jmeter的分布式压测方案
3、编写beansehll脚本记录接口的返回数据(特别是报错信息)
待续...
4、JMeter+InfluxDB+Grafana方案监控每个接口的实时处理能力
待续...