jmeter单接口压力测试 json提取器的使用

jmeter介绍

        Apache JMeter 是一个用于对软件进行性能测试的开源工具。它最初是为测试 Web 应用程序而设计的,但后来扩展到了其他测试领域。JMeter 可以用于模拟多种负载类型,包括静态资源、动态资源、Web Service、数据库等,从而对应用程序的性能进行评估和调优。这里主要介绍jmeter压力测试的过程和一些常用的元素。

jmeter json提取流程

1.打开jmeter

        在jmeter安装目录下双击jmeter.bat打开就行,如果桌面有快捷键直接打开也行噢~

2.添加线程组

        线程组模拟用户的并发访问,它主要包含三个参数:线程数、准备时长、循环次数。线程数模拟虚拟用户数,如设置10表示10个线程,模拟10个虚拟用户;准备时长表示设置的线程个数全部启动的时间,如设置10,如果有5个线程,表示5个线程在10秒钟全部启动,那么2秒启动1个线程;循环次数表示每个线程请求的次数,如设置为10,有5个线程表示共请求5*10=50次请求。如果勾选“永远”就会一直发送请求,直到停止运行。

        直接在测试计划下右键添加,可以给计划命名,看需要!

3.添加http请求

        http请求即向服务器发送请求

        鼠标放置线程组上右键选择 添加->取样器->HTTP请求,如图配置相关信息

4.添加http信息头管理器

        (1)位置:线程组 -> 右键 -> 添加 -> 配置元件 -> HTTP信息头管理器。HTTP 请求发送请求到服务器,请求报文包含:请求行、请求头、请求体。请求行和请求体可以在 HTTP Request 取样器中填写,那么请求头就是在这里填写了~

       (2)常见的请求头和标头说明

标头说明
Accept浏览器可以接受服务器回发的类型。
Accept-Encoding浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法
Accept-Language浏览器申明自己接收的语言
Connection

长连接,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Connection:close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接

Content-Type数据类型
Host当前请求要被发送的目的地,仅包括域名和端口号
Origin当前请求资源所在页面的协议和域名,用来说明请求从哪里发起的,这个参数一般只存在于CORS跨域请求中,普通请求没有这个header!
Referer当前请求资源所在页面的完整路径
Authorizationheader中的Token
User-Agent浏览器信息

我这里只需要一个参数,如果需要参数化的变量就用${变量名}的形式代替 

5.添加响应断言

位置:HTTP请求右键->添加->断言->响应断言

        (1)测试字段(指用什么返回信息做断言)

  • 响应文本: 响应服务器返回的⽂本内容。
  • 响应代码:断⾔Http 响应码是否符合预 期,⽐如 200。
  • 响应的消息:验证响应消息是否按预期 显示。
  • 响应头:断⾔查看特定的 HTTP 标 头是否存在。

        (2)模式匹配规则

  • 包括 Contains: 响应内容【包含】需要匹配,⽀持正则 表达式。
  • 匹配 Matches: 响应内容要【完全匹配】需要匹配代表 响应成功,⼤⼩写不敏感,⽀持正则表达式。
  • 相等 Equals: 响应内容要【完全等于】需要匹配代表响 应成功,⼤⼩写敏感,内容是字符串
  • 字符串Substring: 响应内容【包含需要匹配】的内容才代 表响应成功,⼤⼩写敏感,内容是字符串
  • 不相等 Not: 取反操作,不相等
  • OR: 应⽤ OR 组合中的每个断⾔,将多个断⾔模式进⾏ OR连接

我的简单设置一下断言就欧克了~,这里只是做展示,如果是真正的压力测试建议大家不要只添加一个断言,因为不是很准确! 位置是放在登录请求下面,我这里手动拖动移动,大家不要被截图迷惑,其实放这里也可以的!

6.添加json提取器(取登录后jwt,因为后面操作需要jwt,比如电商管理系统,增加商品是登录后的操作,那么我们访问增加商品这个接口就要携带登录的token,我这里使用jwt,所以json提取的是jwt)

位置:HTTP请求右键——>添加——>后置处理器——>JSON提取器 

  • Apply to应用范围,选取默认的main sample only就行 
  • names of created variables :接收值的变量名,多个变量时用分号分隔
  • json path:json path表达式,提取某一个值,也是用分号分隔。另外一种特殊提取数据有多个id,可用$.data[*].id,获取相应数据的data中的所有id,引用_N取第N个值
  • match no:0随机;n取第几个匹配值;-1匹配所有
  • default values:缺省值,匹配不到值的时候取该值

 ​​​​​

6.1添加增加角色的http请求和断言,http请求信息头管理引用jwt 

        断言我设置和登录请求断言一样比较简单 ,虽然不太准确,但是查看结果树看响应内容是正确的!

 7.添加查看结果树

位置:右键->添加->监听器->查看结果树

        这里我在之前就添加了,前面后面加都没有问题的,然后点击运行,在查看结果树那里查看结果

        注意我还添加Http请求默认值,它具体作用是测试的接口都是这个服务器,那这里配置http请求默认值会简化一些操作,如果都不一样,就不需要这个http请求默认值 

        就比如我在这里配置这些

         那么我在这个线程组组下面的所有请求,就不需要填这些信息

        还有我刚是在Http信息头管理引用提取的jwt, 那么大家也可以试一下在消息数据体里面引用。比如,先在这个上图这个请求里面添加json提取,选取要传入参数,在添加修改角色HTTP请求,在修改角色消息体数据体中引用提取的参数,可以实际操作一下噢,步骤差不多,这里就不作描述了!!

单接口压力测试 

1.添加获取作品列表的请求接口,断言,HTTP信息头管理

2.添加仅一次 控制器

        把登录手动移动到仅一次控制器中,因为登录只需要进行一次,我这里有把之前的新增角色请求禁用掉噢,直接选择请求右键禁用。

3.添加循环控制器

        把获取作品请求手动移入到循环控制器中,因为要实现这个接口压测,设置循环控制器循环次数,看需要设置。如果设置线程数那么,执行这个接口次数等于线程数与接口循环次数相乘。

4.添加聚合报告

        点击运行,查看聚合报告,运行成功如下图

 聚合报告     

  • Label:请求的名称,就是脚本中Sampler的名称。
  • #Samples(样本):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次。
  • Average(平均值):默认情况下是单个Request的平均响应时间,当使用了Transaction Controller(事务控制器) 时,也可以用Transaction的时间,来显示平均响应时间 ,单位是毫秒。
  • Median(中位数):50%用户的响应时间小于该值。
  • 90% Line(90% 百分位):90%用户的响应时间小于该值。
  • 95% Line(95% 百分位):95%用户的响应时间小于该值。
  • 99% Line(99% 百分位):99%用户的响应时间小于该值。
  • Min(最小值):最小的响应时间。
  • Maximum(最大值):最大的响应时间。
  • Error%(异常%):错误率=错误请求的数量/请求的总数。
  • Throughput(吞吐量):默认情况下表示每秒完成的请求数(Request per Second)。
  • Received KB/sec (接收数据):每秒从服务器端接收到的数据量。
  • Sent KB/sec(发送):每秒发送到服务器端的数据量。

  • 39
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter使用Beanshell和Json提取结合可以提取变量。首先,你需要通过Json提取接口的返回值中提取出想要的变量。然后,你可以使用Beanshell取样来设置全局变量。下面是一个示例脚本: ``` ${__setProperty(变量名称,${Json提取中参数名称},)} ``` 上面的脚本将从Json提取中获取的参数值存储为一个全局变量。这样,在后续的接口中你就可以使用这个全局变量作为参数了。这个方法适用于同一线程组或不同线程组的接口。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [如何在Jmeter使用json提取并将结果在全局变量中使用?](https://blog.csdn.net/qq_29954891/article/details/127100693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Jmeter beanshell 提取json对象中的数据](https://blog.csdn.net/sasibingdu/article/details/120327187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值