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 Сразу много кода с устными комментариями