巧用jmeter逻辑控制器,解决压测中的登录问题(代码片段)

测试萌萌 测试萌萌     2022-12-01     293

关键词:

对一个系统的指定功能进行压力测试时,发现把登录接口一起做了压力测试,那么如何在保持登录情况下,单独对指定接口进行压力测试呢?

01 压力测试目标

对接口A进行X次压力测试(本文示例压测10次)

02 脚本设计思路

接口请求头

【系统登录】接口请求

【系统登录】接口断言

获取token

【子系统登录】接口请求

【子系统登录】接口断言

获取cookie

子系统的功能接口A请求:

添加请求cookie管理器

子系统的功能接口A断言

监听器

03 脚本解说

✅ Logic Controller

逻辑控制器,主要用于控制jmeter脚本运行的逻辑:

Once Only Controller仅一次控制器:主要用于控制登录接口,确保压力测试过程中,登录接口只运行一次即可

Loop Controller循环控制器:用于控制需要进行压力测试的接口,可以循环执行N次

✅ HTTP request

HTTP接口请求,主要用于编辑接口请求的域名(server/IP)、路径(path)、请求数据(request body)

✅ HTTP Header Manager

请求信息头,主要用于保存接口请求的header信息,规定接口响应数据的格式

Content-Type=application/json;charset=UTF-8

✅ Regular Expression Extractor

正则后置处理器,主要用于从接口的响应体内提取对应的token或cookie信息(需要掌握正则表达式基础语法)

✅ Debug PostProcessor

后置调试器,用于调试查看后置处理器生成的变量信息;本文主要用于查看后置处理器Regular Expression Extractor提取成功的token和cookie变量值

✅ Assertion

实现断言功能,从接口的响应体内提取指定的字段,赋值期望值,脚本运行时通过对比期望值和实际值是否一致,来验证接口请求是否成功。

✅ Listener

监听器,通俗点说就是测试报告,jmeter提供了多种测试报告格式,本文主要使用View Results Tree、Aggregate Report两种格式,第一种用于查看接口请求的详细日志信息,第二种用于查看接口请求的耗时等性能信息。

04 脚本正文

1、脚本结构

2、HTTP request示例-post请求

3、HTTP request示例-get请求

由于使用正则表达式匹配获取token,所以会匹配到多个数据,此时可在“调试器”内查看具体token在哪个变量上,引用时填入具体变量名称即可

上图可看到,子系统登录接口请求需要的token在变量“tokenlist_g1”上,故接口入参直接引用变量$ tokenlist_g1,如下图:

4、HTTP request(压测接口)

添加cookie管理器

发起请求时会自动获取cookie信息

接口请求配置与上面两个http请求一致,均需要包含域名、路径、请求方法、请求体

5、JSON Assertion

由于本文案例的接口请求响应数据都是json格式,所以使用json断言。

响应结果如下:

上图可知,通过判断响应结果的description字段值,来判断接口请求是否成功

对应的断言配置:

其他接口的断言也可按上述方法设置。

6、逻辑控制器

接口完整请求编辑好后,引入逻辑控制器来控制“登录模块”以及“需要进行压测的接口模块”

将登录相关接口,移动到“Once Only Controller”下,确保执行脚本时,该脚本仅运行一次

将需要进行压测的接口,移动到“Loop Controller”下,确保可以循环运行。

7、监听器

本文使用两种监听器存储测试报告

监听器要添加在线程组(Thread Group)上,才可监听所有请求的测试报告,如下图

05 脚本运行结果


资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走…

​这些资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

解决项目中的rsa加密解密算法的实际案例

...nbsp;如果java代码写完了,可以直接打成jar包文件直接放到Jmeter里调用  查看详情

你真的了解性能压测中的sla吗?

你真的了解性能压测中的SLA吗?作者简介:襄玲(花名),阿里巴巴技术专家,PTS研发,近期主导整理和推动云时代性能压测的思想和标准,云计算性能测试国标项目组成员,内部稳定性保障系统之预热系统负责人。本文是《Performan... 查看详情

jmeter分离登录事务的另一种方式

...把登录接口也一起压了吧,因此,就需要用到jmeter的逻辑控制器了。  逻辑控制器  那啥是逻辑控制器呢?  Jmeter官网对逻辑控制的解释是:LogicControllersdeterminetheorderinwhichSamplersareprocessed。  翻译一下:逻辑控制可以控... 查看详情

10_jmeter压测时jmeter报错socketclosed

参考技术A问题原因:在JMeter下,发送http请求时,一般都是默认选择了usekeepAlive(这个是什么?看后面资料),这个是连接协议,JMeter坑就在这里,默认勾选了这个(如果不勾选的话,也不会保存),但其配置JMeter.properties中的... 查看详情

压测中的精准测试探讨(代码片段)

压测是每个项目必不可少的一个测试领域,而压测范围的评估是压测中最重要的环节之一,当我们在做压测分析时,绕不开的有以下几个问题:在一次项目压测中,我们需要对哪些功能模块进行压测?对于... 查看详情

jmeter之ifcontroller深究一

...2.目的   下面进入正题:本次主题是与If逻辑控制器有关,相信有些同学对这个逻辑控制器使用非常熟练。那么这个逻辑控制器到底有什么问题呢?本期宝路就来分享下一次真实生产压测遇到的坑。伪脚本结构图:从... 查看详情

压测中tps上不去的几大原因及解决办法

压测中TPS上不去的原因:1、网络带宽在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请... 查看详情

jmeter接口进阶篇:你不知道的jmeter用法

...录接口也一起压了吧。因此,就需要用到jmeter的逻辑控制器了。逻辑 查看详情

jmeter压测时内存问题

...rmSize=64m-XX:MaxPermSize=128m :默认是64m,如果遇到,jmeter控制器没停掉,聚合报告数据也不动了,可以修改一下这里为:1024m--1024m。 查看详情

ugeek大咖说|顺丰科技:全链路压测中的可观测性实践

...架构高级工程师——李卓做客直播间,为我们讲解全链路压测中的可观测性实践。 查看详情

命令运行jmeter压测脚本

...我想进程杀掉了我可怎么看报告呢,忽然想起在linux运行jmeter就是没界面的,把运行的结果存到一个.jtl文件里回到Win系统下用Jmeter界面 查看详情

压测中的cpu指标分析

参考技术A压测中三个指标CPUUtilization(CPU利用率)、LoadAverage(负载平均值)和ContextSwitchRate(上下文切换率)CPUUtilization 好理解,就是CPU的利用率,75%以上就比较高了(也有说法是80%或者更高)。除了这个指标外,还要结合... 查看详情

jmeter之逻辑控制器

Jmeter逻辑控制器学习更新中线程组->添加->逻辑控制器->XX控制器1.仅一次控制器使用场景:线程数为1,登录1次,循环浏览N次。如果,登录账号参数化,线程数为M时,登录M个不同的账号,每个账号浏览N次。 2.循环控制... 查看详情

linux当jmeter压测时,jvm内存泄漏,端口不够问题,解决办法

参考技术A在Linux环境,使用jmeter压测会遇到很多问题,比如:配置不对,权限不足这些都是很好解决。但是遇到这几个问题:1.内存泄漏  2.端口不够遇到两个问题网上解决办法都很杂,没有一个清晰明了的解决办法,所... 查看详情

jmeter学习(二十六)逻辑控制器

JMeter中的LogicController用于为TestPlan中的节点添加逻辑控制器。JMeter中的LogicController分为两类:一类用来控制TestPlan执行过程中节点的逻辑执行顺序,如:LoopController、IfController等;另一类则与节点逻辑执行顺序无关,用于对TestPlan... 查看详情

JMeter:线程组中的循环计数和逻辑控制器中的循环控制器有啥区别

】JMeter:线程组中的循环计数和逻辑控制器中的循环控制器有啥区别【英文标题】:JMeter:WhatisdifferencebetweenLoopCountinThreadGroupandLoopControllerinLogicControllerJMeter:线程组中的循环计数和逻辑控制器中的循环控制器有什么区别【发布时... 查看详情

jmeter按比例分配api压测

先看【Jmeter】基础介绍-详细【Jmeter】Request1输出作为Request2输入-后置处理器继续聊提出的第二个问题,即  2.需要按比例分配API请求并发,以模拟真实的API压力场景做压测的时候,一般的需求都是多个API同时压,不然也看不出... 查看详情

jmeter:dashboardreport自动生成测试报告的巧用和避坑

官网地址查阅:http://jmeter.apache.org/usermanual/generating-dashboard.html最近在压测过程中使用 GeneratingReportDashboard生成测试报告,快捷又方便。第一章节:我来演示如何使用。1、首先根据官网的配置,需要在jmeter.properties配置如下几... 查看详情