WatiN или Селен? [закрыто]

148

Я собираюсь начать писать некоторые автоматизированные тесты нашей презентации в ближайшее время. Кажется, что все рекомендуют WatiN и Selenium . Что вы предпочитаете для автоматического тестирования веб-форм ASP.NET? Какие из этих продуктов работают лучше для вас?

В качестве примечания я заметил, что WatiN 2.0 находится в CTP с марта 2008 года, это что-то, что должно беспокоить?

DavGarcia
источник
30
Я не думаю, что этот вопрос должен быть закрыт. Это полезно для меня и других разработчиков (см. Upvotes). Такой вопрос является одной из причин, почему мне нужен Stackoverflow. Я хотел бы, чтобы я мог понизить решения администратора.
Максим Елисеев
7
Интересно, почему этот вопрос был закрыт. Это очень конструктивно. Я изучаю оба, и хотел бы знать их
различия
14
Не конструктивно ??? ... этот сайт переполнен идиотами с слишком большим контролем.
Рональд Макдональд

Ответы:

108

Просто хочу сказать, что в настоящее время я усердно работаю над бета-версией WatiN 2.0 где-то в первом квартале 2009 года. Это будет серьезное обновление до текущих версий CTP 2.0 и в основном предоставит вам те же функциональные возможности для автоматизации FireFox и IE, что и Версия 1.3.0 предлагает для автоматизации IE.

Так что никаких проблем нет.

Надеюсь, это поможет вам сделать выбор. Йерун ван Менен Ведущий разработчик

Йерун ван Менен
источник
23
@jcollum Извините, но я не согласен дать -1. Йероен ответил только на второй вопрос "В качестве дополнительной заметки ...". И кто будет лучше квалифицирован, чтобы ответить на это, если не ведущий разработчик продукта. Только пометить этот ответ как лучший ответ может быть сомнительным.
Генри99
1
@ Henry99 был бы более уместным в качестве комментария к вопросу или отдельного вопроса. Основной вопрос здесь - «А или В». Автор A или B не должен отвечать на подобные вопросы, поскольку совершенно очевидно, что они будут предвзятыми.
Jcollum
3
@jcollum Джероен не упомянул о качестве своего продукта по сравнению с Selenium или сказал что-либо, что можно было бы считать предвзятым в том или ином направлении. Возможно, вы не читали вторую часть вопроса, но ведущий разработчик проекта, без сомнения, абсолютно самый квалифицированный специалист, чтобы ответить на этот вопрос.
Гринн
2
@Grinn: Я упоминал об этом в моем комментарии выше вашего, вы читали это? Он не отвечает на главный вопрос (Watin или Selenium), он обращается к чему-то, что должно было быть в отдельном вопросе полностью.
jcollum
Хороший ответ ...
Мохсин Аван
58

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

По состоянию на пятницу Google имеет более 50 команд, выполняющих более 51 тыс. Тестов в день на внутренней ферме Selenium. 96% этих тестов правильно выполняются машинами Selenium RC и Farm. Остальные 4% частично связаны с ошибками RC, частично с ошибками тестирования, но выявление причины может быть затруднено. Selenium был принят в качестве основной технологии для функционального тестирования веб-приложений в Google. Это хорошие новости.

Я также недавно побывал на одном из собраний Selenium и узнал, что Google вкладывает серьезные ресурсы в улучшение Selenium и его интеграцию с WebDriver, который является инструментом автоматического тестирования, разработанным Саймоном Стюартом. Одним из основных преимуществ WebDriver является то, что он контролирует сам браузер, а не работает внутри браузера как приложение Javascript, а это означает, что основные камни преткновения, такие как проблема «того же источника», больше не будут проблемой.

Марк Эрдманн
источник
1
Selenium кажется более зрелым проектом на данный момент, и тот факт, что Google использует его, является довольно убедительной рекомендацией (также я пробовал Watin и у меня были проблемы - хотя никогда не пробовал Selenium)
Петр Осиак
37

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

капуста
источник
4
+1 для заметок о производительности и реального использования.
Джереми МакГи
Я понял те же проблемы: # 1 Производительность не так хороша, и # 1 тесты выполняются на Java-сервере (это нужно настроить в [TestSetup]).
Питер Гфадер
18
Это больше не проблема - Selenium 2.0 поставляется с библиотекой WebDriver, которая позволяет напрямую управлять браузером, а не только через сервер Java.
Игорь Брейц
2
Я не пробовал Selenium, но у меня были проблемы с Ватином. У меня был внезапно остановленный тест без видимой причины, плюс у меня были случайные ошибки COM (по крайней мере, я не мог найти шаблон).
Петр Овсяк
30

Я пытался их обоих, и вот мои первые мысли ...


WatiN

Хорошо

  • Быстрое исполнение.
  • Инструменты создания сценариев являются независимыми проектами; Есть 2, о которых я знаю: Wax (на основе Excel, размещенный на CodePlex) и WatiN Test Record (размещенный на SourceForge). Ни один из них не так надежен, как Selenium IDE.
  • Очень хорошая поддержка IE. Может прикреплять и отключать запущенные экземпляры. Может получить доступ к собственным дескрипторам окна и т.д.
  • NuGet упакован, легко запускается в среде .NET, в стиле Visual Studio и постоянно обновляется.

Плохо

  • Поиск в Google WatiN (watin xyz) часто заставляет Google рекомендовать вместо этого "watir xyz". Не так много документации там.
  • То, что там мало (документация), сбивает с толку; например: на первый взгляд может показаться, что нет встроенной поддержки селекторов CSS. Тем более, что есть библиотеки расширений, такие как 'WatiNCssSelectorExtensions' и множество статей в блогах об альтернативных методах (таких как внедрение jQuery / sizzle на страницу). В отношении переполнения стека я нашел комментарий Йеруна ван Менена, в котором говорится, что есть нативная поддержка. По крайней мере, ведущий разработчик тратит время на переполнение стека :)
  • Нет встроенной поддержки XPath.
  • Нет готового удаленного выполнения / выполнения на основе сетки.

Пример сценария (C #). Вы не можете сделать это с Selenium (хотя я не знаю, по крайней мере):

class IEManager
{
    IE _ie = null;
    object _lock = new object();

    IE GetInstance(string UrlFragment)
    {
        lock (_lock)
        {
            if (_ie == null)
            {
                var instances = new IECollection(true);  //Find all existing IE instances
                var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
                _ie = match ?? new IE();
                if (match==null)  //we created a new instance, so we should clean it up when done!
                    _ie.AutoClose = true;
            }
        }

        return _ie;
    }
}

Селен

  • Медленнее, чем WatiN (тем более, что нужно создать новый процесс).
  • Встроенные селекторы CSS / поддержка XPath.
  • Selenium IDE хороша (не могу сказать, отлично, но она лучшая в своем классе!).
  • Чувствуется больше Java-иш, чем .NET-иш ... но на самом деле, это не зависит от языка программирования; Все команды отправляются в «Драйвер» вне процесса. Драйвер действительно является хост-процессом для экземпляра браузера. Все коммуникации должны быть сериализованы вход / выход через границы процесса, что может объяснить проблемы скорости относительно WatiN.
  • Разъединенные процессы - «Драйвер» и «Управление» означают большую надежность, большую сложность и т. Д., А также упрощают создание гридов / распределенных сред тестирования. Очень бы понравилось, если бы механизм «распределения» (т. Е. Связь между Driver & Control) осуществлялся через WebSphere или другой существующий надежный менеджер очередей сообщений.
  • Поддержка Chrome и других браузеров из коробки.

Несмотря ни на что, я пошел с WatiN в конце; Я в основном намереваюсь писать небольшие скриншоты приложений и хочу использовать LINQPad для разработки. Присоединение к удаленному экземпляру IE (тот, который я сам не породил) - большой плюс. Я могу покопаться в существующем экземпляре ... затем запустить немного скрипта ... затем снова поиграть и т. Д. С Selenium это сложнее, хотя я полагаю, что в сценарий могут быть встроены "паузы", в течение которых я мог бы возиться напрямую с браузером.

Grynn
источник
2
Спасибо за подробное сравнение.
Сэм
18

Самое большое отличие состоит в том, что Selenium поддерживает разные браузеры (не только IE или FF, см. Http://seleniumhq.org/about/platforms.html#browsers .

Кроме того, Selenium имеет сервер удаленного управления ( http://seleniumhq.org/projects/remote-control/ ), что означает, что вам не нужно запускать браузер на той же машине, на которой выполняется тестовый код. Поэтому вы можете протестировать свое веб-приложение. на разных платформах ОС.

В общем, я бы рекомендовал использовать Selenium. Я использовал WatiN несколько лет назад, но я не был удовлетворен его стабильностью (возможно, к настоящему времени она улучшилась). Самым большим плюсом для Selenium для меня является тот факт, что вы можете протестировать веб-приложение. в разных браузерах.

Игорь Брейц
источник
3
Selenium поддерживает различные браузеры. Это очень важно, учитывая, что теперь мы должны поддерживать Chrome, Safari, FF и IE 6, 7 и 8.
Тони Эннис
17

Ни. Используйте Нутру. Оборачивает Селен. Гораздо более прочный. https://github.com/featurist/coypu

Обнови Е. Оливер, ты прав. Хорошо, почему это лучше? Лично я обнаружил, что драйвер Selenium для IE, в частности, очень хрупкий - есть ряд «стандартных» исключений драйверов, которые я снова обнаружил при запуске Selenium для модульных тестов на тяжелых веб-сайтах ajax.

Я упоминал, что хочу написать свои скрипты на c # как тестовый проект? Да Приемочные испытания в рамках непрерывного развертывания сборки.

Ну Coypu имеет дело с вышеизложенным. Это обертка для Selenium, которая позволяет испытательные приборы, такие как,

browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");

... который раскручивает браузер (настраиваемый бренд) и запускает скрипт. Он отлично работает с областями действия и ОЧЕНЬ расширяется.

На GitHub есть больше примеров, и, как упоминает Олвье, видео Адриана превосходно. Я думаю, что это лучший способ проводить тесты на основе браузера в мире .Net и пытается следовать его одноименной версии Ruby.capybara

penderi
источник
Этот ответ требует гораздо большего внимания: Coypu - недостающее звено между ВАМИ и автоматическим тестированием браузера! Удивительный! Иди посмотри на это сейчас! Если вы когда-либо боролись с Selenium (или, может быть, WatiN), пытаясь найти AJAX или правильное нахождение элементов - Coypu - ответ на ваши молитвы ;-)
Оливер
Спасибо, @penderi, за добавление более подробной информации :-)
Оливер
12

Я использовал оба, они оба, кажется, работают хорошо. Я склоняюсь к Selenium, так как он, кажется, лучше поддерживает Ajax. Я считаю, что WaTiN повзрослел, но с тех пор, как я в последний раз использовал его, он должен иметь то же самое.

Самое главное, в какой среде разработки вы хотели бы находиться? У Selenium и Watin есть рекордеры, но Selenium находится в браузере, а watin - в визуальной студии. + и - к обоим.

rball
источник
6

До сих пор мы являлись чисто магазином Microsoft для предоставления решений для предприятий и работали с WatiN. Это может измениться в будущем.

Как более свежий источник:

Microsoft напечатала в журнале MSDN 12/2010 BDD-учебник для начинающих с комбинацией SpecFlow и WatiN (классная разработка, основанная на поведении BDD). Его автор Брэндон Сатром (Evangelist) также опубликовал в декабре 2010 года видео-трансляцию с подробным обучением 1: 1 своих выводов.

Существует Whitepaper от 04/2011 по поддержке ATDD / BDD с SpecLog, SpecFlow и Team Foundation Server (Acceptance Test Driven Development / Behavior Driven Development) от Christian Хассы , чья команда построена SpecFlow.

Henry99
источник
5

Я использую Watin, но не использовал Selenium. Я могу сказать, что быстро встал и побежал на Ватине, и у меня было мало проблем. Я не могу придумать ничего такого, что я хотел бы сделать, но я не мог с этим разобраться. НТН

Jasons
источник
4

Обычно я использую Selenium, в основном потому, что мне нравится плагин Selenium IDE для FireFox для записи начальных точек моих тестов.

Стивен Роббинс
источник
Вы знаете, какая версия FF поддерживается? Я попробовал IDE с FF6 и FF5 без любви. Я не ожидал поддержки для 6, но для 5 я был удивлен.
MikeJ
4

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

Марк Сидаде
источник
Я хочу дать +1 за создание третьей альтернативы, но затем я говорю -1 за то, что не предоставил никакого опыта с продуктом и как он сравнивается с двумя другими.
Джефф Мартин
Диалоги Windows = окна оповещений js? Если так, селен имеет поддержку для этого. Я никогда не проверял это, так как нахожу эти окна предупреждений противными.
Jcollum
4

Я подумал об использовании обоих. Я использовал рекордер для Selenium, чтобы построить несколько тестов в FF. Я попытался сделать то же самое в Watin и обнаружил, что Watin Recorder (2.0.9.1228) абсолютно бесполезен для наших сайтов . Оказалось, что он рендерит сайт в IE6, что делает наш сайт практически непригодным для записи. Мы не поддерживаем IE6. Я не мог найти способ изменить браузер, который он использует. Я нашел там только один Watin Recorder. Если есть более одного или один, который обновляется, пожалуйста, прокомментируйте.

IDE Selenium Recorder для Firefox прост в использовании и переносит тесты на C #. Это не здорово в этом. Я не смог заставить работать тестовые наборы, несмотря на то, что читал один или два сообщения в блоге с обходными путями. Так что есть немного манипуляций с сгенерированным кодом. Тем не менее, он работает на 90%, и это лучше, чем альтернатива.

За мои деньги / время Selenium превосходит просто по простоте создания новых тестов . В IE нет хороших панелей инструментов для разработчиков, которые были бы так же хороши, как Firebug , поэтому я начинаю свою разработку в Firefox, поэтому наличие хорошего рабочего рекордера в Firefox - огромный бонус.

Мой вывод был очень похож на цитату Черчилля о демократии: Selenium - худшая форма автоматизированного тестирования пользовательского интерфейса. За исключением всех остальных.

jcollum
источник
Благодаря возможности команды QA создавать «ручные» тесты с плагином FF и предлагать разработчикам портировать сгенерированные тесты C #, наша инфраструктура сделала вывод о том, что Selenium довольно прост. WaitIn выглядит достаточно справедливо - но «кропотливый» процесс построения тестов (согласно видео на странице проекта WaitIn) в данном случае не был подходящим вариантом для нашего клиента.
sonstabo
@Sonstabo: это направление, которое я надеюсь пойти. Когда-нибудь, когда у нас будет отдел QA: puppydogeyes:
jcollum
3

В случае опасности, я бы порекомендовал Axe / WatiN. Axe позволяет писать тесты в Excel «ручными» тестерами, не зная базового «языка» тестов. Для написания сделанных на заказ действий требуется «Техник» (IE. Сегодня мне пришлось сделать несколько сложный поиск и перекрестную ссылку на таблицу), но после написания эти действия могут быть использованы в тестах нетехническими тестировщиками.

Я также слышал, что проект UK Government Gateway (который, как мне кажется, предусматривает автоматические тесты для тестов 6K +) недавно перенес все свои тесты с Ax / Winrunner на Ax / Watin в течение недели !! И многие тесты довольно сложные - я знаю, как работал над этим несколько лет назад ...

Сейчас я смотрю на Selenium, поскольку потенциальный клиент использует его. Но я предлагаю немного взглянуть на Axe как на слой над инструментом «рабочая лошадь».

Мат W
источник
3

Если вам нужен доступ к фреймам, модальным диалогам и междоменным фреймам, WatiN - это то, что вам нужно. Selenium не может обрабатывать фреймы, которые он выбрасывает в качестве исключений timeout. Если вы можете сделать намного больше вещей, особенно если веб-сайт использует специфичные для IE вещи, такие как ShowModalDialog и т. Д. WatiN очень хорошо справляется со всеми из них. Я мог бы даже сделать междоменный доступ к iframe.

kesavkolla
источник
-1

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

StingyJack
источник
«Вам придется сделать и то, и другое, если вам нужно протестировать IE и FF» - разве Selenium не может сделать и то, и другое?
Marcumka
1
Селен RC может сделать то есть сафари и ff
redsquare
Вы можете записывать только в FF, но вы можете использовать RC для управления IE и FF (и, возможно, другими)
Джефф Мартин
Не «вероятно»: seleniumhq.org/about/platforms.html#browsers .
Игорь Брейц