#selenium #selenium-grid #selenium-docker #python-docker #docker-selenium
#селен #selenium-grid #selenium-docker #python-docker #docker-selenium
Вопрос:
Я прочитал в старом потоке, что dockerized selenium grid — это ресурсоемкий процесс.
Я пытаюсь запустить от 250 до 300 тестов selenium параллельно, и после некоторых исследований я обнаружил, что у меня есть 3 варианта:
1: многопоточность 2: многопроцессорная обработка 3: запуск скрипта selenium в контейнере docker
Но потом я прочитал, что многопоточность на самом деле не выполняет параллельный ввод-вывод?
Поэтому я переключил свое внимание на сценарий dockerized selenium.
Итак, сколько ресурсов будет потреблять простой сценарий dockerized selenium? Часть скрипта selenium действительно проста, где он получает от 3 до 5 значений, а затем вводит эти значения на веб-странице и нажимает кнопку.
Достаточно ли 24 ГБ оперативной памяти с 4 ядрами процессора для вышеупомянутой процедуры?
Ответ №1:
Если вы собираетесь запускать все на одном хосте, вы не получите никакой прибыли от dockerizing.
Наиболее трудоемкой частью здесь является веб-браузер. Попробуйте запустить 250-300 экземпляров браузера одновременно, и вы получите ответ.
В основном docker не решает проблему распараллеливания. Он устраняет изоляцию и упрощает распространение и развертывание. Наиболее ресурсоэффективным способом из вашего списка является многопоточность, однако для этого требуется поддерживать потокобезопасность вашего тестового кода.
Я бы посоветовал вам провести тест. Сколько потребуется вашим браузерам, зависит от того, насколько тяжелым является ваш пользовательский интерфейс. Если он загружает много данных, потребуется больше оперативной памяти, если он запускает много javascript, потребуется больше процессора. Итак, начните с 20 параллельных сеансов и следите за своими ресурсами. Затем увеличьте, если все кажется нормальным.
Комментарии:
1. Итак, dockerized selenium не принесет мне пользы в этом сценарии, я вроде как надеялся, я немного смущен многопоточностью, хотя я просматривал веб-страницы, как зомби, и я читал только смешанные ответы, некоторые источники говорят, что многопоточность может работать параллельно, а другие источники говорят, что она выиграла’t….
2. Процессы в docker в конечном итоге будут использовать одно и то же оборудование, как если бы они делились без docker. Поэтому, если у вас много компьютеров, вы можете развернуть на них свой кластер (используя swarm или kubernetes) и таким образом получить выгоду.
3. Я запустил часть selenium без многопоточности или чего-либо еще, что отвечает за запуск браузера, а затем ввод данных в требуемые поля и нажатие и т.д…. Я запустил 10 экземпляров, и все 10 потребляли всего 532 Мб оперативной памяти, в то время как загрузка моего процессора для всех 10 составляла менее 17%… Это то, что мне очень понравилось, так как оно ориентировано на ресурсы, но главная проблема заключается в том, что если 200 скриптов selenium должны вводить данные на веб-странице, поможет ли многопоточность selenium выполнить задачу во всех 200 экземплярах браузера одновременно? Или он сначала выполнит одну задачу, а затем перейдет к другой?
4. К сожалению, несколько компьютеров не являются решением для меня
5. идея наличия сетки заключается в том, что у вас есть параметризованный тест на одной стороне и несколько «узлов», где тест может быть фактически выполнен. Итак, вы запускаете тест 1, тест 2 и тест 3 параллельно. Все три теста создают 3 параллельных соединения
RemoteWebDriver
. Таким образом, каждый работает со своим собственным экземпляром WebDriver. При этомRemoteWebDriver
вы подключаетесь к grid hub, который может отправлять команды на соответствующий узел. На узле для каждого теста запускается выделенный браузер. Так что для проведения 300 параллельных тестов потребуется 300 параллельных веб-браузеров, где каждый загружает свой собственный контекст, ресурсы ==>