当前位置: 首页 > news >正文

jmeter多用户并发登录教程

有时候为了模拟更真实的场景,在项目中需要多用户登录操作,大致参考如下

jmx脚本:百度网盘链接
提取码:0000

一: 单用户登录

先使用1个用户登录(先把1个请求调试通过)

  1. 发送一个登录请求,线程数:1,时间:1,循环次数:1
    在这里插入图片描述
  2. 启动后查看返回结果,查看返回登录成功后 OK
    (为什么请求1次返回3个结果呢,这个项目对登录接口做了重定向2次,既先使用get自动请求网站1次获取sessionid)
    再通过HTTP Cookie管理器自动获取到sessionid进行登录

在这里插入图片描述

  1. 设置多个线程数进行登录(线程组设置-线程数:10,时间:1,循环次数:1),给登录加一个断言
    在这里插入图片描述
    在这里插入图片描述

  2. 执行后查看结果,有的请求会被挤下线,被挤出来的没有对服务器造成任何压力
    在这里插入图片描述
    这里涉及到多点登录限制------浅谈一下多点登录和单点登录的区别
    多点登录:同一账号可以在不同终端同时登录,同时收发信息
    多点登录原则:多点登录限制(禁止用户多点在线):一个端同一个账号只能登录一个实例,例如一个账号在网站端登录后,后一个人使用这个账号在网站端登录,前一个人会被挤下去并会收到通知“你已在别处登录…”
    单点登录:指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。简而言之,多个系统,统一登陆。
    最简单的单点登录实现方式,用cookie作为媒介存放用户凭证。 用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户。
    依豆瓣网站电影Top250为例:https://movie.douban.com/top250?start=
    豆瓣旗下有:读书、音乐、同城、阅读、FM等等
    简单理解:就是如果登录了豆瓣,如果还需要访问子应用,就不需要再次使用账号了,可以直接访问

优化,单用户请求过多会被挤下线,而且和想要的测试也不一样,帐号提前在数据库创建,然后使用CSV元件引如

二、多用户登录实现1
  1. 在当前线程组下添加CSV数据文件设置,文件名:你准备的txt帐号和密码文件,文件编码UTF-8,其他可默认
    在这里插入图片描述
  2. 登录接口引入CSV变量,然后线程组内的设置不变,继续执行
    在这里插入图片描述
  3. 查看多用户请求结果,从断言上看没有报错,就是全部10个帐号都登录成功了
    在这里插入图片描述
三、多用户登录实现2
  1. 既然项目是先获取sessionid的,那么先请求一次,添加1个登录前请求(主要是获取返回的sessionid)
    在这里插入图片描述

  2. 给登录前接口加一个正则表达式(主要是来提取sessionid)
    在这里插入图片描述

  3. 给登录接口添加一个HTTP信息头管理器,添加一个cookie参数
    在这里插入图片描述

  4. 给登录接口添加断言,和上面一致
    在这里插入图片描述

  5. 先跑1个请求,线程组和上面设置一样,返回登录成功的数据
    在这里插入图片描述
    跑多个账户登录

  6. 添加一个CSV,设置和上面的一致
    在这里插入图片描述

  7. 更改线程组:线程数10,时间1s,循环1
    在这里插入图片描述

  8. 设置登录参数变量
    在这里插入图片描述

  9. 启动查看结果,从01帐号到10帐号登录成功
    在这里插入图片描述

扩展: 模拟真实场景(1个用户可以搜索N次),增加一个搜索请求
  1. 添加一个仅1次控制器,把登录前和登录接口加入到仅一次控制器
    在这里插入图片描述
  2. 线程组设置: 线程数:2 时间:1s 循环:永远, 持续时间:2s
    在这里插入图片描述
  3. 搜索请求添加一个信息头管理器
    在这里插入图片描述
  4. 发送请求,查看结果(除了登录前和登录接口请求3次意外,其他的都是搜索请求,有可能是用户1或用户2或用户3的搜索了很多次)
    在这里插入图片描述

相关文章:

  • LPDDR6带宽预计将翻倍增长:应对低功耗挑战与AI时代能源需求激增
  • 第四十七天 | 198.打家劫舍 213.打家劫舍|| 337.打家劫舍|||
  • 列表推导式(解析式)python
  • c++(一)
  • ozon卖家精灵,ozon卖家怎么使用
  • 动态规划part03 Day43
  • 西湖大学提出AIGC检测框架,精准识别AI撰写的文稿
  • 【图像处理与机器视觉】图像处理概述与像素
  • 《TCP/IP网络编程》(第十二章)I/O复用(2)
  • 如何找出真正的交易信号?Anzo Capital昂首资本总结7个
  • Vue3实战笔记(51)—Vue 3封装带均线的k线图
  • 微信小程序预览图片和H5使用canvas实现图片+蒙层+文字
  • 2019美亚
  • 【面试】谈谈常见的Java虚拟机有哪些
  • JavaScript-JavaWeb
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【译】理解JavaScript:new 关键字
  • create-react-app项目添加less配置
  • ECMAScript入门(七)--Module语法
  • IDEA常用插件整理
  • Java IO学习笔记一
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Netty源码解析1-Buffer
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python打包系统简单入门
  • quasar-framework cnodejs社区
  • TypeScript迭代器
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • VuePress 静态网站生成
  • 阿里云购买磁盘后挂载
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 编写高质量JavaScript代码之并发
  • 成为一名优秀的Developer的书单
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 深度解析利用ES6进行Promise封装总结
  • 智能合约Solidity教程-事件和日志(一)
  • 1.Ext JS 建立web开发工程
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (zhuan) 一些RL的文献(及笔记)
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)Java对象在Hibernate持久化层的状态
  • (区间dp) (经典例题) 石子合并
  • (转)c++ std::pair 与 std::make
  • (转载)OpenStack Hacker养成指南
  • .Mobi域名介绍
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性