Рандомизация нагрузочного теста: Как настроить WCAT для использования разных сценариев для каждого виртуального клиента?
Я хотел бы запустить нагрузочное тестирование одного из действий POST в моем веб-приложении. Проблема заключается в том, что действие может быть выполнено только в том случае, если оно получает уникальный адрес электронной почты в данных POST. Я сгенерировал скрипт wcat с несколькими тысячами запросов, каждый из которых имеет уникальный адрес электронной почты, например:
transaction
{
id = "1";
weight = 1;
request
{
verb = POST; postdata = "Email=test546546546546%40loadtest.com&...";
setheader { name="Content-Length"; value="...";
}
// more requests like that
}
Мой файл настроек UBR выглядит так:
settings
{
counters
{
interval = 10;
counter = "Processor(_Total)\\% Processor Time";
counter = "Processor(_Total)\\% Privileged Time";
counter = "Processor(_Total)\\% User Time";
counter = "Processor(_Total)\\Interrupts/sec";
}
clientfile = "<above-wcat-script>";
server = "<host name>";
clients = 3;
virtualclients = 100;
}
Когда я запускаю тест, 3x100 = 300 клиентов начинают отправлять запросы, но они делают это в том же порядке, поэтому первый запрос от первого клиента обрабатывается, а затем следующие 299 запросов от других клиентов больше не являются уникальными. Затем обрабатывается второй запрос от некоторого клиента, и 299 идентичных запросов от других клиентов не являются уникальными. Мне нужен способ рандомизировать запросы или выполнять их в другом порядке или настраивать отдельные сценарии сценариев для каждого виртуального клиента, чтобы каждый запрос содержал уникальный адрес электронной почты. Возможно ли это сделать с помощью WCAT?
Или, может быть, есть какой-то другой инструмент, который может сделать такой тест?
1 ответ
Рассматривали ли вы использование rand(x,y)
Внутренняя функция WCAT для добавления случайного целого числа к адресу электронной почты? Таким образом, вы могли бы иметь одну транзакцию с одним запросом, который использует случайный адрес электронной почты. Таким образом, вместо того, чтобы вручную создавать (скажем) 1000 запросов с уникальными адресами электронной почты, вы можете использовать одну случайную транзакцию 1000 раз.
Ваша новая рандомизированная транзакция может выглядеть примерно так:
transaction
{
id = "1";
weight = 1;
request
{
verb = POST;
postdata = "Email=" + rand("100000", "1000000") + "@loadtest.com&...";
setheader { name="Content-Length"; value="...";
}
}
При использовании rand(x,y)
недостаточно случайным, тогда вы можете поэкспериментировать с использованием дополнительных функций, чтобы сделать данные более случайными. Возможно, что-то вроде этого:
postdata = "Email=" + rand("100000", "1000000") + "@loadtest" + clientindex() + vclientindex() + ".com&...";
Вы можете найти документацию WCAT 6.3 здесь, включая список доступных внутренних функций. Если встроенных функций недостаточно, вы даже можете создать свои собственные.