Jemeter的基础讲解及基础使用

本文介绍Apache JMeter的基础使用,涵盖安装配置、元件功能解析及接口测试流程。通过实例演示如何进行简单的性能测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jemeter的基础使用

1 概述

Apache JMeter是Apache组织开发的一款开源软件,是典型的纯Java开发的应用程序,可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。JMeter主要用于应用程序的功能负载测试以度量软件的性能,也可以用于其他类型的测试比如接口测试,API测试等。

主要用于做压测的

JMeter设置为中文环境:

  • 临时设置

Jmeter菜单栏选择OptionsàChoose LanguageàChinese (Simplified)这种方法,重启软件后又变为英文环境了。

  • 永久设置:

进入apache-jmeter-5.2.1\bin目录,找到“jmeter.properties”文件,在文件的第37行后添加“language=zh_CN”,保存之后再打开jmeter就永久变为中文环境了。
在这里插入图片描述

2 Jmeter的主要元件

1. 测试计划

使用JMeter进行测试的起点,它是其他JMeter测试元件的容器

2. 线程组

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

3. 配置元件

维护Sampler需要的配置信息,并根据实际的需求修改请求的内容

4. 前置处理器

负责在请求之前的工作,常用来修改请求的设置

5. 定时器

负责请求定义之间的延迟间隔

6. 取样器(Sampler)

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

7. 后置处理器

主要在请求之后工作,常用来获取返回值

8. 断言

用来判断请求响应的结果是否如用户所期望的

9. 监听器

负责收集测试结果,同时确定结果显示的方式

10. 逻辑控制器

可以自定义JMeter发送请求的行为逻辑,它是Sampler结果使用可以模拟复杂的请求序列

3 JMeter元件的作用域和执行顺序

3.1 元件作用域

  • 配置元件:影响其作用范围内的所有元件【配置】
  • 前置处理器:在其作用范围内的每一个Sampler元件之前执行【之前处理】
  • 定时器:在其作用范围内的每一个Sampler有效【定时发生】
  • 后置处理器:在其作用范围内的每一个Sampler元件之后执行【之后处理】
  • 断言:在其作用范围内的对每一个Sampler元件执行之后的结果进行校验【校验】
  • 监听器:在其作用范围内对每一个Sampler元件的信息收集并呈现【收集信息】
  • 总结:从各个元件的层次结构判断每个元件的作用域

3.2 元件执行顺序

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

注意:

  1. 前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
  2. 如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。

4 JMeter进行接口测试流程

使用JMeter进行接口测试的基本步骤:

1. 测试计划
2. 线程组
3. HTTP Cookie管理器
4. Http请求默认值
5. Sampler(HTTP请求)
6. 断言
7. 监听器(查看结果树、图形结果、聚合报告等)

4.1 测试计划

打开JMeter:在bin目录下执行jmeter.bat命令

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

4.2 线程组

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

元件描述:一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
在这里插入图片描述

在这里插入图片描述

1. 线程数:虚拟用户数。多少个线程就是多少个虚拟用户。
2. Ramp-Up时间(秒):设置虚拟用户的全部启动时长。如果线程数是20,准备时长为10秒,那么需要10秒
   钟启动20个线程,也就是平均每秒启动2个线程。
3. 循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程都会发送10次请求。
   总请求数为:20*10 = 200,如果勾选了"永远",那么所有线程会一直发送请求,直到手动点击工具栏上的
   停止按钮或设置的线程时间结束。

4.3 HTTP Cookie管理器

添加方法:右键线程组 - 添加 - 配置元件 - HTTP Cookie管理器
在这里插入图片描述

HTTP Cookie管理器可以像浏览器一样存储和发送cookie,如果我们要发送一个带cookie的http请求,
cookie manager会自动存储该请求的cookies,并且如果后面发送同源站点的http请求时,都可以用
这个cookies

在这里插入图片描述

4.4 HTTP请求

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

HTTP请求默认值是为了方便填写后续内容而设置。主要填写"服务器名称或IP""端口号",这样后续的HTTP请求
就不用每次都填写IP地址和端口号了。【默认设置】

在这里插入图片描述

②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请求后得到的响应式301/302时,JMeter自动重新定向到新的页面。
  10. 使用keep Alive:保持JMeter和目标服务器之间的活跃状态,默认选中
  11. 对Post使用multipart/from-data:当发送POST请求时,使用multipart/from-data方法发送,默认不选中
  12. 同请求一起发送参数:在请求中发送URL参数,对于带参数的URL,JMeter提供了一个简单的填写参数方法。 【直接通过表格填写】
    在这里插入图片描述

4.5 响应断言

添加方法:右键HTTP请求 - 添加 - 断言 - 响应断言
在这里插入图片描述

检查接口是否访问成功。如果检查失败的话会提供找不到断言的内容,没有提示的话就代表成功了。
  • Apply to

指断言的作用范围,通常发出一个请求只触发一个服务器请求,所以勾选"main sample only"就可以1了,如果发一个请求可以触发多个服务器请求,就有main sample和sub-sample之分了

- Main sample and sub-samples 作用于主请求和子请求
- Main sample only:只作用于主请求
- Sub-samples only:只作用于子请求
- JMeter Variable:作用于JMeter变量(输入框内输入jmeter变量名称)
  • 测试字段
1. 响应文本:匹配返回的json数据
2. 响应代码:匹配返回代码,如200,404,500等
3. 响应信息:匹配响应回来的信息,如"OK","请求成功"字样
4. 响应头:匹配响应头中的内容
5. 请求头:匹配请求头中的内容
6. URL样本:匹配请求的URL链接,如果有重定向则包含请求URL和重定向URL
7. 文档(文本):匹配响应数据的文本形式
8. 忽略状态:一个请求如果有多个响应断言,第一个响应断言选中此项,当第一个响应断言失败时,可以忽略此
   响应,继续进行下一个断言。如果下一个断言成功,则还是判断事务是成功的
9. 请求数据:配置请求的数据
  • 模式匹配规则
- 包括:响应内容包含需要匹配内容就代表响应成功【支持正则】
- 匹配:响应内容要完全匹配需要匹配的内容才代表响应成功【大小写不敏感,支持正则】
- 字符串:响应内容要包含需要匹配的内容才代表响应的内容【大小写敏感,不支持正则】
- 相等:响应内容要完全等于需要匹配的内容才代表响应成功【大小写敏感,不支持正则】
- 否:相当于取反,如果结果为true,勾上该选项,就为false
- 或者:如果不想用AND连接(所有模式都必须匹配,断言才算成功),用OR选项可以用于将多个断言模式进行
      OR连接(只要有一个模式匹配,断言就是成功的)
  • 测试模式(输入要断言的数据)

其实就是增加断言的数据,点击"添加",输入要断言的数据

4.6 增加监听器

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

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

5 实战

5.1 简单应用

访问百度(www.baidu.com)为例

①新建线程组,设置线程数为1
在这里插入图片描述

在这里插入图片描述
②新增HTTP请求
在这里插入图片描述
在这里插入图片描述
③右击HTTP请求 - 添加响应断言
在这里插入图片描述
④添加监听器 - 结果树
在这里插入图片描述

⑤保存之后,点击运行执行测试,查看结果
在这里插入图片描述
在这里插入图片描述

5.1 JMeter使用cookie

JMeter使用Cookie,有两种方式,一种是使用HTTP Cookie管理器,一种是使用HTTP信息头管理器

服务器应用代码(端口是8201):

@RestController
public class TestController {

    @GetMapping("/test")
    public void testCookie(HttpServletRequest request){
        Cookie[] cookies = request.getCookies();
        for(Cookie cookie : cookies){
            System.out.println("name: " + cookie.getName());
            System.out.println("value: " + cookie.getValue());
        }
    }
}
①使用HTTP Cookie管理器:
  • 创建一个,HTTP请求,配置如下:
    在这里插入图片描述
  • 创建HTTP Cookie管理器【右击HTTP请求 - 添加 - 配置元件 - HTTP Cookie管理器】
    在这里插入图片描述
可以看到我们传了两个数据过去:userId与userAge

Cookie管理器不起作用

  1. 在JMeter的bin目录下,修改配置文件jmeter.properties下的参数【CookieManager.save.cookies=true】,重启JMeter
  2. 尝试修改cookie标准

在这里插入图片描述

  • 发送HTTP请求(请求成功后查看结果树)
    在这里插入图片描述
    服务器接收到的数据:
    在这里插入图片描述
②使用HTTP信息头管理器
  • 新加HTTP信息头管理器
HTTP请求 - 添加 - 配置元件 - HTTP信息头管理
  • 新增数据(名称需要为Cookie,区分大小写)
    在这里插入图片描述

  • 发起请求,查看结果树
    在这里插入图片描述

  • 服务端结果:
    在这里插入图片描述

③注意
使用了HTTP Cookie管理器了就不要再HTTP信息头里面再添加Cookie信息了,容易起冲突

参考文章:
https://zhuanlan.zhihu.com/p/72905562
https://zhuanlan.zhihu.com/p/142897766

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值