性能测试工具 问一下有人试过 Jmeter 共享多个 session 值吗

Nateriverrrr · 2020年04月29日 · 最后由 jacksboy 回复于 2020年05月01日 · 1662 次阅读

大致就是需要跨线程组传递多个 session,想要用多个登录的 session 值来进行其他操作来更加符合实际多个用户操作的场景
跨线程组传递 session 已完成,参见的https://www.cnblogs.com/weizhideweilai/p/10447353.html
但是在参数化登录用户传递多个 session 遇到了问题
使用了两个线程组,线程组 1 进行登录并将 session 传递给线程组 2,线程组 2 使用线程组 1 的 session 来进行操作,为了更加模拟实际场景,在线程组 1 中将用户名和密码进行了参数化,并且线程组 1 的线程数也进行了改变,线程数改为了参数化的数据的数量
实际运行的时候发现线程组 2 的请求中的 session 都是一样的,线程组 1 并没有将多个 session 传到线程组 2,只传递了最后一 i 个登陆账号的 session。

共收到 4 条回复 时间 点赞

你的描述操作并不清楚,不清楚你的操作方式是否对.引用的文章只是针对的单个请求 session 跨线程.
如果你要引用多个 session 跨线程:
1 不知你是否了解几个概念,什么是全局变量 (只有变量是全局变量的时候才可能跨线程).什么是迭代 (跑完多个线程组一次后才叫一次迭代)
2 你要验证你的操作对不对 (1 屏蔽下面调用的线程组,引用 session 的线程组上添加 debug 取样器,设置循环次数,开启 jmeter 全局变量选项。然后再在结果树里查看全局变量你定义的变量是不是取到了多个值

2) 确保单个线程取到了多个 session 的情况下再开启下面调用 sesion 的线程组,迭代多次,看多次的结果

3 jmeter 肯定支持跨线程传多个 session,全局变量都可以跨线程传多个值,为什么 sesion 不能传,一样的意思.再不确定自己对 jmeter 足够了解,操作方法绝对正确的情况下,先自己试验下,有疑问再提出来是不是好的多.

jmeter 自己带一个 http cookie manager 是会自动存储 cookie 值,你跑多次都会存在一个变量里,这个变量也是可以转成全局变量从而跨线程的。所以问题的焦点是再于你存的全局变量是不是存了多个值

jacksboy 回复

如果用 cookie 管理器变量是不是全局变量啊,如果不是全局变量是不是也要在 beanshell 或者 jsr223 中编写 script 将将变量用我引用的帖子里的方法把变量转换成全局变量呢。如果那样的话和正则提取然后用引用帖子方法传参没什么区别的感觉
我知道焦点是是否存了多个值,但是经过我的试验好像是跨线程组的时候只会传递最后一个值

1 首先我不知道你操作是否对,是否理解你的需求,一个用户永远只可能有一个 session,不管你怎么跨线程,始终都是一个账号.
2 所以你要保证跨线程,多个用户用到的都是对应第一个线程对应的 session,不然 session 就会串
3 你要测试多线程,那就是第一步你存了多个 session,后面的线程引用这个存了多个 session 的变量
4 哪怕你真的 httpcookiemanager 不能用 (这点待确认,我记得是可以的),你用 csv 参数存 session 也可以啊,没有谁规定你一定要用 cookiemanager 把,一根筋想到底没啥好处

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册