Почему Selenium RC такой медленный? - PullRequest
10 голосов
/ 01 марта 2010

В течение некоторого времени я изучал Selenium RC, чтобы провести функциональное тестирование моего веб-приложения. Теперь я нашел тестовую стратегию, которая настолько эффективна, что я не хочу уходить от Selenium RC (потратив несколько недель на то, чтобы найти хороший способ проверки средств проверки ASP.NET).

Но теперь, когда мое приключение Selenium RC переходит от POC к тому, что я на самом деле использую, я столкнулся с проблемой. Это безумно медленно. Выполнение одного теста, который загружает страницу, заполняет некоторые поля и нажимает кнопку, занимает несколько секунд. Когда он выполняется, я легко вижу, как каждое отдельное поле заполняется по одному. Использование Selenium IDE в Firefox не такое медленное.

Я нашел эту страницу, где четко указано, что Selenium RC работает медленно http://selenium -grid.seleniumhq.org / how_it_works.html

Но почему это? Это потому, что браузер опрашивает сервер селена? Если это так, нельзя ли изменить этот интервал опроса? Или есть другая причина. Я не привык к удаленному вызову, занимающему заметно человеческое время.

Ужасно, что выполнение нескольких тестов должно занять так много времени. Я могу выполнить весь свой набор тестов презентаций (MVP), бизнес и уровня базы данных (500+ тестов) намного быстрее, чем требуется для запуска 10 тестов для одной веб-страницы.

Ответы [ 3 ]

7 голосов
/ 02 сентября 2010

Тестируете ли вы с IE и Selenium в многооконном режиме? Это очень медленно, и вы должны попытаться запустить сервер selenium с -singlewindow

7 голосов
/ 01 марта 2010

Функциональные / интеграционные тесты будут выполняться дольше, особенно если они выполняются в браузере. Это означает, что они должны загрузить все 3 слоя вашего MVC, а затем выполнить то же самое, когда он что-то делает на странице. Таким образом, каждое действие имеет потенциал для перехода к базе данных. Это по своей сути длительные задачи по сравнению с модульными тестами.

Тесты начинаются с выполнения на этой странице open, которое затем ожидает загрузки всего. Так что, если это займет много времени, то это может занять много времени для ваших пользователей, если они будут иметь доступ к странице. Например. Множество изображений, незавершенный JavaScript / CSS, плохой срок действия при загрузке.

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

Другой причиной, по которой тесты выполняются медленно, является основной язык Selenium - JavaScript, который взаимодействует с DOM. DOM может сильно замедлить работу, особенно если ваши тесты используют XPath в качестве локаторов. XPath + JavaScript + IE + Selenium == Больно, и нет ничего, что мы, разработчики Selenium, могли бы сделать больше, чтобы настроить его. Ну, есть и будет Selenium 2, который находится в альфа-версии и может быть загружен с http://selenium.googlecode.com/. Я работаю над реализацией .NET, в настоящее время наблюдаю огромные улучшения в скорости. Я написал в блоге об этом, потому что изменения поразили меня. Я видел до 8 тестов, запущенных одновременно с Selenium 1 для запуска 1 теста

2 голосов
/ 19 марта 2010

Возможно ли, что ваша скорость выполнения по умолчанию слишком низкая? Проверьте методы getSpeed ​​() и setSpeed ​​() в DefaultSelenium.

...