it-swarm.com.ru

Кто-нибудь использовал SIKULI для тестирования своих приложений на основе GUI?

SIKULI , кажется, обладает огромным потенциалом. Кто-нибудь пытался использовать это как инструмент для тестирования? Или лучше подойдет для автоматизации действий пользователей?

39
Michael Balint

Цитирование Юнит тестирование для GUI (в проекте Документация ):

Sikuli предназначен для поддержки модульного тестирования графического интерфейса путем интеграции с junit. Панель модульного тестирования можно открыть, щелкнув View/Unit Test или ярлык Cmd-U на Mac (или Ctrl-U в Windows/Linux). 

Итак, хотя я понимаю, что SIKULI изначально нацелен на автоматизацию GUI, он определенно может быть использован для тестирования GUI (что тесно связано, если учесть, что тестирование GUI = автоматизация GUI + структура верификации). Посмотрите на Модульное тестирование для GUI (JEdit) для полного примера (и посмотрите assertXXX на изображениях). 

И действительно, я вижу большой потенциал в SIKULI для тестирования, поскольку кажется, что он очень облегчает написание тестов, даже без написания ни одной строки реального приложения (например, просто с использованием некоторых начальных макетов). SIKULI может стать отличным компаньоном для различных видов тестирования (BDD, приемочное тестирование и т.д.).

Это действительно потрясающее программное обеспечение, очень впечатляющее.

20
Pascal Thivent

Я широко использую Sikuli для автоматизации тестирования пользовательского интерфейса. Я «опоздал» на вечеринку Sikuli, обнаружив ее в январе 2011 года. Я действительно рад, что обнаружил ее поздно, потому что, хотя она была многообещающей ранее, я не думаю, что до Sikuli x1.0-rc1 (что произошло в декабре ) было выпущено, что он был готов к прайм-тайм.

Ранее я использовал TestQuest и EggPlant для автоматизации тестирования пользовательского интерфейса. На мой взгляд, Sikuli бьет их обоих руками вниз. Я искренне верю, что у него есть потенциал, чтобы кардинально изменить то, как люди выполняют автоматизацию тестирования пользовательского интерфейса, к лучшему, и буду распространять его среди окружающих.

Правильное использование Sikuli означает, что вы not придерживаетесь модели «запись и воспроизведение». Скорее, вы должны подходить к разработке автоматизации тестирования с помощью Sikuli - как вам нужно со всеми инструментами - в качестве задачи разработки программного обеспечения.

В настоящее время мы занимаемся переносом DSL автоматизации пользовательского интерфейса (Domain Specific Language), который мы создали для EggPlant, в Sikuli. Одной из ключевых функций, которые мы будем использовать в DSL, являются возможности распознавания текста Sikuli. Это позволит нам запускать один и тот же сценарий для разных локализованных версий нашего продукта.

Поскольку Sikuli основан на OpenCV (для распознавания изображений) и tesseract-ocr (для распознавания текста) , он обладает невероятной мощностью и гибкостью.

10
Jordan Dea-Mattson
9
nabs

Записал рабочий процесс с помощью веб-приложения Flex. Потребовалось время, чтобы найти надежную стратегию создания скриншотов, но как только я это сделал, скрипт продолжал работать даже после того, как я изменил цветовую схему своего рабочего стола! Синтаксис становится немного неловким, хотя, когда вам нужно щелкнуть конкретный элемент управления в наборе похожих элементов управления, то есть флажки, поля ввода. Похоже, единственный способ сделать это - использовать find() в сочетании с right(); left(); inside(). Похоже, чем меньше скриншоты, тем надежнее они обнаружены. По моему мнению, хорошей практикой будет включать в скриншоты только важные объекты и делать их как можно более атомарными, но без ущерба для их уникальности.

3
ccpizza

Чтобы автоматизация тестов Sikuli была менее ориентированной на разработчиков, также посетите сайт RobotFramework.org. Там есть учебник о том, как сделать (настраиваемую) тестовую библиотеку Sikuli для Robot Framework

http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html

и я создал простую общую версию, а также 

http://code.google.com/p/simplesikuli

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

3
David

@jordan, Абсолютная точка зрения на «Правильное использование Sikuli» означает, что вы не следуете модели «запись и воспроизведение». Скорее, вы должны подходить к разработке автоматизации тестирования с помощью Sikuli - как вам нужно со всеми инструментами - в качестве задачи разработки программного обеспечения.

Я создал комплексное решение для автоматизации тестирования приложений для видеоконференций, созданное крупнейшим в мире производителем ПК. Они не понимали, что это полный проект разработчика, а не операция «укажи и щелкни», которую может выполнить любая обезьяна. Попытка объяснить проблемы кодирования с помощью динамически типизированного языка была невозможна.

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

Использование IDE имеет решающее значение, поскольку Sikuli IDE не имеет и инструментов разработки. У двух IDE, которые я настроил, NetBeans и Eclipse/PyDev есть свои проблемы. Они отлично подходят для кодирования, однако ложные ошибки, внедрение пробела и потеря кода делают оба решения не идеальными. Я кодирую и тестирую в NetBeans, выполняю в SikuliIDE и сохраняю все в блокноте как резервную копию.

Несмотря на любые трудности, я большой сторонник Сикули. Sikuli может изменить автоматизацию тестирования, сделав ее доступной для всего сообщества QA без необходимости быть OO кодером.

3
Surfdork

Я только что опубликовал свой собственный фреймворк для тестирования приложений GUI, используя Skikuli + RobotFramework.

SikuliFramework предоставляет объектно-ориентированную абстракцию поверх Sikuli, чтобы помочь с взаимодействующими элементами GUI, такими как наборы кнопок, флажков, переключателей, окон и диалоговых иерархий для автоматизации и тестирования GUI. Он также тесно интегрирован с RobotFramework.

https://github.com/smysnk/sikuli-framework

0
smysnk

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

И Sikuli покрывает только визуальную часть тестируемого. Он понятия не имеет, действительно ли внутреннее состояние соответствует ожидаемому. 

0
smwikipedia

Вот мой взгляд на удивительность Sikuli для автоматизации тестирования: http://pculture.org/devblogs/mirotesting/2011/06/24/using-sikuli-to-automate-miro-testing/

У меня есть надежный кроссплатформенный набор тестов для Miro.

0
janet-PCF

Я фанат Sikuli и считаю, что он дополняет другие тесты и может сэкономить большую часть усилий по ручному тестированию.

Однако, чтобы понять все правильно, требуется время…. ​​Я сделал второй снимок за два года, и во второй раз мне удалось добиться хороших результатов, так как я был лучше знаком с окружающей средой.

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

Самая большая проблема в том, что записанные тесты часто дают сбой, если вы просто запускаете их на другом компьютере, а не на том, на котором они были записаны. Это может быть связано с сопоставлением шаблонов на основе сравнения изображений. Можно повысить вероятность совпадения, указав значения допуска. Но иногда становится раздражающим продолжать изменять толерантность. Я рекомендую использовать другой набор образов на разных платформах и предпочтительно запускать его на одной машине или виртуальной машине.

Если у вас есть общий набор рабочих процессов, вы можете создать библиотеку этих общих функций, таких как (открыть-закрыть-сохранить проект, изменить настройки) и использовать их в разных сценариях. Это становится очень простым, поскольку библиотека становится всеобъемлющей. Это также означает, что вам придется менять сценарий только в одном месте, и это будет отражаться во всех сценариях.

Я также создал простую структуру (image attach) для запуска тестов и записи результатов с использованием C # .Net. Можно создать что угодно для создания простого тестового приложения. Просто нужно запустить тест из командной строки и проверить результаты .  enter image description here

Я работал в небольшой команде, в которой у нас были ограниченные ресурсы для тестирования. С Sikuli я фактически сэкономил усилия существующей команды QA, а также помог мне поймать ошибки, прежде чем выдвинуть их на главную.

Я рекомендовал Sikuli членам других команд в моей компании, и они используют его для создания набора данных для моделей ML. Они сделали это, автоматизировав свое приложение Engg с параметрами.

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

0
ashish

Я использовал sikuli для тестирования GUI, также я смог интегрировать его с HUDSON.

0
Santosh

На самом деле я пишу рамки для тестирования GUI/обработки ошибок с Sikuli. Это великолепно.

0
Snaxib