我们在应用程序中简单的性能测试流程。
- 我们登录
- 根据某些条件搜索
- 重复搜索不同的参数。
我们正在使用的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的覆盖?
任何帮助都感激不尽。
从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管理到组。
我认为,安德烈的回答也没有办法。 他引用每个请求都使用相同的Cookie,但根据JMeter的手册:
JMeter的每个线程都有自己的“cookie存储区”。
据我了解的问题,你希望每个线程共享相同的会话ID的Cookie。 所以,在我看来,你需要有两个线程组,并连续执行。 第一个线程组(即一次只执行一个线程)应该登录和会话cookie的值保存到一个全局参数(也许你需要使用JMeter的脚本功能)。 然后设置在第二线程组的cookie管理器该cookie。
希望帮助。
试着增加将加速时间。 我遇到同样的问题,即加速时间约为1秒,随后我把它提高到每线程3秒钟,它运行得很好。
试试这个:
打开存在的JMeter的bin文件夹中user.properties
编辑并添加以下行:
CookieManager.check.cookies=false
保存并运行该脚本。 我希望这将解决您的问题。
首先改变你的代码:
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());
}