编辑
2023-09-18
工具
00

目录

一、JMeter介绍
二、下载安装
三、Jmeter主要元件
1、各元件的基本介绍
2、各元件的作用域和执行顺序
三、接口测试流程介绍
1、基本步骤
2、测试流程步骤详解:
1、测试计划
2、线程组
3、HTTP Cookie管理器
4、HTTP请求默认值
5、HTTP请求
6、响应断言
7、增加监听器
四、Jmeter的应用
例一:序列获取 - 简单请求压力测试
1、HTTP请求配置
2、线程组参数配置
3、设置监听器
4、执行测试计划
5、结果分析
例二:登录后菜单列表获取 - 组合请求压力测试

一、JMeter介绍

Apache JMeter 是一个开源软件,是 Apache Software Foundation 的一部分,用于性能测试和评估 Web 应用程序的性能。

以下是关于 JMeter 的一些基本介绍:

  1. 目的

    • JMeter 主要用于对软件、应用和服务进行加载测试、性能测试、压力测试和功能测试。
  2. 功能

    • 可以测试 Web 应用程序、Web 服务、数据库、FTPSMTPPOP3 等各种服务和协议。
    • 提供图形用户界面,便于创建和管理测试计划。
    • 可以模拟多个用户同时向服务器发送请求,以测试服务器的负载能力。
    • 支持多线程和并发用户加载。
    • 支持数据驱动的测试(例如,从 CSV 文件读取数据)。
    • 结果可视化,提供各种图形和表格展示测试结果。
    • 可以扩展功能,支持自定义插件。
  3. 如何使用

    • JMeter 提供了一个图形用户界面(GUI)来创建和编辑测试计划。用户可以通过添加不同的“元件”(例如采样器、定时器、断言、逻辑控制器等)来定义测试的流程和行为。
    • 创建的测试计划可以保存为 .jmx 文件,之后可以重新加载进行编辑或执行。
  4. 分布式测试

    • JMeter 还支持分布式测试,允许使用多台机器并发地执行测试,以模拟更大规模的用户负载。
  5. 注意事项

    • 使用 JMeter 时,最好不要使用其图形界面进行大规模或高并发的测试,因为 GUI 可能会消耗额外的资源。通常建议在非 GUI 模式下执行这些测试。
    • 虽然 JMeter 主要用于 Web 应用测试,但它并非一个浏览器,因此可能不会执行像 JavaScript 这样的客户端代码。

二、下载安装

1、点击官网下载

或者点击文件图标,下载我的相同版本File Icon

2、解压运行jmeter.bat文件。一般在解压目录的这个位置:apache-jmeter-5.6.2\bin\jmeter.bat

3、下载插件管理器,并放置在Jmeter/lib/ext目录下,重启

当然也可以直接下载我的相同版本File Icon

4、修改语言。当然大家可能不习惯原界面是全英文,我们可以采用两种方式进行语言修改:

方式一:我们可以通过系统设置中文:options -> Choose Language -> Chinese(Simplified)

方式二:我们也可以修改配置文件:找到 Jmeterbin目录,打开 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前我们先对它的主要元件做一下了解:

1、测试计划:是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器

2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler中定义,它被线程组包含。

3、配置元件:维护Sampler需要的配置信息,并根据实际的需要修改请求的内容。

4、前置处理器:负责在请求之前工作,常用来修改请求的设置

5、定时器:负责定义请求之间的延迟间隔。

6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request SamplerFTP Request SampleTCP Request SampleJDBC Request Sampler等,每一种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求。

7、后置处理器:负责在请求之后工作,常用获取返回的值。

8、断言:用来判断请求响应的结果是否如用户所期望的。

9、监听器:负责收集测试结果,同时确定结果显示的方式。

10、逻辑控制器:可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

2、各元件的作用域和执行顺序

  1. 元件作用域

    配置元件:影响其作用范围内的所有元件。 前置处理器:在其作用范围内的每一个sampler元件之前执行。

    定时器:在其作用范围内的每一个sampler有效

    后置处理器:在其作用范围内的每一个sampler元件之后执行。

    断言:在其作用范围内的对每一个sampler元件执行后的结果进行校验。

    监听器:在其作用范围内对每一个sampler元件的信息收集并呈现。

    总结:从各个元件的层次结构判断每个元件的作用域。

  2. 元件执行顺序

    配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器

注意事项

  1. 前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。

  2. 如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。

三、接口测试流程介绍

1、基本步骤

  1. 测试计划

  2. 线程组

  3. HTTP Cookie管理器

  4. Http请求默认值

  5. Sampler(HTTP请求)

  6. 断言

  7. 监听器(查看结果树、图形结果、聚合报告等)

2、测试流程步骤详解:

1、测试计划

打开Jmeter,在菜单左侧出现 “测试计划”。在这里测试计划我们可以把它理解成新建的空白项目,在这个空白项目下面可以添加一系列的接口。

2、线程组

添加方法:右键点击Test Plan -> 添加 -> 线程(用户) -> 线程组

元件描述:一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。

属性参数

  1. 线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数

  2. Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。

  3. 循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”, 那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。

3、HTTP Cookie管理器

添加方法:右键线程组 -> 添加 -> 配置元件 -> HTTP Cookie管理器

元件描述:(简单举例就是登录之后不需要再次登录类似的场景)HTTP Cookie管理器可以像浏览器一样存储和发送cookie,如果你要发送一个带cookiehttp请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies

4、HTTP请求默认值

添加方法:右键线程组 -> 添加 -> 配置元件 -> HTTP请求默认值

元件描述HTTP请求默认值是为了方便填写后续内容而设置。主要填写[服务器名称或IP]和[端口号],后续的HTTP请求中就不用每次都填写IP地址端口号了。

5、HTTP请求

添加方法:右键线程组 -> 添加 -> Sampler(取样器) -> HTTP请求

元件描述HTTP请求包括接口请求方法、请求路径和请求参数等。

HTTP请求参数配置详解

  1. 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
  2. 注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
  3. 服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。
  4. 端口号:目标服务器的端口号,默认值为80。
  5. 协议:向目标服务器发送HTTP请求时的协议,可以是HTTP或者是HTTPS,默认值为http。
  6. 方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、TRACE、OPTIONS、DELETE等。
  7. 路径:目标URL路径(不包括服务器地址和端口)。
  8. 内容编码:内容的编码方式,默认值为iso8859。
  9. 自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter自动重定向到新的页面。
  10. 使用keep Alive:保持jmeter和目标服务器之间的活跃状态,默认选中。
  11. 对Post使用multipart/from-data:当发送POST请求时,使用multipart/from-data方法发送,默认不选中。
  12. 同请求一起发送参数:在请求中发送URL参数,对于带参数的URL,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的名称1=值1)。

6、响应断言

添加方法:右键HTTP请求 -> 添加 -> 取样器 -> HTTP请求

元件描述:检查接口是否访问成功。如果检查失败的话会提示找不到断言的内容,没提示的话就代表成功了。

配置属性释义

1、Apply to

指断言作用范围,通常发出一个请求只触发一个请求,所以勾选“main sample only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了。

  1. Main sample and sub-samples:作用于主请求和子请求
  2. Main sample only:仅仅只作用于主请求
  3. Sub-samples only:仅仅只作用于子请求
  4. Jmeter Variable:作用于jmeter变量(输入框内输入jmeter变量名称)

2、测试字段

  • 响应文本:匹配返回的json数据
  • 响应代码:匹配返回码, 如200, 404, 500
  • 响应信息:匹配响应信息如“OK”字样
  • 响应头:匹配响应头
  • 请求头:匹配请求头
  • URL样本:匹配请求的url链接,如果有重定向则包含请求url重定向url
  • 文档(文本): 匹配响应数据的文本形式
  • 忽略状态:一个请求有多个响应断言,第一个响应断言选中此项,当第一个响应断言失败时可以忽略此响应结果,继续进行下一个断言。如果下一个断言成功则还是判定事务是成功的
  • 请求数据:匹配请求数据

3、模式匹配规则

  • 包括:响应内容包含需要匹配的内容即代表响应成功,支持正则表达式。
  • 匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式。
  • 字符串:响应内容包含需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式
  • 相等:响应内容要完全等于需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式
  • :相当于取反,如果结果为true,勾上否就是false
  • 或者:如果不想用AND连接(所有的模式都必须匹配,断言才算成功),用OR选项可以用于将多个断言模式进行OR连接(只要一个模式匹配,断言就是成功的)

4、测试模式:其实就是断言的数据。点击“添加”按钮,输入要断言的数据。

7、增加监听器

添加方法线程组 -> 右键添加 -> 监听器 -> 察看结果树。一般还会一并添加图形结果、聚合报告。

元件描述:树状形式显示接口的访问结果,包括请求结果、请求内容、服务器的响应内容。

四、Jmeter的应用

例一:序列获取 - 简单请求压力测试

简单的GET单一请求接口的压力测试

1、HTTP请求配置

  1. 首先我们按照之前的基础流程建立测试计划线程组HTTP请求;然后根据我的代码的Controller层(以下以Spring BootJava项目为例),找到对应需要配置的参数:端口信息请求路径请求类型请求参数,如图所示:


Controller参数要素


HTTP请求参数配置

2、线程组参数配置

我边配置10个并发,在1秒内启动,每个并发用户循环请求序列2000次

3、设置监听器

我们给线程组添加查看结果树响应时间图Transactions per SecondResponse Time Over Time, 如图所示:

此外我们还可以对TPS图RTOT图进行预设设置,他们都有对应的配置,可以调整稍后执行计划后,对结果的分析展示的粒度


TPS图配置


PTOT图配置

4、执行测试计划

保存设定好的测试计划,然后点击绿色按钮,启动测试计划,如图所示:

5、结果分析

  1. 查看结果树:每次的请求结果的详情都会展示在查看结果树中,如图所示:

  1. 响应时间图的生成


响应时间图生成前配置


生成的响应时间图

  1. TPS图:(自动实时生成)

  1. Response Times Over Time图:(自动实时生成)

例二:登录后菜单列表获取 - 组合请求压力测试

复杂的组合请求,整个环节的联动压力测试

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Golovin

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!