Sikuli Script
Идеальный инструмент для начальной
автоматизации силами Manual QA
Как обучить программированию с нуля
а) Дефицит квалифицированных сотрудников на рынке труда
б) Повышение квалификации
в) Повышение лояльности сотрудников
г) Повышение ценности сотрудников для потенциальных заказчиков
д) Group/Resource management
е) Поддержание концепции "Universal Soldier"
И зачем?
Как обучить программированию с нуля
Самое сложное в изучении любой новой области – усвоение базовых понятий.
Для эффективного решения этой основополагающей задачи необходимо
разработать программу, которая бы соответствовала следующим
требованиям:
Простота (мы ведь начинаем с нуля, не стоит считать логарифмы на
первом уроке алгебры)
Наглядность (для базовых понятий особенно важна возможность
ассоциировать их с уже знакомыми объектами)
Максимальная широта применения полученных знаний (ведь именно
разнообразие открывающихся возможностей максимально стимулирует
продолжать изучение)
Всем этим критериям должен также соответствовать выбранный для обучения
инструмент
Концепция
Sikuli script – идеальный инструмент обучения
Собственная Sikuli-IDE позволит создать
полноценный скрипт даже человеку, вообще не
знакомому с программированием
Скрипт выглядит как последовательность действий
с прикрепленными изображениями, что повышает
юзабилити и интуитивность
Есть идея? Есть Sikuli-Script! Почему бы не
автоматизировать рутинные задачи в работе, дома,
удивить друзей "фокусами" автоматизации
Это
визуальная технология для автоматизированного
тестирования графического пользовательского интерфейса
при помощи изображений на базе системы распознавания
образов (image recognition technology).
Идеально вписывается в нашу концепцию:
Простота
Наглядность
Широта применения
Программа обучения
Учебная концепция должна быть:
Легкой
(усвоение базовых понятий сложный процесс, требующий
максимального упрощения … иначе у большинства учеников опустятся руки
или того хуже, выработается негативный «условный рефлекс»)
Прикладной
(в идеале, ученик должен с первого занятия не только видеть
гипотетическую, но и получать реальную непосредственную пользу для
подстегивания желания продолжать изучение)
Забавной
(усвоение базовых понятий очень сложный процесс, который, по
возможности, следует разбавить весельем)
Game-ифицированной
(существует множество исследований, кроме
самоочевидности основанной на детских воспоминаниях
, доказывающих
эффективность Game-ификации в обучении)
Программа обучения
Подача в форме, предполагающей:
Творчество/Креативность
(что соответствует базовым инстинктам и
физическим законам)
Визуализацию результатов
(визуализация чего угодно
– mainstream, в том
числе в сфере разработки программного обеспечения)
Наглядность прогресса
(механизм обратной связи должен быть
максимально простым в использовании, как для
ученика, так и для учителя)
Соревновательное начало
(всегда приятно поделиться своими успехами,
услышать слова одобрения друзей и близких, почувствовать укол
уязвленного самолюбия)
Программа обучения
Правила учебного процесса:
Повторяемость
(повторяемость необходимое условие эффективности
любого процесса)
Масштабируемость
(процесс должен быть универсальным, как для одного
ученика, так и для десятков)
Адаптируемость
(процесс должен быть легко адаптируем как для данной
аудитории, так и конкретного ученика)
Наш опыт
Тренинги помогли нам:
Повысить качество работы BA (Для эффективной работы аналитику часто
необходимо иметь хотя-бы базовые знания и навыки в программировании,
сотрудники, прошедшие тренинг гораздо увереннее чувствуют себя при
общении с заказчиком, задают "правильные" вопросы и добиваются
"правильных" ответов)
Иметь задел Universal-QA специалистов (Универсальные сотрудники,
способные покрыть широкий спектр задач = широкий спектр проектов)
Раскрыть для особенно мотивированных сотрудников новую возможность для
развития карьеры (Предоставление дерева возможностей дополнительно
мотивирует и повышает лояльность)
Sikuli в деталях
Автоматизация любых действий с любыми объектами
на экране (клики, сочетания клавиш, ввод текста,
drag&drop)
Проверка наличия какого-либо изображения (объекта)
на экране
Отслеживание появления/исчезновения изображений
на экране
Ожидание появления/исчезновения изображений на
экране
Возможности Sikuli:
Sikuli в деталях
Автоматизация тестирования в случаях, когда нет
доступа к исходному коду приложения
Автоматизация действий, предполагающих
распознавание изображений
Автоматизация прикладных и/или рутинных задач
невысокой сложности
Для чего можно использовать Sikuli:
Начало работы
Для работы с Sikuli-IDE необходимо установить:
Java SE Development Kit 7u45
- бесплатно
распространяемый комплект разработчика
приложений на языке Java компании Oracle
Corporation;
Sikuli-IDE
- интегрированная среда разработки
для написания скриптов с использованием
скриншотов.
Установка
Java SE Development Kit 7u45
Скачать и установить необходимую JDK:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-
downloads-1880260.html
Выбрать пункт:
Accept License Agreement
Установка Sikuli-IDE
1. Перейти на сайта производителя и
кликнуть по ссылке sikuli-setup.jar:
http://www.sikuli.org/download.html
Установка Sikuli-IDE
2. Скачать файл sikuli-setup.jar:
Установка Sikuli-IDE
3. Запустить скаченный файл “runSetup” и
выбрать пункт №1:
Главное окно Sikuli-IDE
Базовый синтаксис
find(image)
Находит на экране объект, соответствующий изображению,
передаваемому в виде параметра
Здесь будет скриншот из IDE с оператором
Базовый синтаксис
click(image)
Совершает левый клик по объекту на экране, соответствующему
изображению, передаваемому в виде параметра
Здесь будет скриншот из IDE с оператором
Базовый синтаксис
doubleClick(image)
Совершает двойной левый клик по объекту на экране,
соответствующему изображению, передаваемому в виде
параметра
Здесь будет скриншот из IDE с оператором
Базовый синтаксис
rightClick(image)
Совершает правый клик по объекту на экране, соответствующему
изображению, передаваемому в виде параметра
Здесь будет скриншот из IDE с оператором
Базовый синтаксис
type(text)
Производит клавиатурный ввод текста, без привязки к
графическому элементу (если требуется ввести текст в
конкретное поле, сначала необходимо произвести клик по этому
полю)
Здесь будет скриншот из IDE с оператором
Демо!
Дополнительные возможности
Дополнительные действия мыши:
hover(image) – "зависание" курсора над
объектом. Может пригодиться, например, если
при зависании появляется меню
dragDrop(image,image) – перетаскивание объекта.
Параметром передаются изображение объекта,
который необходимо перетащить и места, в
которое необходимо его перетаскивать
Дополнительные возможности
Поиск и ожидание
exists(image) – проверяет наличие объекта на
экране
findAll(image) – находит все объекты,
соответствующие изображению (одинаковые
ярлыки, кнопки и т.п.)
wait(image) / waitVanish(image) – ожидает
появления / исчезновения объекта
Дополнительные возможности
Циклы и проверки реализованы python-style:
Условный оператор:
if <an expression to test>:
perform an action
elif <an expression to test>:
perform another action
else:
perform a different action
Цикл while:
while <expression>
perform operation
Цикл for:
for <each value in this defined set>:
perform suite of operations
Автоматизируем прикладные задачи
Сменить статус в скайпе
Очистить корзину
Зайти через браузер на почтовый ящик
Подключиться к удаленному рабочему столу
Selenium Web Driver + Sikuli API
Sikuli API это подключаемая библиотека java, которая
позволяет использовать все возможности Sikuli-script в
рамках java-проекта
Далее будет много кода с устными пояснениями
и комментариями
Sikuli Web-Driver (Firefox)
Sikuli Web-Driver это расширение Selenium Web Driver (Firefox
driver), с добавлением возможностей Sikuli по распознаванию
изображений
Использовать Sikuli Web-Driver удобно, например, при работе с
графическими объектами на основе Canvas или JavaScript.
Например, при работе с картами или динамическими графиками
Снова много кода с комментариями
Как создать свой собственный Sikuli Web
Driver с Хромом и Эксплорером
Сразу много кода с устными комментариями
Расширение возможностей Selenide с
помощью Sikuli API
Сразу много кода с устными комментариями
Sikuli Script - идеальный инструмент для обучения автоматизации