前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用JMeter如何实现并发压测下的只登录一次

使用JMeter如何实现并发压测下的只登录一次

作者头像
jmeter技术研究
发布2020-02-11 16:43:41
2.6K0
发布2020-02-11 16:43:41
举报

机会只留给那些有准备的人

改变能改变的,接受不能改变的,就是进步

  • 性能测试过程中经常有需要对案例进行大并发压测,但是只需要登录一次即可,jmeter自带了仅一次控制器,但此控制器只是针对单线程才有意义,多线程下,设置多少线程数还是会执行多少次
  • 1000并发用户下,系统还是会执行1000次登录,有10次登录失败,就会影响实际压测案例的结果,本文就介绍如何使用全局变量实现真正意义上的只执行一次登录

一、请求分析

代码语言:javascript
复制
1. 本次需要对系统的一个查询操作做性能测试,首先使用谷歌浏览器登录系统,按F12进入调试页面,然后访问查询页面,下图为查询接口地址
代码语言:javascript
复制
2. 下图为该接口的信息头,由图可知,需要先登录获取Cookie,并且在查询请求信息头申明该Cookie即可实现查询操作

二、脚本开发

代码语言:javascript
复制
1. 本次需要先开发好登录脚本,由下图可知,MOD_AUTH_CAS变量会在登录1请求中的子请求(重定向)返回
代码语言:javascript
复制
2. 只需要在该请求下添加一个正则表达式提取器即可,如下图所示
代码语言:javascript
复制
3. MOD_AUTH_CAS变量提取成功,我们只需要在该请求后面使用beanshell申明该变量为全局变量即可,这样其它线程也能调用该变量
代码语言:javascript
复制
4. 在查询线程组下,申明信息头,并且定义cookie字段,值使用MOD_AUTH_CAS=${__P(Th_MOD_AUTH_CAS,)}进行调用,如下图所示

三、多线程验证

代码语言:javascript
复制
1. 首先设置线程组为2线程2循环,看是否能正常执行
代码语言:javascript
复制
2. 设置测试计划,测试计划勾选独立运行每个线程组,并且把登录线程组放置在最前面,这样系统就会先执行登录,在执行其它线程组
代码语言:javascript
复制
3. 执行脚本,如下图所示,系统只登录了一次,正常进行了4次查询,4次查询是2线程执行了2次循环
代码语言:javascript
复制
4. 本文介绍了登录使用Cookie鉴权如何实现一次登录,多并发下执行压测,如果系统调用了token,规则一样,只需要把token全局化即可实现

如果文章对你有帮助,可以扫描下面的二维码进行关注,欢迎转发、本人会不定期发表和测试相关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制,有纰漏的也请大家纠正

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 jmeter相关技术交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档