有时候为了模拟更真实的场景,在项目中需要多用户登录操作,大致参考如下
jmx脚本:百度网盘链接
提取码:0000
一: 单用户登录
先使用1个用户登录(先把1个请求调试通过)
- 发送一个登录请求,线程数:1,时间:1,循环次数:1
- 启动后查看返回结果,查看返回登录成功后 OK
(为什么请求1次返回3个结果呢,这个项目对登录接口做了重定向2次,既先使用get自动请求网站1次获取sessionid)
再通过HTTP Cookie管理器自动获取到sessionid进行登录
-
设置多个线程数进行登录(线程组设置-线程数:10,时间:1,循环次数:1),给登录加一个断言
-
执行后查看结果,有的请求会被挤下线,被挤出来的没有对服务器造成任何压力
这里涉及到多点登录限制------浅谈一下多点登录和单点登录的区别
多点登录:同一账号可以在不同终端同时登录,同时收发信息
多点登录原则:多点登录限制(禁止用户多点在线):一个端同一个账号只能登录一个实例,例如一个账号在网站端登录后,后一个人使用这个账号在网站端登录,前一个人会被挤下去并会收到通知“你已在别处登录…”
单点登录:指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。简而言之,多个系统,统一登陆。
最简单的单点登录实现方式,用cookie作为媒介存放用户凭证。 用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户。
依豆瓣网站电影Top250为例:https://movie.douban.com/top250?start=
豆瓣旗下有:读书、音乐、同城、阅读、FM等等
简单理解:就是如果登录了豆瓣,如果还需要访问子应用,就不需要再次使用账号了,可以直接访问
优化,单用户请求过多会被挤下线,而且和想要的测试也不一样,帐号提前在数据库创建,然后使用CSV元件引如
二、多用户登录实现1
- 在当前线程组下添加CSV数据文件设置,文件名:你准备的txt帐号和密码文件,文件编码UTF-8,其他可默认
- 登录接口引入CSV变量,然后线程组内的设置不变,继续执行
- 查看多用户请求结果,从断言上看没有报错,就是全部10个帐号都登录成功了
三、多用户登录实现2
-
既然项目是先获取sessionid的,那么先请求一次,添加1个登录前请求(主要是获取返回的sessionid)
-
给登录前接口加一个正则表达式(主要是来提取sessionid)
-
给登录接口添加一个HTTP信息头管理器,添加一个cookie参数
-
给登录接口添加断言,和上面一致
-
先跑1个请求,线程组和上面设置一样,返回登录成功的数据
跑多个账户登录 -
添加一个CSV,设置和上面的一致
-
更改线程组:线程数10,时间1s,循环1
-
设置登录参数变量
-
启动查看结果,从01帐号到10帐号登录成功
扩展: 模拟真实场景(1个用户可以搜索N次),增加一个搜索请求
- 添加一个仅1次控制器,把登录前和登录接口加入到仅一次控制器
- 线程组设置: 线程数:2 时间:1s 循环:永远, 持续时间:2s
- 搜索请求添加一个信息头管理器
- 发送请求,查看结果(除了登录前和登录接口请求3次意外,其他的都是搜索请求,有可能是用户1或用户2或用户3的搜索了很多次)