Подтвердить что ты не робот

Как подчеркнуть тест, имитирующий тяжелую нагрузку с использованием селена

У меня есть система для тестирования, которая является технологией распространения видеообъявлений. Мне нужно загрузить каждое видео, например, 1-2 минуты, чтобы показывать рекламу. Видеоролики воспроизводятся в клиенте Flash и транслируются как потоки FLV, как на YouTube.

Причина, по которой мне нужно протестировать ее только через браузеры, и каждый другой метод не будет работать, - это стресс одновременно тестировать серверы потоковой передачи видео и серверы объявлений и показывать рекламу в режиме реального времени.

Я использовал Selenium, WatiN, Automation Anywhere и многие другие инструменты автоматизации. Однако, когда я пытаюсь начать с 10000 браузеров на своей машине (32 ГБ оперативной памяти, 16-ядерный процессор), никто из них не может выполнить эту работу.

С Selenium я могу запустить максимальные экземпляры FireFox до сих пор, но это все еще слишком мало: половина экземпляров не запускает тест.

Любые предложения, связанные с Selenium?

4b9b3361

Ответ 1

Selenium не оптимизирован для тестирования нагрузки и напряжения, особенно если вы используете локальные браузеры. Запуск более 1000 браузеров будет забивать даже самый жёсткий сервер. Хотя оперативная память является очевидным узким местом, вы также ограничены ресурсами ЦП и пропускной способностью. Последнее является основной проблемой, если вы загружаете видео.

Не говоря уже о том, что вы будете тестировать один IP-адрес с 10-кратными браузерами, поэтому балансировка нагрузки может не удаваться должным образом, а также фактическое распределение видеообъявлений конкретным виртуальным пользователям.

Если вы хотите придерживаться существующих тестов Selenium, у меня были хорошие впечатления от BrowserMob. У них в основном есть огромная сетка для реального тестирования загрузки браузера, распределенного по AWS.

Еще одна рекомендация - это настоящий инструмент тестирования производительности. Я бы рекомендовал Soasta CloudTest. У них есть бесплатная версия, в которой работает 100 пользователей, поэтому вы можете увидеть, будет ли она хорошо подходит вам. Я обнаружил, что сценарии для CloudTest относительно просты.

Отказ от ответственности: мой опыт работы с обеими компаниями был как платный клиент, и я никогда не работал ни на что.

Ответ 2

Вы не собираетесь запускать 10 000 браузеров на вашем компьютере. Это даст 3,2 МБ физической памяти на один экземпляр браузера, и я уверен, что FireFox просто не понравится.

Вы можете создать JMeter script, который поразит ваш сервер множеством потоков. Он не будет взаимодействовать с пользовательским интерфейсом, но будет имитировать нагрузку многих клиентов, поражающих любые URL-адреса, которые вы им сообщаете. Я считаю, что он также включает в себя возможность записи сеанса и воспроизведения его для упрощения настройки ваших сеансов.

Ответ 3

Если вы используете машину Windows, то, согласно моему опыту, существует ограничение на количество экземпляров окна браузера, которые нужно открыть. Согласно моему тесту в последний раз, он ограничивает 100-150 окон браузера.

Я бы порекомендовал вам использовать безголовый робот, который не требует открытия окна браузера. Я думаю, что у последней версии Selenium есть такая возможность. Но, похоже, это больше похоже на нагрузочный тест, поскольку вы пытаетесь имитировать более 10 000 экземпляров пользователей, я бы рекомендовал использовать инструмент тестирования нагрузки, такой как JMeter или LoadRunner.

Ответ 4

Мне кажется, что вы пытаетесь проверить, что увидит клиент на основе большого трафика, не?

В этом случае Джоэл совершенно прав. Если вам абсолютно необходимо увидеть, что видит клиент, вы можете использовать потоковые удары и просто выгружать результаты в базу данных. Это покажет вам все, что увидит клиент в любом случае, и гораздо проще сортировать, чем тысячи экземпляров браузера.

В любом случае ваш клиент не увидит ошибок, если на стороне сервера отсутствуют ошибки. Если вы тестируете функциональность в средах с ограниченной пропускной способностью, средах с интенсивным использованием ресурсов или в среде с интенсивной памятью, это намного проще, чем запуск тысяч экземпляров браузера.

Ответ 5

Ваш пост пахнет какой-то формой мошенничества на основе рекламы для меня, но в любом случае: считали ли вы использование разных веб-браузеров помимо Firefox? PhantomJS - это браузер без браузера, который совместим с Selenium. Он поддерживает все основные функции браузера, такие как обработка DOM, селектор CSS, Javascript и Canvas. Я не знаю, поддерживает ли он Flash.

В этой публикации есть достойный список других безголовых и автоматизированных веб-браузеров, которые вы можете рассмотреть.

Кроме того, если каждый экземпляр браузера создает экземпляр Flash-плагина, не пренебрегайте возможностью, что проблема может быть связана с Flash, а не с Firefox. В качестве альтернативы, зачем создавать несколько различных процессов Firefox? Можете ли вы выполнить то, что хотите, вместо использования вкладок?