Jmeter使用教程以及实用的方法介绍。
what’s jmeter?
Jmeter官网:https://jmeter.apache.org/
官网地址:https://jmeter.apache.org/,官网介绍如下:
The Apache JMeter? application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.
翻译原文的意思是,这是一个java应用,旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。
what can I do?
(仅作了解,官网一大堆介绍)Apache JMeter 功能包括:
概况,总之我们可以使用该工具进行压力测试(简称压测),最后可以根据压测结果分析服务器性能和代码性能。
how to do?
重点在于如何使用,这里我们分为三部分介绍:
- 下载
- 安装配置
- 使用
下载
选择Binaries编译好的可执行版本即可,下载完成之后将会得到一个.zip或者.tgz的压缩包。
解压完之后将会得到这样结构的文件:
重点关注bin目录,我们进入到bin目录下查看目录结构:
以下我们都在windows环境下进行(Linux 和 macOS 则是 执行 bin/jmeter.sh,Linux的使用将计划另开文章介绍),我们直接双击打开jmeter.bat文件即可运行(少数情况下需要以管理员权限运行),但是此时我们应该无法正常运行,需要两个前置条件:
- 电脑上jre环境并且配置了系统环境变量
- 配置jmeter相关系统环境变量
假设读者第1点已经都成功配置了,这里我们只重点关注第2点。
安装配置
-
新增JMETER_HOME的系统变量:将你解压后的jmeter根目录地址进行录入 -
编辑path,新增以下两组环境变量 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar
%JMETER_HOME%\lib\jorphan.jar
这个时候,我们回到jmeter的bin目录里,双击打开jmeter.bat,将会跳出一个黑框执行窗口,随后将会唤醒一个GUI界面:
这里由于我已经设置过语音为中文,大家第一次打开应该是英文界面,可以根据实际需要选择是否将界面设置为中文,设置方法有两种:
- 上方菜单栏选择Options->Choose Language->Chinese,缺点是每次打开jmeter都需要设置一次
至此,我们的环境变量配置结束,已经能够成功运行了,接下来我们介绍如何使用。
使用
-
右键测试计划创建线程组 这里我们看到有三种类别的线程组:分别是setUp线程组,线程组,以及tearDown线程组 我们可以理解为setUp线程组是主线程运行前需要执行的准备工作,例如执行准备测试数据,线程组即为主线程将准备好的测试数据进行压测,tearDown线程组则是压测结束的后置动作将测试数据进行清理。 -
设置属性 分成三部分来看,分别是错误策略,线程属性,调度器。
-
设置取样器,这里我们以HTTP请求为例 右键线程组->添加->取样器->HTTP请求
这里再额外介绍一下如果我们的请求需要设置请求头,但是在这里没找到设置请求头的地方我们该如何设置。 测试计划右键->添加->配置元件->HTTP信息头管理器 我们就可以点击添加按钮进行新增请求头信息,这里设置的请求头将会被应用到同一个测试计划种的HTTP请求中。 -
设置监听器 我们监听运行过程中的参数,需要通过设置监听器来实现: 右键HTTP请求->添加->监听器 这里我们能看到很多组监听器,一般情况下最主要的监听器就是以下几种:
查看结果树:保存所有的线程请求结果,支持以.csv格式保存,我们需要设置一个写入文件路径表示将请求过程写入到某个文件中。并且支持仅错误日志还是仅成功日志的筛选显示。点开配置按钮可以支持导出数据的内容,一般用默认的配置即可。 汇总报告主要包括请求时长最小值,最大值和平均值,以及吞吐量等信息,该部分信息会在执行过程中实时刷新数据,并且在执行完之后可以保存表格数据到本地: 聚合报告同汇总报告,可以实时刷新数据,并且执行完之后可以保存表格数据到本地。 -
设置JSON断言 什么是JSON断言?意思就是我们在执行过程中并不一定统一用http返回状态码200来表示执行成功,有可能我们的http状态码是200,但是我们的返回值业务状态码实际上是返回了一个错误的自定义业务状态码,例如: {
"statusCode": "9000",
"errMsg": "用户注册失败!"
}
这个时候我们就不能将该次请求算作成功了,所以我们需要通过JSON断言来实现,例如我们规定statusCode返回2000才能算作成功。 在Assert JSON Path exists中设置对应值,这里写作:$.statusCode Expected Value:2000 即实现上述判断业务状态码是否成功,只有statusCode=2000的情况下才算作请求成功。
至此,我们已经全部实现了压测前的配置准备工作,我们点击菜单栏中的绿色运行按钮即可以开始压测了:
附加:使用动态请求数据进行测试
以上我们设置请求参数都是固定的,如果我们需要从一个地方模拟每个线程数使用不同的参数该如何实现呢。
首先我们准备好一份csv文件,里面有id,name的表头值。
随后我们添加CSV Data Set Config的配置元件:
主要设置文件的位置,然后指定文件编码,变量名称使用我们的表头用英文逗号分割,即这里是id,name
下方的配置中一般采用默认配置即可,需要注意的是是否允许带引号那里默认是False,根据需要可以选择True,即表示后续我们设置变量的时候前后默认带引号表示字符串。
回到HTTP请求,我们设置请求体数据就可以用变量符号${}来表示csv的变量,它就会循环获取csv中的数据了:
{
"id": ${id},
"name": ${name}
}
参考资料:
|