会话/ cookie管理中的Apache JMeter的(Session/cookie manage

2019-07-05 09:45发布

我们在应用程序中简单的性能测试流程。

  1. 我们登录
  2. 根据某些条件搜索
  3. 重复搜索不同的参数。

我们正在使用的JMeter做性能测试。 我们需要运行在一个可扩展的方式来测试这个多线程。

目前,我们有这种安排的方式是:

-Test Plan
  - Thread Group
      - Cookie Manager
      - Login To application
      - Search on param 1
      - Search on param 2
  - results summary table
  - Summary report

所以基本上我们有摘要返回表,并同时cookie管理器出现在线程组级别的报告出现在计划水平。

当我运行一个线程运行良好,并完成好。 当我把它扩展到多个线程,只要一个线程揭开序幕,最后线程会话无效。 这将导致所有由于新产生的线程已经运行的线程失败。

我达到了这个结果与观察:
1.结果总结树如果我运行多个线程,只有最后一个线程已经得到了有效的回应
2.如果我运行2个线程与斜坡上升期间为10秒,这意味着每个线程的时间来完成自身,然后将它们的两个成功运行。

按我的理解每个线程登录的的申请与自cookie管理器是在线程级别,该值将维持会话ID分别为每个线程? 但是,什么是造成价值线程之间的会话ID的覆盖?

任何帮助都感激不尽。

Answer 1:

从JMeter的文档复制:

最后一个元素是HTTP Cookie管理器。 cookie管理应该被添加到所有web测试 - 否则JMeter会忽略Cookie。 通过在线程组级别添加它,我们确保所有HTTP请求将共享相同的cookie。

在第二章“4.2.2逻辑控制器”中http://jmeter.apache.org/usermanual/test_plan.html 。

编辑 :我想你应该使用http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controller您的请求连同Cookie管理到组。



Answer 2:

我认为,安德烈的回答也没有办法。 他引用每个请求都使用相同的Cookie,但根据JMeter的手册:

JMeter的每个线程都有自己的“cookie存储区”。

据我了解的问题,你希望每个线程共享相同的会话ID的Cookie。 所以,在我看来,你需要有两个线程组,并连续执行。 第一个线程组(即一次只执行一个线程)应该登录和会话cookie的值保存到一个全局参数(也许你需要使用JMeter的脚本功能)。 然后设置在第二线程组的cookie管理器该cookie。

希望帮助。



Answer 3:

试着增加将加速时间。 我遇到同样的问题,即加速时间约为1秒,随后我把它提高到每线程3秒钟,它运行得很好。



Answer 4:

试试这个:

打开存在的JMeter的bin文件夹中user.properties

编辑并添加以下行:

CookieManager.check.cookies=false

保存并运行该脚本。 我希望这将解决您的问题。



Answer 5:

首先改变你的代码:

jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_

接下来,在同一个线程组中添加一个HTTP cookie管理器为您的Java采样。

然后,在你的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());
}


文章来源: Session/cookie management in Apache JMeter