#jmeter #performance-testing #jmeter-5.0 #jmeter-4.0
#jmeter #тестирование производительности #jmeter-5.0 #jmeter-4.0
Вопрос:
Я хочу задать вопрос о том, как выполнять мои сценарии нагрузочного тестирования. У меня есть несколько групп угроз, каждая из которых выполняет сценарий (запросы get, post, put) с разным количеством угроз в каждом сценарии. Выполнение каждого сценария всегда занимает X (неизвестно) времени в зависимости от количества запросов, которые у него есть. Что я хочу, так это запустить их все вместе и удерживать нагрузку (сохранять угрозы активными) в течение определенного периода времени.
Позвольте мне привести пример:
- Группа угроз 1 — v. пользователи 75
- Группа угроз 2 — v. пользователи 50
- Группа угроз 3 — v. пользователи 30
Я хочу выполнить все группы угроз вместе и сохранить загрузку в течение 30 минут. Проблема, с которой я сталкиваюсь, заключается в том, что для выполнения группы угроз 1 требуется всего 2 минуты, для группы угроз 2 требуется всего 3 минуты, а для группы угроз 3 требуется всего 1 минута. У меня не может быть бесконечной опции, поскольку у меня есть только определенное количество данных, которые я могу использовать. Для первого сценария у меня есть 75 пользователей (данные), которые, если они выполнят сценарий один раз, не смогут выполнить его снова, поэтому мне нужно еще 75 (данных), которых у меня нет.
Есть ли какой-либо способ сделать это? Возможно ли поддерживать активность угроз в каждой группе угроз в течение определенного периода времени? Или что-то, что будет выполнять запросы за определенный промежуток времени, который будет охватывать всю продолжительность? (30 минут)
Настройка параметров в группах угроз, как показано на рисунке ниже, когда каждый сценарий завершается, он отключает свои угрозы, поэтому у меня никогда не будет, скажем, пользователей 30 v для параллельной работы в течение определенного периода времени.
Приведенный ниже график показывает, что сценарий 1 (розовый) завершил свои угрозы быстрее, чем сценарий 2 (ссылка). Здесь настройки следующие:
- Угроз в каждом сценарии 5
- Увеличение на 10 секунд
- Длительность 90 секунд
Ответ №1:
Если я правильно понимаю, вы ограничены данными, и у вас есть одна точка данных для одного цикла на пользователя. Поэтому я попытаюсь управлять ускорением и установить его на 1800 и цикл = 1 для каждой группы потоков. Снимите флажок «указать время жизни потока». Jmeter будет запускать новый поток, например, для TG_1 каждые 1800/75 секунды. Весь тест будет выполняться более 1800 секунд для цикла для последнего потока. Если нужно проверить, подходит ли этот профиль загрузки для вашего приложения.
Комментарии:
1. Спасибо за ваш ответ. Как я понял, это неправильный способ, верно? Правильный способ — иметь больше данных и групп угроз цикла, пока не будет достигнута указанная продолжительность. Проблема в том, что даже при различном времени запуска некоторые угрозы завершатся раньше, поскольку им требуется меньше времени для завершения всех запросов, следовательно, некоторые из них завершатся раньше
2. Предположим, что у нас одинаковое количество пользователей в каждой группе, некоторые группы угроз завершатся раньше, чем другие, следовательно, у меня не будет согласованности. Похоже на последнюю картинку, которую я добавил.
3. да — но одинаковое увеличение в каждом TG потребует примерно одинакового времени для тестирования, поэтому в вашем случае это может быть обходным путем. Также помните, что jmeter будет использовать меньшее время для продолжительности теста, если у вас есть «указать время жизни потока», поэтому условие для остановки теста: если количество циклов не равно -1 или навсегда, продолжительность будет минимальной (продолжительность, количество циклов * продолжительность итерации) bz.apache.org/bugzilla/show_bug.cgi?id=62914
Ответ №2:
Насколько я понимаю ваш запрос, у вас есть данные, скажем, для 75 пользователей, данные не могут быть повторены. И вам нужно удерживать загрузку в течение 30 минут.
Простыми словами, я могу сказать, что вы не можете удерживать загрузку столько времени, если у вас нет больше данных, или вы можете повторить данные.
Если 75 пользователям требуется всего 1 минута или даже 5 минут, это означает, что вы не добавили время реакции человека. Чтобы добавить это, вы можете просто использовать таймеры. Что приведет к задержке выполнения sampler.
Ответ №3:
Если ваша первая группа потоков выполняет 75 запросов за 2 минуты, и вы хотите, чтобы она была выполнена за 30 минут, единственный способ добиться этого — сделать JMeter в 15 раз медленнее. JMeter предоставляет множество таймеров, и каждый из них позволяет вводить задержки между запросами в основном для имитации реального «времени на размышление» пользователя
75 запросов за 2 минуты — это примерно 37 запросов в минуту, и если вам нужно сделать это в 15 раз медленнее, вам нужно выполнять ~ 2,4 запроса в минуту.
Таким образом, вы можете добавить, например, Таймер постоянной пропускной способности в свою первую группу потоков и настроить его следующим образом:
таким образом, вы получите 72 запроса за 30 минут.
Аналогичным образом вы можете замедлить работу 2 оставшихся групп потоков
Ответ №4:
Попробуйте с плагином Ultimate Thread group
Используйте другую конечную группу потоков и измените потоки в соответствии с вашими требованиями, но оставьте другие параметры такими же, как показано ниже. Итак, ваши потоки будут отличаться, но другие условия, вероятно, останутся прежними. Например, начальная задержка, время запуска, задержка загрузки в течение секунды и завершение работы.
Вы можете использовать менеджер плагинов, чтобы загрузить набор jpgc@stardard для всех плагинов, предоставляемых jpgc. Затем вы получите возможность добавить конечную группу потоков jpgc из потоков (Пользователи) или из того же места, где мы добавляем обычную / standard threadgroup.