Перейти к содержимому

Фотография

Selenium 2.0 / Watir + java / ruby что лучше выбрать ?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 Dodo

Dodo

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:asd

Отправлено 22 марта 2011 - 11:37

Добрый день.
Стоит дилемма какой тул выбрать и какой язык .
Тестироваться будет только под IE.

Заранее благодарен
  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 22 марта 2011 - 11:51

Язык:
1. Тот язык, который Вы лично лучше знаете
2. Тот язык, про который есть у кого проконсультироваться (разработчик, друг)
3. Если владение программированием неуверенное -- лучше выбрать тот язык, который меньше позволяет ошибаться, даёт меньше свободы (из двух вышеперечисленных -- Java)

Движок веб-интерфейса:
1. Selenium 2.0 пока в разработке, это надо учитывать, хотя по возможностям он скоро не просто догонит, но и сильно перегонит Watir
2. Watir -- это Ruby, а если выберите язык Java, тогда придётся выбрать и Selenium 2.0
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 Dodo

Dodo

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:asd

Отправлено 22 марта 2011 - 12:00

Спасибо, согласен, но например у Watir есть свои плюсы например работа с окончанием загрузки страницы, а Selenium 2.0 пока что еще не стабилен, на сколько я знаю там есть еще над чем работать. Плюс на руби писать проще, меньше кода. У меня навыки что в руби что в жаве на одном уровне.
  • 0

#4 AdyOS

AdyOS

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 22 марта 2011 - 12:25

Я всеми руками исключительно за watir. Сам сначала попробовал автоматизировать на Selenium, на практике он оказался очень тормазнут и слабоват. Косяков в нем (в selenium) просто множество. Начав писать на watir еще ни разу не усомнился что выбрал правильное направление. Один из важных плюсов - watir всегда можно заточить под свои нужды при помощи ООП, доступного в ruby в отличии от selemium.
Поэтому мой совет, берите ruby и забудьте про selenuim как про страшный сон =).
  • 0

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 22 марта 2011 - 13:59

Я всеми руками исключительно за watir. Сам сначала попробовал автоматизировать на Selenium, на практике он оказался очень тормазнут и слабоват. Косяков в нем (в selenium) просто множество. Начав писать на watir еще ни разу не усомнился что выбрал правильное направление. Один из важных плюсов - watir всегда можно заточить под свои нужды при помощи ООП, доступного в ruby в отличии от selemium.
Поэтому мой совет, берите ruby и забудьте про selenuim как про страшный сон =).

Не надо путать тёплое с мягким.
Ruby и Java -- это языки программирования. Selenium и Watir -- драйверы пользовательского интерфейса.
Можно писать на Ruby и использовать для доступа к браузеру Selenium.
Но даже если выбрать не Ruby, а Java или .Net или Python (а селен поддерживает их все), ООП и прочие прелести программирования всё равно останутся при вас.

Напротив, на Ruby (да и на любом другом "богатом") языке программирования гораздо легче написать трудночитаемый и трудносопровождаемый код, чем на "строгих" языках типа Java или .Net
Надо помнить, что размер кода -- не главное, а меньше -- не значит проще.

Да, Selenium 1.0 работает медленнее -- потому что архитектура такая, расплата за универсальность (любые языки, любые браузеры, расширяемая система команд), за возможность удалённого запуска.
Selenium 2.0 (то есть WebDriver) работает примерно с такой же скоростью, что и "честный" режим запуска Watir, потому что технологии работы с браузером схожие. Более того, Watir имеет планы полностью перейти на использование WebDriver внутри.
У Watir есть специальные "быстрые" режимы запуска, хотя и не очень "честные" -- при этом отрабатывают не все события. Selenium 2.0 пока имеет только "честный" способ запуска.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#6 AdyOS

AdyOS

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 22 марта 2011 - 14:48


Я всеми руками исключительно за watir. Сам сначала попробовал автоматизировать на Selenium, на практике он оказался очень тормазнут и слабоват. Косяков в нем (в selenium) просто множество. Начав писать на watir еще ни разу не усомнился что выбрал правильное направление. Один из важных плюсов - watir всегда можно заточить под свои нужды при помощи ООП, доступного в ruby в отличии от selemium.
Поэтому мой совет, берите ruby и забудьте про selenuim как про страшный сон =).

Не надо путать тёплое с мягким.
Ruby и Java -- это языки программирования. Selenium и Watir -- драйверы пользовательского интерфейса.
Можно писать на Ruby и использовать для доступа к браузеру Selenium.
Но даже если выбрать не Ruby, а Java или .Net или Python (а селен поддерживает их все), ООП и прочие прелести программирования всё равно останутся при вас.

Напротив, на Ruby (да и на любом другом "богатом") языке программирования гораздо легче написать трудночитаемый и трудносопровождаемый код, чем на "строгих" языках типа Java или .Net
Надо помнить, что размер кода -- не главное, а меньше -- не значит проще.

Да, Selenium 1.0 работает медленнее -- потому что архитектура такая, расплата за универсальность (любые языки, любые браузеры, расширяемая система команд), за возможность удалённого запуска.
Selenium 2.0 (то есть WebDriver) работает примерно с такой же скоростью, что и "честный" режим запуска Watir, потому что технологии работы с браузером схожие. Более того, Watir имеет планы полностью перейти на использование WebDriver внутри.
У Watir есть специальные "быстрые" режимы запуска, хотя и не очень "честные" -- при этом отрабатывают не все события. Selenium 2.0 пока имеет только "честный" способ запуска.


Под прелястями ООП программирования в ruby + watir я лишь хотел указать, то что, ядро драйвера полностью доступно для разработчика и в любой не стандартной ситуации может быть заточено под необходимую задачу, в отличие от драйвера селена (где бы пришлось перелопатить кучу сорцов и по сути собрать свой билд селена).

По Вашему watir не справиться с задачами которые предназначены для селена?
Я лишь написал свой пост с точки зрения того чтобы направить человека на правильный путь, т.к. самому пришлось столкнутся c селеном и его косяками. На простейшую задачу было убито уйма времени, в итоге селен так и не смог работать с простеньким фреймворком (копатся в сорцах драйвера уже просто не было времени). Могу сказать следующее, если вы будете использовать средства автоматизации для простеньких html страничек - selenium справится с этой задачей. А вот если что-то будет по сложнее придется попотеть.
В итоге, для решения поставленых задач решил попробовать связку ruby и watir и еще ни разу не пожалел, любая задача решается за пару мин.
Как резюме могу сказать: если вас интересует скорость работы, удобство написания скриптов и большие возможности языка программирования, и тестировать придется не страничку написанную аля в home page используте watir + ruby!
  • 0

#7 VitalyD

VitalyD

    Опытный участник

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 22 марта 2011 - 15:12

Как резюме могу сказать: если вас интересует скорость работы, удобство написания скриптов и большие возможности языка программирования, и тестировать придется не страничку написанную аля в home page используте watir + ruby!




троллинг?:))
  • 0

#8 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 22 марта 2011 - 15:40

Под прелястями ООП программирования в ruby + watir я лишь хотел указать, то что, ядро драйвера полностью доступно для разработчика и в любой не стандартной ситуации может быть заточено под необходимую задачу, в отличие от драйвера селена (где бы пришлось перелопатить кучу сорцов и по сути собрать свой билд селена).

Под "ядром", видимо, подразумевается "привязка" (binding) к Ruby настоящих драйверов, которые написаны на чём попало с использованием самых разнообразных технологий для разных браузеров. Если взять и почитать исходники Watir для работы с IE, можно увидеть, что доступ к нему в основном реализован через COM, но местами встречается использование AutoIt, где не хватает "стандартных" средств, местами дописаны свои кусочки на C (IEDialog.dll).

Абсолютно то же самое имеет место быть в Selenium 2.0 -- там "привязка" к Ruby технически сделана точно так же.

Но разобраться в коде Selenium действительно существенно сложнее, просто потому, что он сам сложнее -- общие части реализованы так, чтобы они могли работать со всеми поддерживаемыми браузерами. Архитектура от этого, конечно, усложняется, но зато снижается дублирование кода, проще поддерживать много браузеров. Думаете, почему Watir собирается перейти на WebDriver? Ровно потому, что не справляются с поддержкой браузеров.

По Вашему watir не справиться с задачами которые предназначены для селена?

Для большинства приложений абсолютно всё равно, что выбрать, справится и Watir, и Selenium и любой другой инструмент.
Но дьявол, как известно, кроется в деталях.

Первая неприятность будет подстерегать, когда всё таки захочется тестировать не только в IE, и тут Watir сразу начинает сдавать позиции. По настоящему много браузеров поддерживает только Selenium. Скажем, на прошлой неделе вышли новые версии FF 4.0 и IE 9.0 -- а вчера уже появилась версия Selenium 2.0b3, которая их поддерживает.

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

Вторая проблема -- события. Они не всегда срабатывают. Особенно в "быстрых" режимах. Поэтому в Watir (как, впрочем, и в Selenium 1.0) приходилось мучиться, копаться в HTML-дереве, искать нужный элемент и отправлять ему нужное событие методом fire_event (а иногда и не одно). Вот с этим Selenium 2.0 научился справляться гораздо лучше. В том числе с разными хитрыми событиями типа doubleclick, для которых в Watir вообще не предусмотрен API -- а в Selenium 2.0 предусмотрен.

Третья проблема -- распараллелирование выполнения тестов. Grid рулит однозначно, а возможность выполнения тестов в облаках -- вообще killer feature. Согласен, это уже нефункциональные характеристики, но ведь мы про скорость говорим. Параллельность даёт такую возможность ускорения, которая функциональными средствами вообще не может быть достигнута, потому что браузер не заставить работать быстрее, чем он может.

Наконец, что ни говори, а рекордер это не такая плохая штука, хотя все её ругают :) Запись линейных фрагментов (например, заполнение форм) позволяет неслабо сэкономить время. Watir за всё время существования так и не смог родить нормальный рекордер...

Так что как раз наоборот -- для класса задач, когда "любая задача решается за пару мин" можно выбирать по принципу "на чём быстро склепать на коленке", а когда речь идёт о сложных ситуациях, Selenium выигрывает.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#9 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 23 марта 2011 - 06:57

Алексей,

Вопрос читаемости кода зачастую вопрос привычки. А вообще так в Ruby как правило гораздо более читабельно все как минимум потому что ряд стандартных конструкций в разы компактнее. А бардак можно развести и на Java, главное стараться. Это не столько от языка зависит, сколько от того откуда растут руки.

Ну и камешки в огород Selenium (хотя в watir оно не сильно лучше):
1. Подход к mouse event'ам даже во втором весьма... раздражающий. Ну и даже не смотря на то что WebDriver весь из себя такой клевый - без JavaScript'а порой трудно обойтись. API для doubleclick конечно есть, но отличной работой оно не отличается. И насколько помню таки меняется. В WebDriver вообще такого вроде бы нет. Аналогично right click и еще сотни всего.
2. Динамическая типизация, опять же, зачастую бонус, особенно учитывая через какое место получаются атрибуты у WebElement и постоянную потребность кастить его в RenderedWebElement. Для Java это приводит к весьма некрасивым и громоздким конструкциям, сильно снижающим читабельность кода. Для Ruby лучше, но тоже весьма печально.
3. Что там с Grid и NUnit, например?
4. Парсить DOM ооооочень медленно. Зачастую чудовищно. Ускорить можно, но увы опять - jQuery и прочая бла бла бла со всеми вытекающими.

Облака и распараллеливание в принципе решаются сторонними инструментами. Ну или руками.

Нет, я как бы не за WatiR, просто и в Selenium не все так гладко. Опять же вот такие штуки в Selenium сделать будет несколько... затруднительно: https://github.com/j...sions/alerts.rb
  • 0

#10 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 23 марта 2011 - 09:24

3. Что там с Grid и NUnit, например?


Всё верно, NUnit просто не поддерживает параллельное выполнение тестов. Решается очень просто - заменой NUnit на MbUnit, который лишен этого недостатка.
В нашем случае даже код почти не пришлось менять.
  • 0

#11 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 23 марта 2011 - 09:53

Вопрос читаемости кода зачастую вопрос привычки. А вообще так в Ruby как правило гораздо более читабельно все как минимум потому что ряд стандартных конструкций в разы компактнее. А бардак можно развести и на Java, главное стараться. Это не столько от языка зависит, сколько от того откуда растут руки.

А кто сказал, что я что-то имею против Ruby? :) Я сам тоже на нём пишу достаточно часто, поэтому и знаю, как трудно его иногда читать :)
И Watir использую иногда, потому что API у него действительно более удобное и компактное, с этим сложно спорить.

1. Подход к mouse event'ам даже во втором весьма... раздражающий. Ну и даже не смотря на то что WebDriver весь из себя такой клевый - без JavaScript'а порой трудно обойтись. API для doubleclick конечно есть, но отличной работой оно не отличается. И насколько помню таки меняется. В WebDriver вообще такого вроде бы нет. Аналогично right click и еще сотни всего.
2. Динамическая типизация, опять же, зачастую бонус, особенно учитывая через какое место получаются атрибуты у WebElement и постоянную потребность кастить его в RenderedWebElement. Для Java это приводит к весьма некрасивым и громоздким конструкциям, сильно снижающим читабельность кода. Для Ruby лучше, но тоже весьма печально.

Согласен, этот олдскульный механизм никому не нравится. К счастью, ему готовится достойная замена -- начинайте изучать Advanced User Interactions API
RenderedWebElement уже помечен как deprecated и вероятно скоро совсем будет удалён.

3. Что там с Grid и NUnit, например?

Достоинства фреймворков для .Net -- out of scope. Предположим, что кто-нибудь наконец сделает возможность параллельного запуска (mbUnit3 обещал такую фичу) -- и тогда пожалуйста, вот вам Grid.

4. Парсить DOM ооооочень медленно. Зачастую чудовищно. Ускорить можно, но увы опять - jQuery и прочая бла бла бла со всеми вытекающими.

Да, для Selenium 1.0 это серьёзная проблема, особенно в браузерах типа IE6.
Но WebDriver, как и Watir, работает с уже распарсенным DOM браузера, так что при чтении данных никакой разницы по скорости между ними нет.
У WebDriver тормоза в другом месте -- он слишком честный при выполнении действий, зачастую это не нужно :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 23 марта 2011 - 11:49

Достоинства фреймворков для .Net -- out of scope. Предположим, что кто-нибудь наконец сделает возможность параллельного запуска (mbUnit3 обещал такую фичу) -- и тогда пожалуйста, вот вам Grid.

Ну есть несколько более годные замены для грида. Тот же TeamCity в принципе родными средствами делает все то же самое, насколько я помню.

А так да, если только IE и расти на другие не планируем, То WatiR + Ruby. Иначе нас ждут проблемы роста чудовищные.
Если расти планируем, то Selenium 2.0 + Java. А лучше вообще Selenium 2.0 + Ruby.
  • 0

#13 Dodo

Dodo

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:asd

Отправлено 26 марта 2011 - 11:19

Спасибо всем огромное! :)
  • 0

#14 saint-p

saint-p

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Алексей Валерьевич

Отправлено 29 марта 2011 - 07:12

Берите WatiJ если для вас принципиально использование Java. С IE отлично работает
  • 0

#15 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 29 марта 2011 - 07:53

Только с остальным не очень...
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных