Перейти к содержимому

Фотография

WebDriver: запуск большого количества тестов одновременно


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 04 сентября 2013 - 14:36

Добрый день.

Хочу посоветоваться. Мне нужно создать автотест, обеспечивающий 100 одновременных обращений к системе с Web-интерфейсом. Каждое обращение идет под уникальным пользователем со своим логином и паролем. После логина эти пользователи должны выполнить одну и ту же операцию (она отличается незначительно, но это можно параметризировать).

В силу условий задачи, мне надо это сделать именно через Web UI. Варианты c API, модульными тестами исключены. Браузер возможен любой.

Я хочу это сделать на WebDriver, и автоматизация логина в систему и выполнения операции трудностей не вызывает. Я могу параметризовать логин/пароль/операцию и вызывать, скажем, Groovy-скрипт с теми или иными параметрами. Но мне непонятно, как организовать одновременный запуск 100 тестов. Можно ли это делать на одной машине? Не будут ли эти тесты мешать друг другу? Существует ли какое-то общепринятое и хорошо себя зарекомендовавшее решение для такого типа тестов?

Спасибо.
  • 0

#2 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 04 сентября 2013 - 15:27

возможно я неправильно понял, но если у вас 1-2 теста через UI работают, то и остальные тоже должны, да? Можно сделать что-то типа Data Driven Testing и скормить тесту набор с правильными/неправильными параметрами - это сократит количество тестов.
Если очень очень нужно через UI, то можно исполльзовать Seleniun Grid. Если у вас не стоит требование делать скриншот, то можно и кучу-кучу окон на 1й машине запускать
  • 1

#3 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 04 сентября 2013 - 16:03

возможно я неправильно понял, но если у вас 1-2 теста через UI работают, то и остальные тоже должны, да? Можно сделать что-то типа Data Driven Testing и скормить тесту набор с правильными/неправильными параметрами - это сократит количество тестов.
Если очень очень нужно через UI, то можно исполльзовать Seleniun Grid. Если у вас не стоит требование делать скриншот, то можно и кучу-кучу окон на 1й машине запускать


Виктор, да, я написал выше, что нужно именно через UI, это не обсуждается. Правильные/неправильные параметры не нужны. Цель теста в создании 100 сессий одновременно. Это тоже не обсуждается. Про Selenium Grid читал, но там подразумеваются разные машины, а мне желательно на одной. Просто я не хотел изобретать велосипед и упираться в производительность машины какими-то неверными действиями и хотел понять, как обычно поступают в таких случаях.

Спасибо.
  • 0

#4 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 04 сентября 2013 - 16:22

Selenium Grid читал, но там подразумеваются разные машины, а мне желательно на одной. Просто я не хотел изобретать велосипед и упираться в производительность машины какими-то неверными действиями и хотел понять, как обычно поступают в таких случаях.

Спасибо.

Прочитайте еще раз - нет никаких ограничений, хаб и нод вполне можно запустить на одной машине. Только вряд-ли получиться запустить 100 браузеров одновременно даже на сервером компе
  • 1

#5 asolntsev

asolntsev

    Новый участник

  • Members
  • Pip
  • 64 сообщений
  • ФИО:Андрей Солнцев
  • Город:Таллинн

Отправлено 05 сентября 2013 - 05:59

Для нагрузочного тестирования неудобно использовать Selenium. Открыть на одной машине сто браузеров нереально.
Обычно для этого используют, например, JMeter. Он как раз позволяет описать серию (параметризованных) запросов, задать количество потоков (100), паузы между ними, и фигачит 100 параллельных запросов на сервер. То, что доктор прописал.

Добрый день.

Хочу посоветоваться. Мне нужно создать автотест, обеспечивающий 100 одновременных обращений к системе с Web-интерфейсом. Каждое обращение идет под уникальным пользователем со своим логином и паролем. После логина эти пользователи должны выполнить одну и ту же операцию (она отличается незначительно, но это можно параметризировать).

В силу условий задачи, мне надо это сделать именно через Web UI. Варианты c API, модульными тестами исключены. Браузер возможен любой.

Я хочу это сделать на WebDriver, и автоматизация логина в систему и выполнения операции трудностей не вызывает. Я могу параметризовать логин/пароль/операцию и вызывать, скажем, Groovy-скрипт с теми или иными параметрами. Но мне непонятно, как организовать одновременный запуск 100 тестов. Можно ли это делать на одной машине? Не будут ли эти тесты мешать друг другу? Существует ли какое-то общепринятое и хорошо себя зарекомендовавшее решение для такого типа тестов?

Спасибо.


  • 1

#6 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 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).

Спасибо.
  • 0

#7 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 05 сентября 2013 - 11:40

Андрей, спасибо. Увы, нужно именно сто UI-сессий. Баг проявляется именно при таком количестве открытых UI-сессий и не проявляется при соизмеримом количестве API-запросов. Нужно залогиниться в систему через UI под разными пользователями и выполнить одну параметризованную операцию. Я не вижу, как это сделать с JMeter. При этом надо сказать, что опыта работы с JMeter у меня нет. Поэтому если вы скажете, что JMeter способен выполнить логин в UI (заполнить поля с именем пользователя и паролем, скажем, по ID элемента, затем нажать на кнопку, тоже по ID), то для меня это будет повод рассматривать JMeter в этом контексте.

Я готов отказаться от ста браузеров на одной машине и готов рассмотреть варианты распределенного запуска - либо через Selenium Grid, либо "на коленке", когда тесты выполняются на удаленных машинах с помощью psexec (Windows) или plink (Linux).

Спасибо.

JMeter - инструмент для нагрузочного тестирования. Он не работает с веб-интерфейсами в привычном для пользователя понимании: он не открывает браузер.
Его работа происходит на уровне "запрос-ответ".
При открытии странички веб-приложения юзер делает HTTP-запрос на URL странички в браузере. JMeter делает этот запрос напрямую, без браузера.
Юзер заполняет поля "Логин" и "Пароль" и нажимает кнопочку "Вход" - JMeter посылает POST-запрос с параметрами «login="dyadya Vanya", password = "genantsvale"».
Как видите, действия почти одинаковые.
  • 1
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#8 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2013 - 12:12

Я готов отказаться от ста браузеров на одной машине и готов рассмотреть варианты распределенного запуска - либо через Selenium Grid, либо "на коленке", когда тесты выполняются на удаленных машинах с помощью psexec (Windows) или plink (Linux).

Так чего их рассматривать. Читаем - http://code.google.c...ium/wiki/Grid2. Поднимаем хаб-ноды. Запускаем тесты в наццать потоков.
Из собственного опыта: более-менее приличная работая станция (8Гб ОЗУ,Quadro Core) тянет 4-5 виртуалок Win7, в каждой по 3-4 браузера. Если XP цифру можно умножить на два.
  • 1

#9 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 05 сентября 2013 - 12:57

JMeter - инструмент для нагрузочного тестирования. Он не работает с веб-интерфейсами в привычном для пользователя понимании: он не открывает браузер.
Его работа происходит на уровне "запрос-ответ".
При открытии странички веб-приложения юзер делает HTTP-запрос на URL странички в браузере. JMeter делает этот запрос напрямую, без браузера.
Юзер заполняет поля "Логин" и "Пароль" и нажимает кнопочку "Вход" - JMeter посылает POST-запрос с параметрами «login="dyadya Vanya", password = "genantsvale"».
Как видите, действия почти одинаковые.



Сергей, спасибо, интересно. Только мне потом надо еще на пару-тройку элементов кликнуть. И это действительно работа без браузера. У меня есть подобный инструмент, API к системе, но его недостаточно...
  • 0

#10 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 05 сентября 2013 - 13:00

Так чего их рассматривать. Читаем - http://code.google.c...ium/wiki/Grid2. Поднимаем хаб-ноды. Запускаем тесты в наццать потоков.
Из собственного опыта: более-менее приличная работая станция (8Гб ОЗУ,Quadro Core) тянет 4-5 виртуалок Win7, в каждой по 3-4 браузера. Если XP цифру можно умножить на два.


vmaximv, спасибо. Правильно ли я понимаю, что Grid не подразумевает параметризацию? Я имею в виду возможность указывать разные параметры (в моем случае логин и пароль) при запуске на разных машинах?
  • 0

#11 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2013 - 13:17

vmaximv, спасибо. Правильно ли я понимаю, что Grid не подразумевает параметризацию? Я имею в виду возможность указывать разные параметры (в моем случае логин и пароль) при запуске на разных машинах?

Grid - есть просто пул доступных браузеров на нодах. Параметризацию и параллелизацию нужно реализовывать доступными вам средствами (тестовый фреймворк, скриптинг и т.д.).
  • 0

#12 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 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

Все верно? Нет попадался ли вам материал с примером такой параметризации в таком духе: вот хаб, вот три ноды, вот параметры, которые будут передаваться на ноды, вот так я буду запускать тесты на хабе?
  • 0

#13 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2013 - 15:12

Да почитайте про Grid. Посмотрите примеры использования. Сейчас вы путаете теплое с мягким.
  • 0

#14 evaiz

evaiz

    Новый участник

  • Members
  • Pip
  • 24 сообщений

Отправлено 05 сентября 2013 - 15:24

Да почитайте про Grid. Посмотрите примеры использования. Сейчас вы путаете теплое с мягким.


Я почитал все что нашел здесь. Я понимаю, как управлять количеством запускаемых браузеров (потоков) на нодах. Понимаю, как заюзать TestNG и указать требуемое количество потоков. Но не понимаю, как привязывать параметры к нодам. Наверное это и есть то, что вы имели в виду, говоря о том, что я путаю теплое с мягким. Что мне следует почитать на эту тему?
  • 0

#15 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2013 - 15:31

Параметры задаются для потоков - а потоки создает TestNG. Вот в него и копайте.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных