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

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

Ответы [ 12 ]

20 голосов
/ 24 января 2010

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

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

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

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

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

10 голосов
/ 05 февраля 2011

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

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

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

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

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

9 голосов
/ 17 февраля 2010
3 голосов
/ 07 января 2012

Для автоматизации тестирования 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 голосов
/ 04 апреля 2011

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

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

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

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

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

3 голосов
/ 03 марта 2010

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

0 голосов
/ 02 ноября 2018

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

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

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

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

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

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

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

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

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

0 голосов
/ 29 декабря 2016

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

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

0 голосов
/ 15 марта 2013

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

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

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

0 голосов
/ 04 октября 2012

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

...