Селен с BrowserMob.com - PullRequest
       38

Селен с BrowserMob.com

1 голос
/ 30 июля 2010

Я работаю с Selenium для создания тестов балансировки нагрузки на веб-сервере. На сайте есть имя пользователя / пароль, и для работы с ним у меня есть CSV-файл, заполненный комбинациями паролей имени пользователя.

Проблема в том, что я использую случайную функцию в Javascript, чтобы выбрать строку из файла CSV и заполнить функциональность входа в систему или детали регистрации.

var csv = browserMob.getCSV("pickStickEmails.csv");
var row = csv.random();
var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

Это, очевидно, вызывает проблемы при регистрации, если одна и та же запись выбирается дважды во время запланированного запуска. Очевидно, что в случае входа в систему, если запись не выбрана при регистрации, а затем выбрана в тесте, для которого требуется существующая учетная запись, тест не пройден из-за его отсутствия.

У меня вопрос: можно ли каким-то образом заставить browserMob перебирать записи по одной? Очевидно, что когда browserMob начинает нагрузочное тестирование, оно увеличивается, скажем, 10 пользователей, использующих веб-сайт одновременно, каждый из которых выполняет сценарий, который я предполагаю?

Я написал тест, используя Selenium-RC на C # с NUnit, прочитал файл csv в List и затем повторил список. Очевидно, что это запускает каждого пользователя за другим и не имитирует одновременное присутствие нескольких пользователей на сайте.

Любой совет по этому вопросу будет принята с благодарностью.

Спасибо

Jon

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Для обеспечения уникальной параметризации вам нужно позвонить browserMob.getUserNum(), так как он получит номер пользователя для того узла, который обрабатывает ваш тест.Вы можете увидеть это в их справке .Я обновил ваш код так, как я думаю, он должен выглядеть.Должен означает, что я не проверял это:)

var csv = browserMob.getCSV("pickStickEmails.csv");
var row = browserMob.getUserNum();
var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);
0 голосов
/ 04 августа 2010

Я думаю, что это может быть способ получить уникальную запись для каждого пользователя во время нагрузочного теста:

var csv = browserMob.getCSV("pickStickEmails.csv");

var rowNumbers = new Array();
for(i = 0; i <= csv.size(); i++)
{
  rowNumbers.push(i);
}

var uniqueRowNumber = rowNumbers[browserMob.getUserNum()];
var row = csv.get(uniqueRowNumber);

var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

Он в основном создает массив чисел, которые действуют как номера строк для файла CSV.Затем он просто использует функцию get () в CsvTable вместо случайного, используя уникальный номер, выбранный из вашего предложения.

Спасибо за руководство!

...