如何使用Jmeter进行压力测试?这篇入门讲解请拿走!

Jmeter作为一款开源的轻量级应用,可以快速完成接口和性能测试任务,方便、快捷又灵活,是值得一用的首选开源工具。
在上一期文章“一文带你熟悉Jmeter原理和结构体系”中,小编为大家介绍了Jmeter的原理、结构体系、八大元件及其用法。有了这层基础,本期小编教大家如何使用Jmeter进行压力测试,主要包括以下三个要点:
如何使用Jmeter,并结合Fiddler测试系统;
如何提取动态值;
响应断言等常用配置和操作。
1 压测脚本的编写方法
首先,小编为大家讲解压测脚本的编写方法,主要包括八个步骤。各步骤的具体内容依次如下:
Step1 配置Jmeter基础组件
打开Jmeter,添加“-线程组”,并右键线程组,添加“-配置元件”,包括:Cookie管理器、用户自定义变量、调试取样器、观察结果树、聚合报告等。
注:在配置Jmeter基础组件时,要养成随时添加上述配置元件的好习惯。

Jmeter基础组件配置示例
小知识:
此处使用的线程组为并发线程组(Concurrency Thread Group),插件下载地址如下:
https://jmeter-plugins.org/wiki/PluginsManager/
下载后直接将“jmeter-plugins-manager.jar”包放在Jmeter安装目录“apache-jmeter-4.0\lib\ext”下,重新启动Jmeter即可使用。
Step2 录制Fiddler脚本
完成Jmeter基础组件的配置后,录制Fiddler脚本,业务操作路径为:登录苍穹→首页展示→【应用列表】→一级菜单【应用】→二级菜单【系统服务云】→三级菜单【主数据】→四级菜单【物料】。
下图为Fiddler抓包会话请求列表,右键请求列表可添加注释及颜色标记,方便快速定位每个业务操作所对应的HTTP请求。

Fiddler抓包会话请求列表
Step3 导入Fiddler脚本到Jmeter
接着,导入录制好的Fiddler脚本到Jmeter中,操作路径为:打开Fiddler→点击“检查”→点击“表单”→选中【参数】列表中的请求体→右键复制→打开Jmeter→HTTP请求→点击“从剪切板粘贴”。

“复制请求体”操作示例

“粘贴请求体”操作示例
重复上述步骤,将Fiddler中的请求逐一复制到Jmeter中,通过配置用户自定义变量设置HTTP请求中协议、服务器名称、端口号、方法和路径。
注:1)用户自定义变量有三个要求:有共性、替换方便和改动少;
2)Fiddler已有对应的扩展插件支持Jmeter-JMX文件格式导出,此处不做复述。
Step4 参数化(后置处理器-正则提取器)
根据Fiddler找到的关联关系,在对应的请求中添加后置处理器,选择正则表达式提取器。如下图所示:

正则表达式提取器配置示例
关于上图中各字段的说明如下:
1)引用名称:下一个请求要引用的参数名称,如填写“title”,则可⽤“${title}”引用它;
2)正则表达式,部分字符说明如下:
():括号内的内容即为所需提取的内容;
. :匹配任何字符串;
+ :一次或多次;
? :在找到第⼀个匹配项后停止匹配。
更多特别字符说明,请见下图:

正则表达式特别字符说明
注:针对响应结果为JSON格式的,表达式采用“左边界([^",]+?)右边界”,能够满足我们80%的使用场景。
3)模板:用“$$”引⽤模板,如果在正则表达式中有多个模板,则可以是“$2$$3$”,表示解析到的第几个值给“title”,如:“$1$”表示解析到的第1个值。
4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0。
5)缺省值:如果参数没有取到值,则设置一个缺省值作为默认值。
Step5 参数化(CSV数据驱动)
为贴近用户真实使用场景,对登录用户做参数化,Jmeter将读取CSV文件里面的参数进行压测。具体方法请参考下图:

CSV数据文件设置示例
Step6 设置断言
接着,设置断言,具体方法请参考下图:

设置断言示例
关于响应断言作用域的说明如下:
1) 可以断言服务器的响应内容;
2) 在性能测试脚本中使用断言,一般是为了校验接口响应内容是否符合预期;
3) 断言成功与否,可通过【监听器】→【断言结果】查看;
4) 如果断言失败,则将此请求标记为“失败”,并显示在【察看结果树】中,错误率则会显示在【聚合报告】中;
5) 可以将断言添加到任何取样器,但只作用于当前取样器;
6) 如果断言是在线程组下,则会作用于线程组下的所有取样器。
然后,响应断言,运行回放验证,更新断言期望值展示出错信息。
注:压测过程中,一个好的断言能保证测试结果的准确性。
Step7 设置思考时间(定时器-高斯随机定时器)
“断言”设置完成后,需设置思考时间,即实际操作中,模拟真实⽤户在操作过程中的等待时间。设置路径为:【定时器】→【高斯随机定时器】,如下图所示:

设置思考时间示例
Step8 添加事务(逻辑控制器-事务控制器)
最后,添加事务,路径为:【逻辑控制器】→【事务控制器】。

添加事务示例
事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。关于上图中的两个勾选项,说明如下:
Generate Parent Sample:如果选中,事务控制器将作为其他取样器的父级样本,否则事务控制器仅作为独立的样本。
如果选中这个参数,结果显示为下图红框,否则显示为下图蓝框。

Include duration of timer and pre-post processors in generated sample:该选项用于控制是否在生成的样本中包括计时器、预处理和后处理的延迟时间。选中该项则会统计定时器(timer)的时间,否则只统计采样器(sample)的时间。
小知识:
1)QPS:每秒钟处理完的请求次数。
注:“处理完”是指发出请求到服务器处理完成功返回结果。可以理解为:有个counter,每处理一个请求加 1,1 秒后counter = QPS。
2)T
如何使用Jmeter进行压力测试?这篇入门讲解请拿走!
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



