Java ApacheJMeter中的会话/cookie管理
我们在应用程序中有一个简单的性能测试流程Java ApacheJMeter中的会话/cookie管理,java,session,cookies,jmeter,session-cookies,Java,Session,Cookies,Jmeter,Session Cookies,我们在应用程序中有一个简单的性能测试流程 我们登录 基于某些条件的搜索 重复搜索不同的参数 我们正在使用Jmeter进行性能测试。我们需要运行多个线程来以可伸缩的方式测试这一点 我们目前的安排方式是: -Test Plan - Thread Group - Cookie Manager - Login To application - Search on param 1 - Search on param 2 - results summa
-Test Plan
- Thread Group
- Cookie Manager
- Login To application
- Search on param 1
- Search on param 2
- results summary table
- Summary report
所以基本上,我们在计划级别上有摘要返回表和报告,而在线程组级别上有cookie管理器
当我运行一个线程时,它运行良好,完成得很好。当我将它扩展到多个线程时,一旦下一个线程启动,最后一个线程的会话就会失效。由于新生成的线程,这会导致所有已运行的线程失败
我通过观察得出了这个结果:
一,。若我运行多个线程,那个么在结果摘要树中只有最后一个线程得到了有效的响应
二,。如果我使用两个线程运行,爬升周期为10秒,这意味着每个线程都有时间完成自身,那么这两个线程都会成功运行 根据我对每个线程登录到应用程序的理解,由于cookie manager处于线程级别,将分别为每个线程维护会话id的值?但是,是什么导致线程之间的会话id值被覆盖
任何帮助都将不胜感激 从jmeter文档中复制: 最后一个元素是HTTP Cookie 经理Cookie管理器应该是 添加到所有web测试-否则 JMeter将忽略cookie通过添加 它在线程组级别,我们 确保所有HTTP请求都将 共享相同的cookies。 来自中的“4.2.2逻辑控制器”章节
编辑:我想您应该使用Cookie Manager将请求分组。尝试增加启动时间。我遇到了同样的问题,爬升时间约为1秒,然后我将它增加到每个线程3秒,运行正常 我认为安德烈的回答没有帮助。他引用说,每个请求将使用相同的cookies,但根据jmeter手册: 每个JMeter线程都有自己的“cookie存储区” 据我所知,您希望每个线程共享相同的会话ID cookie。所以在我看来,您需要有两个线程组并连续执行它们。第一个线程组(只有一个线程只执行一次)应该登录并将会话cookie值保存到全局参数(可能需要使用jmeter的脚本功能)。 然后在第二个线程组的cookie管理器中设置该cookie 希望能有所帮助。试试这个: 打开JMeter的bin文件夹中的user.properties 编辑它并添加以下行:
CookieManager.check.cookies=false
保存它并运行脚本。我希望它能解决您的问题。首先将您的代码更改为:
jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_
接下来,在与java采样器相同的线程组中添加HTTP cookie管理器
然后在java采样器中添加:
JMeterVariables jmv = JMeterContextService.getContext().getVariables();
Iterator<Map.Entry<String,Object>> it = jmv.getIterator();
while(it.hasNext()){
Map.Entry<String,Object> v = it.next();
System.out.println("name: " + v.getKey() + " value: " + v.getValue());
}
JMeterVariables jmv=JMeterContextService.getContext().getVariables();
迭代器it=jmv.getIterator();
while(it.hasNext()){
Map.Entry v=it.next();
System.out.println(“名称:+v.getKey()+”值:+v.getValue());
}
+1到这个。是否可以通过同一测试计划的不同线程组“传播”cookie?不可以。JMeter线程用于表示独立用户,因此cookie和变量是线程的本地变量。根据