WatiN чи селен? [зачинено]


148

Я скоро почну кодувати деякі автоматизовані тести нашої презентації. Здається, всі рекомендують WatiN та Selenium . Які ви віддаєте перевагу для автоматизованого тестування веб-форм ASP.NET? Який із цих продуктів краще для вас працює?

Як зауваження, я помітив, що WatiN 2.0 працює в CTP з березня 2008 року. Чи варто щось турбувати?


30
Я не думаю, що це питання не повинно бути закритим. Це корисно для мене та інших розробників (див. Резюме). Таке питання є однією з причин, чому мені потрібен Stackoverflow. Я б хотів, щоб я спростував рішення адміністратора.
Максим Єлісєєв

7
Цікаво, чому це питання було закрите. Це дуже конструктивно. Я вивчаю обоє, і хотів би дізнатися їхні відмінності
marcelo-ferraz

14
Не конструктивний ??? ... цей сайт переповнюють ідіоти з надто великим контролем.
Рональд Макдональд

Відповіді:


108

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

Тож ніяких турбот немає.

Сподіваємось, це допоможе зробити ваш вибір Jeroen van Menen Lead dev WatiN


23
@jcollum Вибачте, але я не згоден дати -1. Джероен відповів лише на друге запитання "Як бічна записка ...". І хто краще кваліфікується, щоб відповісти на це, якби не провідний розробник продукту. Лише позначення цієї відповіді найкращою відповіддю може бути сумнівним.
Henry99

1
@ Henry99 було б більш доречним як коментар до цього питання або окреме питання. Основне питання тут - "А або В". Автор A або B не повинен відповідати на подібні запитання, оскільки цілком очевидно, що вони будуть упередженими.
jcollum

3
@jcollum Jeroen не згадував про якість свого продукту проти селену, або сказав що-небудь, що можна вважати упередженим у той чи інший бік. Можливо, ви не прочитали другу частину запитання, але головний розробник проекту без сумніву є абсолютно найбільш кваліфікованою особою, яка відповість на це питання.
Грінн

2
@Grinn: Я звернувся до цього, у своєму коментарі вище вашого, ви це прочитали? Він не відповідає на головне запитання (Ватін чи Селен), він звертається до чогось, що мало б бути повністю в окремому запитанні.
jcollum

Приємна відповідь ...
Мохін Аван

58

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

Станом на п’ятницю в Google працює понад 50 команд, які виконують понад 51 тис. Тестів на день на внутрішній селеній фермі. 96% цих тестів правильно виконуються машинами Selenium RC та Farm. Інші 4% частково пов'язані з помилками RC, частково - з помилками тестування, але виділити причину може бути складно. Selenium був прийнятий в якості основної технології функціонального тестування веб-додатків в Google. Це хороша новина.

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


1
На даний момент селен здається більш зрілим проектом плюс той факт, що Google використовує його, є досить грунтовною рекомендацією (також я пробував Ватіна і не мав проблем - ніколи не пробував Селен)
Piotr Owsiak

37

Ми перевірили обидва і вирішили поїхати з WaTiN. Як зазначають інші, у Selenium є деякі приємні риси, які не знайдені у WaTiN, але ми зіткнулися з проблемами, коли Selenium працює, і коли ми це зробили, це було, безумовно, повільніше при запуску тестів, ніж WaTiN. Якщо я правильно пам’ятаю, проблеми з налаштуваннями, з якими ми стикалися, випливали з того, що у Selenium був окремий додаток для керування фактичним браузером, де WaTiN робив усе в процесі.


4
+1 за нотатки про ефективність та використання в реальному світі.
Джеремі Макгі

Я зрозумів ті самі проблеми: Продуктивність №1 не настільки хороша, і тести №1 працюють на сервері Java (це потрібно встановити в [TestSetup]).
Пітер Гфадер

18
Це вже не проблема - Selenium 2.0 постачається з бібліотекою WebDriver, яка дозволяє безпосередньо керувати браузером, а не лише через сервер Java.
Ігор Брейц

2
Я не пробував Селен, але у мене були проблеми з Ватіном. У мене тест раптово припинився без видимих ​​причин, плюс у мене виникли помилки COM, які викидаються випадковим чином (принаймні, я не міг знайти жодної картини).
Piotr Owsiak

30

Я намагався їх обидва, і ось мої початкові думки ...


WatiN

Добрий

  • Швидке виконання.
  • Інструменти створення сценаріїв - це незалежні проекти; я знаю 2: Wax (заснований на Excel, розміщений на CodePlex) та WatiN Test Record (розміщений на SourceForge). Вони не є настільки надійними, як Selenium IDE.
  • Дуже хороша підтримка IE. Можна приєднувати та від'єднувати до / від запущених екземплярів. Можна отримати доступ до власних ручок вікон тощо (див. Приклад сценарію нижче).
  • NuGet упакований, простий у запуску у середовищах .NET, Visual Studio та постійно оновлюється.

Поганий

  • Гуглінг WatiN (watin xyz) часто змушує Google рекомендувати замість цього "watir xyz". Не так багато документації там.
  • Що там мало (документація), це заплутано; наприклад: спочатку червоніє, здавалося б, немає вбудованої підтримки для селекторів CSS. Тим більше, що існують бібліотеки розширень на кшталт "WatiNCssSelectorExtensions" та багато статей у блогах про альтернативні методи (наприклад, введення jQuery / sizzle в сторінку). Під час переповнення стека я знайшов коментар Єроєна ван Менена, який підказує, що є підтримка нації. Принаймні ведучий-розробник витрачає час на переповнення стека :)
  • Немає вбудованої підтримки XPath.
  • Немає віддаленого виконання / на основі сітки на віддаленому виконанні.

Приклад сценарію (C #). Ви не можете цього зробити із селеном (не принаймні, що я знаю):

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.
  • Селен IDE хороший (не можу сказати чудово, але це найкращий у класі!).
  • Відчуває більше Java-ish, ніж .NET-ish ... але насправді це мова агностики; всі команди надсилаються до "драйвера" поза процесом. Драйвер - це дійсно «хост» процес для екземпляра браузера. Вся комунікація повинна бути серіалізована в / в через межі процесу, що може пояснити проблеми швидкості відносно WatiN.
  • Розв’язані процеси - "драйвер" та "управління" означають більше надійності, більшої складності тощо, але також простіше створювати сітки / розподілені тестові середовища. Мені б дуже сподобалося, якби механізм "розподілу" (тобто зв'язок між драйвером та керуванням) знаходився через WebSphere або інший існуючий, надійний менеджер черги повідомлень.
  • Підтримуйте хром та інші браузери поза коробкою.

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


2
Дякуємо за детальне порівняння.
Сем

18

Найбільша відмінність полягає в тому, що Selenium підтримує різні браузери (не лише IE або FF, див. Http://seleniumhq.org/about/platforms.html#browsers .

Також у Selenium є сервер віддаленого керування ( http://seleniumhq.org/projects/remote-control/ ), що означає, що вам не потрібно запускати браузер на тій же машині, на якій працює тестовий код. Тому ви можете протестувати свій веб-додаток. на різних платформах ОС.

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


3
У Selenium є підтримка різних браузерів. Надзвичайно важливо, що зараз ми маємо підтримувати Chrome, Safari, FF та IE 6, 7 та 8.
Tony Ennis

17

Ні. Використовуйте Coypu. Він обгортає селен. Набагато міцніше. https://github.com/featurist/coypu

Оновіть Ye Oliver ви маєте рацію. Добре, чому це краще? Особисто я виявив, що драйвер Selenium для IE, зокрема, дуже крихкий - є ряд «стандартних» винятків з драйверів, які я знову знайшов, коли керував Selenium для Unit Tests на важких веб-сайтах ajax.

Чи згадував я, що хочу написати свої сценарії в c # як тестовий проект? Так Приймання тестів у процесі розгортання безперервної збірки.

Ну Coypu займається вищезгаданим. Це обгортка для Selenium, яка дозволяє випробовувати такі світильники, як,

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

... що відкриє (налаштовується бренд) браузера та запустить сценарій. Він чудово підходить для областей, що охоплюють область, і ДУЖЕ розширюється.

У GitHub є більше прикладів, і як згадує Ольв'є нижче, відео Адріана є чудовим. Я думаю, що це найкращий спосіб керувати тестами на основі браузера у світі .Net та намагається слідувати за тезкою Rubycapybara


Ця відповідь потребує БОЛЬШОГО УВАГИ: Coypu - це відсутній зв’язок між ВАМ та автоматизованим тестуванням браузера! Дивовижний! Подивіться зараз! Якщо ви коли-небудь боролися з Селеном (або, можливо, з WatiN), намагаєтеся правильно знайти AJAX або стихію - Coypu - це відповідь на ваші молитви ;-)
Олівер

Дякую, @penderi, за додавання деталей :-)
Олівер

12

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

Найбільше було б, у якому середовищі розвитку ти любиш опинитися? У Selenium і Watin є рекордери, але Selenium є у браузері, а Wattin - у візуальній студії. + і -и обом цим.


6

Досі ми являємо собою чистий магазин Microsoft для надання рішень для підприємства та працювали з WatiN. Це може змінитися в майбутньому.

Як новітнє джерело:

Microsoft надрукувала в MSDN Magazine 12/2010 BDD-праймер із поєднанням SpecFlow з WatiN (крутий BDD-Behavior Driven Development). Її автор Брендон Сатром (msft Developer Evangelist) також опублікував у грудні 2010 року відео-веб-трансляцію з деталізацією 1: 1 своїх вищезазначених висновків.

Існує Whitepaper від 04/2011 по підтримці ATDD / BDD з SpecLog, SpecFlow і Team Foundation Server (Acceptance Test Driven Development / Behavior Driven Development) від Christian Хассе , чия команда побудована SpecFlow.


5

Я використовую Watin, але не використовував селен. Я можу сказати, що я швидко встав і біг на Ватін, і у мене було мало проблем. Я не можу придумати нічого, чого хотів би зробити, що не міг з цим зрозуміти. HTH


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 Recorder (2.0.9.1228) абсолютно непридатний для наших сайтів . Здавалося, що сайт робить його в IE6 - робить наш сайт ефективно непридатним для запису. Ми не підтримуємо IE6. Я не зміг знайти жодного способу змінити браузер, який він використовує. Я знайшов там лише один Ватін-рекордер. Якщо є декілька або один, який постійно оновлюється, будь ласка, прокоментуйте.

IDE Selenium Recorder для Firefox простий у використанні та перевіряє порти на C #. Це не чудово в цьому. Я не зміг змусити перенести тестові набори до роботи, незважаючи на те, що читав допис у блозі чи два, який мав обхідні проблеми. Таким чином, є трохи маніпулювання згенерованим кодом. І все-таки він працює на 90%, і це краще, ніж альтернатива.

Що стосується моїх грошей / часу, селен перевершує простоту створення нових тестів . IE не має жодної хорошої панелі інструментів для розробників, яка знаходиться десь так добре, як Firebug , тому я починаю свою розробку в Firefox для початку, тому наявність хорошого робочого рекордера в Firefox - це величезний бонус.

Мій висновок тут був дуже схожий на цитату демократії Черчілля: Селен - це найгірша форма автоматизованого тестування на інтерфейс користувача. За винятком усіх інших.


Завдяки команді QA створити «ручні» тести з плагіном FF та дозволити розробникам перенести створені тести на C #, наша інфраструктура зробила висновок про те, щоб перейти на Selenium досить просто. WaitIn виглядає досить чесно - але «кропіткий» процес складання тестів (згідно відео на сторінці проекту WaitIn) не був можливим для нашого замовника в цьому випадку.
sontabo

@sonstabo: саме в цьому напрямку я сподіваюся йти. Колись у нас є відділ контролю якості: puppydogeyes:
jcollum

3

Загрожуючи спуститися на дотичну, я рекомендую Ax / WatiN. Ax дозволяє тести писати в Excel «Тестувальниками», які не знають основної мови тесту. Потрібен "Технік", щоб записати відповідні дії (IE. Сьогодні мені довелося зробити трохи складний пошук таблиці та перехресне посилання), але колись написані дії можуть бути використані у тестах нетехнічними тестерами.

Я також чув, що проект урядового шлюзу уряду Великобританії (який, на мою думку, має автоматичні тести 6K + тести), нещодавно переніс усі свої тести з Ax / Winrunner в Ax / Watin протягом тижня !! І багато тестів досить складні - я знаю, як працював над ним кілька років тому ...

Я зараз дивлюся на Selenium, як потенційний клієнт використовує його. Але я пропоную поглянути на Сокиру як на шар, що знаходиться над інструментом «робочий кінь».


3

Якщо вам доведеться отримати доступ до iframes, модальних діалогів та міждоменних iframe WatiN - це шлях. Selenium не міг обробляти iframe, він викидав винятки командного часу. WatiN, ви можете зробити багато іншого, особливо якщо веб-сайт використовує специфічні для IE речі, такі як ShowModalDialog тощо. WatiN обробляє їх усі дуже добре. Я навіть міг зробити міждоменний iframe доступ.


-1

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


"Вам доведеться робити і те, і інше, якщо вам потрібно зробити IE і FF тестування" - не може Selenium зробити і те, і інше?
marcumka

1
селен rc може робити, тобто сафарі та ff
redsquare

ви можете записувати лише у FF, але ви можете використовувати RC для управління як IE, так і FF (і, можливо, іншими)
Jeff Martin

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.