Почему Selenium RC так медленно?

В течение некоторого времени я изучал 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 тестов для одной веб-страницы.

Ответ 1

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

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

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

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

Ответ 2

Вы тестируете с IE и Selenium в режиме multiwindow? Это очень медленно, и вы должны попытаться запустить seleniumserver с -singlewindow

Ответ 3

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