Как провести стресс-тест, моделирующий тяжелую нагрузку с помощью Selenium - PullRequest
15 голосов
/ 26 марта 2012

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

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

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

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

Есть предложения по работе с Selenium?

Ответы [ 5 ]

4 голосов
/ 28 марта 2012

Selenium на самом деле не оптимизирован для нагрузочного / стресс-тестирования, особенно если вы используете свои браузеры локально.Запуск более 1000 браузеров задушит даже самый крутой сервер.Хотя ОЗУ является очевидным узким местом, у вас также ограничены ресурсы процессора и пропускная способность.Последнее является основной проблемой при загрузке видео.

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

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

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

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

4 голосов
/ 26 марта 2012

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

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

1 голос
/ 26 марта 2012

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

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

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

1 голос
/ 26 марта 2012

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

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

0 голосов
/ 20 января 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...