Apache JMeter 是一个开源软件,是 Apache Software Foundation 的一部分,用于性能测试和评估 Web 应用程序的性能。
以下是关于 JMeter 的一些基本介绍:
目的:
功能:
如何使用:
.jmx
文件,之后可以重新加载进行编辑或执行。分布式测试:
注意事项:
1、点击官网下载。
2、解压运行jmeter.bat
文件。一般在解压目录的这个位置:apache-jmeter-5.6.2\bin\jmeter.bat
3、下载插件管理器,并放置在Jmeter的/lib/ext
目录下,重启。
4、修改语言。当然大家可能不习惯原界面是全英文,我们可以采用两种方式进行语言修改:
方式一:我们可以通过系统设置中文:
options
->Choose Language
->Chinese(Simplified)
方式二:我们也可以修改配置文件:找到 Jmeter 的
bin
目录,打开jmeter.properties
文件,找到语言配置language=
这一行,可能一开始这行是被#
给注释掉了,所以我们要去掉这个符号,然后我们把它设置为zh_CN
即可:language=zh_CN,这样每次启动都会自动设置为中文界面。别忘记编辑之后需要保存一下噢。
5、这时候可以在选项栏看到最下方的Plugins Manager
6、安装插件:点击Available Plugins
搜索jpgc - Standard Set
,勾选后点击应用并重启,这时候就会自动下载对应的插件,请耐心等待插件下载安装完毕后会自动重启,如果这时候手动重启,插件就不会安装好。安装好后,再次打开Plugins Manager就可以在Installed Plugins(已安装插件) 位置看到它并且已经是勾选状态。
7、查看插件是否成功启用。 这时候我们就可以发现,在给我们的测试计划
中,对线程组
添加监听器
时,会多出如下图所示的部分结果分析
的插件,他们会根据监听的结果生成图表,其中常用的就是:jp@gc - Transactions per Second(TPS)
在开始应用Jmeter前我们先对它的主要元件做一下了解:
1、测试计划:是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器
2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler
中定义,它被线程组包含。
3、配置元件:维护Sampler
需要的配置信息,并根据实际的需要修改请求的内容。
4、前置处理器:负责在请求之前工作,常用来修改请求的设置
5、定时器:负责定义请求之间的延迟间隔。
6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request Sampler
、FTP Request Sample
、TCP Request Sample
、JDBC Request Sampler
等,每一种不同类型的sampler
可以根据设置的参数向服务器发出不同类型的请求。
7、后置处理器:负责在请求之后工作,常用获取返回的值。
8、断言:用来判断请求响应的结果是否如用户所期望的。
9、监听器:负责收集测试结果,同时确定结果显示的方式。
10、逻辑控制器:可以自定义JMeter
发送请求的行为逻辑,它与Sampler
结合使用可以模拟复杂的请求序列。
元件作用域
配置元件:影响其作用范围内的所有元件。 前置处理器:在其作用范围内的每一个sampler元件之前执行。
定时器:在其作用范围内的每一个sampler有效
后置处理器:在其作用范围内的每一个sampler元件之后执行。
断言:在其作用范围内的对每一个sampler元件执行后的结果进行校验。
监听器:在其作用范围内对每一个sampler元件的信息收集并呈现。
总结:从各个元件的层次结构判断每个元件的作用域。
元件执行顺序:
配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器
注意事项
前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。
测试计划
线程组
HTTP Cookie管理器
Http请求默认值
Sampler(HTTP请求)
断言
监听器(查看结果树、图形结果、聚合报告等)
打开Jmeter,在菜单左侧出现 “测试计划”。在这里测试计划我们可以把它理解成新建的空白项目,在这个空白项目下面可以添加一系列的接口。
添加方法:右键点击
Test Plan
->添加
->线程(用户)
->线程组
元件描述:一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
属性参数
线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数
Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。
循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”, 那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。
添加方法:右键
线程组
->添加
->配置元件
->HTTP Cookie管理器
元件描述:(简单举例就是登录之后不需要再次登录类似的场景)HTTP Cookie管理器可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies
添加方法:右键
线程组
->添加
->配置元件
->HTTP请求默认值
元件描述:HTTP请求默认值是为了方便填写后续内容而设置。主要填写[
服务器名称或IP
]和[端口号
],后续的HTTP请求中就不用每次都填写IP地址
和端口号
了。
添加方法:右键
线程组
->添加
->Sampler(取样器)
->HTTP请求
元件描述:HTTP请求包括接口请求方法、请求路径和请求参数等。
HTTP请求参数配置详解
添加方法:右键
HTTP请求
->添加
->取样器
->HTTP请求
元件描述:检查接口是否访问成功。如果检查失败的话会提示找不到断言的内容,没提示的话就代表成功了。
配置属性释义
1、Apply to
指断言作用范围,通常发出一个请求只触发一个请求,所以勾选“main sample only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了。
2、测试字段
json
数据200
, 404
, 500
等3、模式匹配规则
4、测试模式:其实就是断言的数据。点击“添加”按钮,输入要断言的数据。
添加方法:
线程组
-> 右键添加
->监听器
->察看结果树
。一般还会一并添加图形结果、聚合报告。元件描述:树状形式显示接口的访问结果,包括请求结果、请求内容、服务器的响应内容。
简单的GET单一请求接口的压力测试
测试计划
、线程组
和HTTP请求
;然后根据我的代码的Controller层(以下以Spring Boot的Java项目为例),找到对应需要配置的参数:端口信息
、请求路径
、请求类型
和 请求参数
,如图所示:
Controller参数要素
HTTP请求参数配置
我边配置10个并发,在1秒内启动,每个并发用户循环请求序列2000次
我们给
线程组
添加查看结果树
、响应时间图
、Transactions per Second
、Response Time Over Time
, 如图所示:
此外我们还可以对
TPS图
和RTOT图
进行预设设置,他们都有对应的配置,可以调整稍后执行计划后,对结果的分析展示的粒度
TPS图配置
PTOT图配置
保存设定好的测试计划,然后点击绿色按钮,启动测试计划,如图所示:
响应时间图生成前配置
生成的响应时间图
复杂的组合请求,整个环节的联动压力测试
本文作者:Golovin
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!