Sikuli vs Eggplant

Был поставлен по работе перед вопросом  "Стоит ли использовать Eggplant".

Нашел хорошее описание, очень даже проливающее свет на тему:
 
http://testwarriors.blogspot.com/2012/04/comparison-report-sikuli-vs-eggplant.html
Comparison Report: Sikuli Vs Eggplant
 
Хотя проводится сравнение конкретно с Sikuli, но упоминаемые критерии, по моему привычно нескромному мнению, могут быть применены для оценки и других инструментов. Если у уважаемого All будут какие-то дополнительные комментарии, "за и против" по теме, —  прошу высказываться.

 

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

Одной из проблем был контрол, который показывал процент полосы прогресса - это какой-то старый контрол, шеридановский или вайзовский. Товарищ написал распознавалку, которая искала 100% и опрашивала небольшой диапазон координат несколько раз в секунду.

И как тут сравнить? Работает быстро, не в пример сикулям, но требует примерных координат (которые не всегда возможно получить). А в БД вообще не лазит. :)

на вопрос "стоит ли использовать" надо понимать, рассматриваете Вы какие-то альтернативы?

или хочется узнать мнение в общем?

я с eggPlant работал немного (пару лет назад), должен заметить у меня тогда были проблемы с сетью и VNC

как обстоят дела сейчас, не знаю, не пробовал

но инструмент действительно очень зависим от сети и пропускной способности + использование VNC мне не очень нравиться

это и так сказано в сравнение в линке выше

И как тут сравнить? Работает быстро, не в пример сикулям, но требует примерных координат (которые не всегда возможно получить). А в БД вообще не лазит. :)

Я в Sikuli делал так:

- отталкиваясь от заголовка окна, определял положение "начала координа", мое (0,0) для этого конкретного окна.  Чаще всего в левом верхнем углу висит какая-то приметная иконка и текст.

- потом определял Sikuli Region (прямоугольную ограниченную область) в месте, где что-то ожидалось (скажем, некоторые элементы могли появляться в довольно ограниченных прямоугольниках

- ограничивал поиск этим регионом.

Главный ответчик на форуме Sikuli RayMan такую тактику "ускорения" вполне одобряет.  

 
Самописные тулы — это для частных случаев, конечно, хорошо, но довольно часто бывает и так, что подходит что-то довольно стандартное, или стандартное-расширяемое-интегрируемое.

на вопрос "стоит ли использовать" надо понимать, рассматриваете Вы какие-то альтернативы?

или хочется узнать мнение в общем?
 

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

В принципе, VNC-подобные решения были и раньше, я работал с некоторыми еще под WinMobile, но... "изюминка" Sikuli в том, что через визуальное распознавание и эмуляцию действий мыши/клавиатуры Sikuli может работать со всевозможными дистанционными управлениями и эмуляторами, даже теми, у которых нет API-доступа, но есть экран устройства/эмулятора и принимаются мышиные-клавиатурные события-действия. Поэтому, выбрав "управляющим" Sikuli, можно интегрировать скрипт "дистанционного управления" в какое-то большее решение, а вот выбрав наоборот, специализированный VNC-инструмент, будешь связан его ограничениями (упомянутые в статье сложности запуска через командную строку только усугубляют).

Но в многокомпонетных системах возможен выбор разных альтернатив индивидуальных компонентов, может для визуальных задач кто-то еще что посоветует.

 
По второму пункту — я считаю полезным открытое обсуждение альтернатив, достоинств и недостатков разных инструментов. Подбросит мыслей.  Узнавая "за и против" других, задумаешься о том, что тебе нужно и что не нужно, узнаешь заранее о каких-то "подводных камнях" и узких местах, узнаешь, насколько подтверждается информация, прочитанная тобой в сетевых материалах — было ли такое еще у кого-то, или (даже) что-то было с точностью до наоборот.

Т.е., у вас Win+browser и мобильные устройства? (использовать линукс для ускорения тестов вам не актуально, раз всё через распознавание можете делать, а мак - а для чего мак, если это вэб?).

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

В браузере - селениум + клик по смещению (здесь чаще всего упоминают autoit и опять же sikuli), а на эмуляторах - клик по смещению. Если в вашем приложении нечего особо двигать пальцем (фреймы и т.д.), достаточно сделать несколько структур координат для разных эмуляторов - и всё. Работать будет быстро.

 

Кстати, клик по смещению клику по смещению рознь: можно кликать по абсолютым координатам или относительно окна, а можно по процентному соотношению. К примеру, вэб-страничка с меню, выпавшее меню в UIAutomation видно как единое поле, текст тоже слит воедино. Как кликнуть? От координат прямоугольника выпавшего меню очень легко получить высоты каждой позиции (20% в моём случае - да, был такой у меня случай :)), и накинуть три пиксела вниз для гарантии.

В вашем случае (если не тестировать зум - а надо ли тестирвоать зум при тестировании логики вэб-сайта?) размеры каждого эмулятора известны, процентное соотношение Left и Top контролов будет обычно близким для разных устройств...

да, вполне живой пример, подтверждаю :) на Sikuli это можно сделать если захотеть

ну из альтернатив могу назвать

Ranorex http://www.ranorex.com/support/user-guide-20/image-recognition.html (без VNC)

T Plan http://www.t-plan.com/robot/index.html (на основании VNC)

упомянутый Sikuli http://www.sikuli.org/  (без VNC)

RoutineBot http://www.routinebot.com/  (без VNC)

 

Мой личный выбор из этих всех инструментов это Sikuli.

Да, уже был бегло ознакомился с этими инструментами, встретив в поисках вот эту ссылку: http://www.testandtry.com/2010/02/01/5-great-automation-tools-based-on-image-recognition/

Пришел к тем же выводам.

В браузере - селениум + клик по смещению (здесь чаще всего упоминают autoit и опять же sikuli), а на эмуляторах - клик по смещению. Если в вашем приложении нечего особо двигать пальцем (фреймы и т.д.), достаточно сделать несколько структур координат для разных эмуляторов - и всё. Работать будет быстро.

Кстати, клик по смещению клику по смещению рознь: можно кликать по абсолютым координатам или относительно окна, а можно по процентному соотношению. К примеру, вэб-страничка с меню, выпавшее меню в UIAutomation видно как единое поле, текст тоже слит воедино. Как кликнуть? От координат прямоугольника выпавшего меню очень легко получить высоты каждой позиции (20% в моём случае - да, был такой у меня случай :)), и накинуть три пиксела вниз для гарантии.

 
За идею с масштабируемым кликом по смещению — спасибо. 
 
Насчет "двигать пальцем", то я писал такие функции на Python/Jython в Sikuli. В библиотеке Sikuli присутствуют низкоуровневые функции управления мышью и клавиатурой ( Low-level Mouse and Keyboard Actions ), через них можно (и довольно несложно) расписать движение пальцем в нужном формате —  и медленное как для прокрутки-скролла, и "смахивающее" как для swipe/flick и как там их еще называют.
 
Не знаю, присутствует ли в AutoIt возможность написать свои функции движения мышью, возможно кто-то более опытный в этом продукте просветит.
 

Раньше в AutoIt рекордер был, даже два разных: один в полной версии редактора SciTe, второй - где ещё. Сейчас их нет (писал другой человек, почему-то убрали из поставки продукта). Наверное, можно найти старую версию или этот плагин отдельно.