
WebDriver: запуск большого количества тестов одновременно
#1
Отправлено 04 сентября 2013 - 14:36
Хочу посоветоваться. Мне нужно создать автотест, обеспечивающий 100 одновременных обращений к системе с Web-интерфейсом. Каждое обращение идет под уникальным пользователем со своим логином и паролем. После логина эти пользователи должны выполнить одну и ту же операцию (она отличается незначительно, но это можно параметризировать).
В силу условий задачи, мне надо это сделать именно через Web UI. Варианты c API, модульными тестами исключены. Браузер возможен любой.
Я хочу это сделать на WebDriver, и автоматизация логина в систему и выполнения операции трудностей не вызывает. Я могу параметризовать логин/пароль/операцию и вызывать, скажем, Groovy-скрипт с теми или иными параметрами. Но мне непонятно, как организовать одновременный запуск 100 тестов. Можно ли это делать на одной машине? Не будут ли эти тесты мешать друг другу? Существует ли какое-то общепринятое и хорошо себя зарекомендовавшее решение для такого типа тестов?
Спасибо.
#2
Отправлено 04 сентября 2013 - 15:27
Если очень очень нужно через UI, то можно исполльзовать Seleniun Grid. Если у вас не стоит требование делать скриншот, то можно и кучу-кучу окон на 1й машине запускать
#3
Отправлено 04 сентября 2013 - 16:03
возможно я неправильно понял, но если у вас 1-2 теста через UI работают, то и остальные тоже должны, да? Можно сделать что-то типа Data Driven Testing и скормить тесту набор с правильными/неправильными параметрами - это сократит количество тестов.
Если очень очень нужно через UI, то можно исполльзовать Seleniun Grid. Если у вас не стоит требование делать скриншот, то можно и кучу-кучу окон на 1й машине запускать
Виктор, да, я написал выше, что нужно именно через UI, это не обсуждается. Правильные/неправильные параметры не нужны. Цель теста в создании 100 сессий одновременно. Это тоже не обсуждается. Про Selenium Grid читал, но там подразумеваются разные машины, а мне желательно на одной. Просто я не хотел изобретать велосипед и упираться в производительность машины какими-то неверными действиями и хотел понять, как обычно поступают в таких случаях.
Спасибо.
#4
Отправлено 04 сентября 2013 - 16:22
Прочитайте еще раз - нет никаких ограничений, хаб и нод вполне можно запустить на одной машине. Только вряд-ли получиться запустить 100 браузеров одновременно даже на сервером компеSelenium Grid читал, но там подразумеваются разные машины, а мне желательно на одной. Просто я не хотел изобретать велосипед и упираться в производительность машины какими-то неверными действиями и хотел понять, как обычно поступают в таких случаях.
Спасибо.
#5
Отправлено 05 сентября 2013 - 05:59
Обычно для этого используют, например, JMeter. Он как раз позволяет описать серию (параметризованных) запросов, задать количество потоков (100), паузы между ними, и фигачит 100 параллельных запросов на сервер. То, что доктор прописал.
Добрый день.
Хочу посоветоваться. Мне нужно создать автотест, обеспечивающий 100 одновременных обращений к системе с Web-интерфейсом. Каждое обращение идет под уникальным пользователем со своим логином и паролем. После логина эти пользователи должны выполнить одну и ту же операцию (она отличается незначительно, но это можно параметризировать).
В силу условий задачи, мне надо это сделать именно через Web UI. Варианты c API, модульными тестами исключены. Браузер возможен любой.
Я хочу это сделать на WebDriver, и автоматизация логина в систему и выполнения операции трудностей не вызывает. Я могу параметризовать логин/пароль/операцию и вызывать, скажем, Groovy-скрипт с теми или иными параметрами. Но мне непонятно, как организовать одновременный запуск 100 тестов. Можно ли это делать на одной машине? Не будут ли эти тесты мешать друг другу? Существует ли какое-то общепринятое и хорошо себя зарекомендовавшее решение для такого типа тестов?
Спасибо.
#6
Отправлено 05 сентября 2013 - 10:10
Для нагрузочного тестирования неудобно использовать Selenium. Открыть на одной машине сто браузеров нереально.
Обычно для этого используют, например, JMeter. Он как раз позволяет описать серию (параметризованных) запросов, задать количество потоков (100), паузы между ними, и фигачит 100 параллельных запросов на сервер. То, что доктор прописал.
Андрей, спасибо. Увы, нужно именно сто UI-сессий. Баг проявляется именно при таком количестве открытых UI-сессий и не проявляется при соизмеримом количестве API-запросов. Нужно залогиниться в систему через UI под разными пользователями и выполнить одну параметризованную операцию. Я не вижу, как это сделать с JMeter. При этом надо сказать, что опыта работы с JMeter у меня нет. Поэтому если вы скажете, что JMeter способен выполнить логин в UI (заполнить поля с именем пользователя и паролем, скажем, по ID элемента, затем нажать на кнопку, тоже по ID), то для меня это будет повод рассматривать JMeter в этом контексте.
Я готов отказаться от ста браузеров на одной машине и готов рассмотреть варианты распределенного запуска - либо через Selenium Grid, либо "на коленке", когда тесты выполняются на удаленных машинах с помощью psexec (Windows) или plink (Linux).
Спасибо.
#7
Отправлено 05 сентября 2013 - 11:40
JMeter - инструмент для нагрузочного тестирования. Он не работает с веб-интерфейсами в привычном для пользователя понимании: он не открывает браузер.Андрей, спасибо. Увы, нужно именно сто UI-сессий. Баг проявляется именно при таком количестве открытых UI-сессий и не проявляется при соизмеримом количестве API-запросов. Нужно залогиниться в систему через UI под разными пользователями и выполнить одну параметризованную операцию. Я не вижу, как это сделать с JMeter. При этом надо сказать, что опыта работы с JMeter у меня нет. Поэтому если вы скажете, что JMeter способен выполнить логин в UI (заполнить поля с именем пользователя и паролем, скажем, по ID элемента, затем нажать на кнопку, тоже по ID), то для меня это будет повод рассматривать JMeter в этом контексте.
Я готов отказаться от ста браузеров на одной машине и готов рассмотреть варианты распределенного запуска - либо через Selenium Grid, либо "на коленке", когда тесты выполняются на удаленных машинах с помощью psexec (Windows) или plink (Linux).
Спасибо.
Его работа происходит на уровне "запрос-ответ".
При открытии странички веб-приложения юзер делает HTTP-запрос на URL странички в браузере. JMeter делает этот запрос напрямую, без браузера.
Юзер заполняет поля "Логин" и "Пароль" и нажимает кнопочку "Вход" - JMeter посылает POST-запрос с параметрами «login="dyadya Vanya", password = "genantsvale"».
Как видите, действия почти одинаковые.
#8
Отправлено 05 сентября 2013 - 12:12
Так чего их рассматривать. Читаем - http://code.google.c...ium/wiki/Grid2. Поднимаем хаб-ноды. Запускаем тесты в наццать потоков.Я готов отказаться от ста браузеров на одной машине и готов рассмотреть варианты распределенного запуска - либо через Selenium Grid, либо "на коленке", когда тесты выполняются на удаленных машинах с помощью psexec (Windows) или plink (Linux).
Из собственного опыта: более-менее приличная работая станция (8Гб ОЗУ,Quadro Core) тянет 4-5 виртуалок Win7, в каждой по 3-4 браузера. Если XP цифру можно умножить на два.
#9
Отправлено 05 сентября 2013 - 12:57
JMeter - инструмент для нагрузочного тестирования. Он не работает с веб-интерфейсами в привычном для пользователя понимании: он не открывает браузер.
Его работа происходит на уровне "запрос-ответ".
При открытии странички веб-приложения юзер делает HTTP-запрос на URL странички в браузере. JMeter делает этот запрос напрямую, без браузера.
Юзер заполняет поля "Логин" и "Пароль" и нажимает кнопочку "Вход" - JMeter посылает POST-запрос с параметрами «login="dyadya Vanya", password = "genantsvale"».
Как видите, действия почти одинаковые.
Сергей, спасибо, интересно. Только мне потом надо еще на пару-тройку элементов кликнуть. И это действительно работа без браузера. У меня есть подобный инструмент, API к системе, но его недостаточно...
#10
Отправлено 05 сентября 2013 - 13:00
Так чего их рассматривать. Читаем - http://code.google.c...ium/wiki/Grid2. Поднимаем хаб-ноды. Запускаем тесты в наццать потоков.
Из собственного опыта: более-менее приличная работая станция (8Гб ОЗУ,Quadro Core) тянет 4-5 виртуалок Win7, в каждой по 3-4 браузера. Если XP цифру можно умножить на два.
vmaximv, спасибо. Правильно ли я понимаю, что Grid не подразумевает параметризацию? Я имею в виду возможность указывать разные параметры (в моем случае логин и пароль) при запуске на разных машинах?
#11
Отправлено 05 сентября 2013 - 13:17
Grid - есть просто пул доступных браузеров на нодах. Параметризацию и параллелизацию нужно реализовывать доступными вам средствами (тестовый фреймворк, скриптинг и т.д.).vmaximv, спасибо. Правильно ли я понимаю, что Grid не подразумевает параметризацию? Я имею в виду возможность указывать разные параметры (в моем случае логин и пароль) при запуске на разных машинах?
#12
Отправлено 05 сентября 2013 - 14:01
Grid - есть просто пул доступных браузеров на нодах. Параметризацию и параллелизацию нужно реализовывать доступными вам средствами (тестовый фреймворк, скриптинг и т.д.).
Vmaximv, спасибо. Правильно ли я понимаю, что тест мне надо будет запускать на хабе и при этом каким-то образом указывать, на какой ноде что именно я хочу запускать? К примеру, если я решу, что на каждой ноде я буду выполнять три теста, то мне нужно передать на каждую ноду по три пары юзер-пароль:
10.11.12.13 (node1), user1, password1
10.11.12.13 (node1), user2, password2
10.11.12.13 (node1), user3, password3
10.11.12.14 (node2), user4, password3
10.11.12.14 (node2), user5, password5
10.11.12.14 (node2), user6, password5
Все верно? Нет попадался ли вам материал с примером такой параметризации в таком духе: вот хаб, вот три ноды, вот параметры, которые будут передаваться на ноды, вот так я буду запускать тесты на хабе?
#13
Отправлено 05 сентября 2013 - 15:12
#14
Отправлено 05 сентября 2013 - 15:24
Да почитайте про Grid. Посмотрите примеры использования. Сейчас вы путаете теплое с мягким.
Я почитал все что нашел здесь. Я понимаю, как управлять количеством запускаемых браузеров (потоков) на нодах. Понимаю, как заюзать TestNG и указать требуемое количество потоков. Но не понимаю, как привязывать параметры к нодам. Наверное это и есть то, что вы имели в виду, говоря о том, что я путаю теплое с мягким. Что мне следует почитать на эту тему?
#15
Отправлено 05 сентября 2013 - 15:31
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных