Управление сеансами / файлами cookie в Apache JMeter
у нас есть простой тест производительности в приложении.
- мы входа
- поиск на основе некоторых критериев
- повторите поиск различных параметров.
мы используем 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 manager находится на уровне потока, значения будут поддерживаться для идентификатора сеанса для каждого потока соответственно? Но что вызывает переопределение значения идентификатора сеанса между потоками?
любая помощь будет ценится.
5 ответов
скопировано из документации jmeter:
последним элементом является http Cookie Менеджер. Менеджер файлов Cookie должен быть добавлено во все веб-тесты-в противном случае JMeter будет игнорировать cookies. путем добавления это на уровне группы потоков, мы убедитесь, что все HTTP-запросы поделитесь теми же cookies.
из главы "4.2.2 логические контроллеры" в http://jmeter.apache.org/usermanual/test_plan.html.
редактировать: Я думаю, вы должны использовать http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controller группировать ваши запросы вместе с Cookie Manager.
Я думаю, что ответ Андрея не может помочь. Он цитирует, что каждый запрос будет использовать те же куки, но в соответствии с руководством jmeter:
каждый поток JMeter имеет свою собственную "область хранения cookie".
насколько я понимаю вопрос, вы хотите, чтобы каждый поток разделял один и тот же идентификатор сеанса cookie. Поэтому мне кажется, что вам нужно иметь две группы потоков и выполнять их последовательно. Первая группа потоков (с одним потоком, который выполняется только один раз) должна войдите в систему и сохраните значение cookie сеанса в глобальный параметр (возможно, вам нужно использовать возможности сценариев jmeter). Затем установите этот файл cookie в диспетчере файлов cookie второй группы потоков.
надеюсь, это поможет.
попробуйте увеличить время нарастания. Я столкнулся с той же проблемой, где время нарастания было около 1 секунды, затем я увеличил его до 3 секунд на поток, и он работал нормально.
попробуйте это:
открыть пользователю.свойства, присутствующие в папке bin JMeter
редактировать его и добавьте следующую строку:
CookieManager.check.cookies=false
сохраните его и запустите скрипт. Надеюсь, это решит вашу проблему.
сначала измените код на:
jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_
затем добавьте http cookie manager в ту же группу потоков, что и ваш Java sampler.
затем в вашем Java sampler добавьте:
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());
}