Рандомизация нагрузочного теста: Как настроить 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 здесь, включая список доступных внутренних функций. Если встроенных функций недостаточно, вы даже можете создать свои собственные.

Другие вопросы по тегам