SlideShare a Scribd company logo
15 ДЕКАБРЯ 2016
COMAQA BIRTHDAY 2016
Автоматизация
CANVAS:
сложно, но
возможно
Марта Веренчикова
Компания
 Applied Systems Ltd.
Позиция
 QA Engineer (веб-проекты)
Опыт
 в IT: 1+
 в автоматизации: курсы Академии ПВТ,
начата работа над первым тестовым проектом
Stack технологий
 Java + Selenium WebDriver
О ДОКЛАДЧИКЕ
СОДЕРЖАНИЕ
Canvas: маленький
элемент с
характером
1
2 подхода – 2
прототипа
2
Selenium vs
SikLenium: кто
победит?
3
Вместо эпилога:
уроки, лайфхаки,
next steps
4
Arrange
Act
Assert
СТРУКТУРА ТЕСТОВ
 пред- и пост-условия
 поиск элемента
 взаимодействие с элементом
 проверка
(сравнение поведения – actual vs
expected)
Координатный
подход
Использование DOM-
структуры
Распознавание
изображений
ПОДХОДЫ К ПОИСКУ ВЕБ-ЭЛЕМЕНТОВ НА СТРАНИЦЕ
Canvas – «безDOM-ный» элемент
<canvas height="1256" width="3584" style="position: absolute; width: 1792px; height:
628px; left: -128px; top: -128px;"></canvas>
CANVAS: В ЧЕМ ПРОБЛЕМА?
 визуализация
состояния складских
помещений
 html5, canvas
(библиотека fabric.js)
 до 170 «объектов» в 1
canvas-е
 > 50 оттенков и текстур
 сложное поведение
«объектов» в canvas-е
(click, hover и пр.)
СПЕЦИФИКА ПРОЕКТА (1)
Реакция на hover
Реакция на click и
hover
СПЕЦИФИКА ПРОЕКТА (2)
СПЕЦИФИКА ПРОЕКТА (3): ТРЕБОВАНИЯ К
ИСПОЛЬЗОВАНИЮ ВЕБ-ПРИЛОЖЕНИЯ
OS
Разрешение
экрана
Браузер
Полноэкранный
режим
Windows 7
и выше
1920×1280 Google Chrome F11
ЦЕЛИ ИССЛЕДОВАНИЯ
Общие:
 выбрать оптимальный
подход к поиску,
взаимодействию и
проверке объектов
внутри canvas
 подобрать
инструментарий,
позволяющий выполнить
«поиск-взаимодействие-
проверку»
Проектные:
 покрыть авто-тестами
наиболее сложный
«функционал»
Что интересовало:
 трудозатраты на
разработку и поддержку
 стабильность
выполнения
 скорость выполнения
 масштабируемость
 координатный подход
Прототип #1
 распознавание
изображений
Прототип #2
 API библиотеки fabric.js
 WebDriver API
Прототип #1 + Прототип #2
 изменения в html-
верстке через
WebDriver API
Прототип #1 + Прототип #2
 сравнение
изображений
Прототип #1 + Прототип #2
Поиск Взаимодействие Проверка
ПРОВЕРКА
РАЗРАБОТКА ПРОТОТИПА (1): ВЫБОР ПОДХОДА
ПОИСК ВЗАИМОДЕЙСТВИЕ
РАЗРАБОТКА ПРОТОТИПА (2): ВЫБОР ТЕСТОВЫХ
СЦЕНАРИЕВ
Тесты атомарны и полностью независимы
Общая часть Тест #1 Тест #2 Тест #3
1. Переход по URL
3. Проверка
состояния canvas
без
взаимодействия
3. Клик по
«целевой» ячейке
внутри canvas
3. Клик по
«целевой» ячейке
внутри canvas
2. Смена
цветового режима
4. Проверка
соответствия
параметров
внутри таблицы с
данными внутри
«целевой» ячейки
4. Проверка
состояния canvas
после
взаимодействия
Реакция на hover
Реакция на click и hover
РАЗРАБОТКА ПРОТОТИПА (3): ВЫБОР ИНСТРУМЕНТА
Selenuim WebDriver SikuliXvs
РАЗРАБОТКА ПРОТОТИПА (4): ОТЛИЧИЯ ПРОТОТИПОВ
Прототипы разрабатывались
тестировщиками одного уровня
Действие Selenium SikLenium
Поиск «объектов» в canvas по координатам
по изображению
(класс Region, SikuliX)
Взаимодействие (click) WebDriver API (класс Actions)
Сравнение данных в
таблице WebDriver API
Получение «actual»
изображений интерфейс TakeScreenshot
–
(«на лету»)
Сравнение с «expected»
изображениями
класс PixelGrabber
(java.awt.image)
класс Region (SikuliX)
РАЗРАБОТКА ПРОТОТИПА (5): ТЕСТОВОЕ ОКРУЖЕНИЕ
Параметр Selenium SikLenium
Language Java (JDK v.1.8.9_92)
IDE Intellij IDEA 2016.2.4
Build-instrument Maven v.3.3.9
Browsers and Drivers
Google Chrome v. 54.0.2840
chromedriver.exe (v.2.25)
Plug-ins, add-ons FireBug + FirePath (Mozilla Firefox should be installed)
Test Framework TestNG (v.6.9.10)
External Libraries
(via POM-file dependencies)
selenium-java (v.2.53.1) selenium-java (v.2.53.1)
sikulixapi.jar (v.1.1.0)
Reporting Allure
РАЗРАБОТКА ПРОТОТИПА (6): ПОДГОТОВКА ДАННЫХ
Данные Selenium SikLenium
Координатная сетка + -
«Базовые» скриншоты
X шт.
(сравнение)
2X шт.
(поиск + сравнение)
html-локаторы общие локаторы (.property-файл)
Значения параметров в
таблице список констант (@DataProvider)
РАЗРАБОТКА ПРОТОТИПА (7): АРХИТЕКТУРА
ТЕСТОВОГО ПРОЕКТА
Prototype Selenium Prototype SikLenium
Отличия:
 «статический» (Selenium) vs «динамический» (SikLenium) Canvas Page Element
 дополнительные helper-классы (Selenium)
 накопление «actual» изображений (Selenium)
РАЗРАБОТКА ПРОТОТИПА (8): ЗАПУСК ТЕСТОВ
 mvn clean test site
 последовательно, не
параллельно
 конфигурирование –
через параметры
аннотации @Test
МЕТРИКИ (1): СРЕДНЕЕ ВРЕМЯ ВЫПОЛНЕНИЯ ТЕСТА, С
 1 тест – 100 запусков
 100% passed (оба прототипа)
 время выполнения Test Suite: 41.23 мин (Selenium) и 41.82 мин (SikLenium)
МЕТРИКИ (2): ТЕНДЕНЦИЯ РОСТА ВРЕМЕНИ
ВЫПОЛНЕНИЯ ТЕСТОВ ПРИ УВЕЛИЧЕНИИ НАГРУЗКИ
С увеличением нагрузки на машину (CPU Usage, Physical
Memory) наблюдается тенденция к росту времени выполнения
тестов
Test Name Selenuim SikLenium
Test #1 Passed – 100% Passed – 100%
Test #3
Passed – 100% Passed – 20%
Failed – 80%
МЕТРИКИ (3): ПРОХОЖДЕНИЕ FALSE-POSITIVE
ПРОВЕРКИ
 Test #1, Test #3
 «ложный» expected image
 1 тест – 100 запусков
 similarity = 0.99
Test Name Selenuim vs Manual SikLenium vs Manual
Test #1
98.4% 98.4%
Test #2 67.2% 68.6%
Test #3 64.2% 60.9%
МЕТРИКИ (4): ВЫИГРЫШ ПО ВРЕМЕНИ ПРИ
ВЫПОЛНЕНИИ ТЕСТОВ (MANUAL VS AUTOMATION)
СРАВНЕНИЕ ПРОТОТИПОВ (1)
Параметр Selenium SikLenium
Время разработки прототипа (ч) X 2X
«Базовые» скриншоты X шт. 2X шт.
Расчет координатной сетки да нет
«Сторонние» библиотеки -
sikulixapi.jar (v.1.1.0)
Необходимость разработки
методов получения и сравнения
скриншотов
да нет
Скорость выполнения тестов схожие значения для обоих подходов
Стабильность выполнения все хорошо до определенных значений нагрузки
Надежность выполнения (false-
positive tests)
все «ложные» проверки пройдены
зависит от similarity, «ложного»
скриншота и «ожидалок»*
Трудозатраты на обновление
зависит от «изменяемой» части
(поведение, цвет, форма и расположение и пр.)
Масштабируемость (в рамках
приложения)
зависит от тестируемой страницы приложения*
СРАВНЕНИЕ ПРОТОТИПОВ (2)
Параметр Selenium SikLenium
Зависимость от разрешения
экрана да*
Зависимость от уровня
zoom браузера да
Формат скриншотов .png (по умолчанию), .jpg (также работает)
Глубина цвета изображения 24-bit (по умолчанию), 32-bit (также работает)
Размер изображения (в пк) 2 сравниваемых скриншота должны быть одного размера
Разрешение изображения
(dpi) 96 DPI (использовался для 2 прототипов)
Влияние наличия
«идентичных» элементов
на экране
нет
возможно*
Возможность управления
точностью сравнения
изображений
нет
да
(similarity)
 setup необязателен (via
POM-файл)
 «коварная» similarity
 документация – хорошо,
но FAQ – порою лучше
 название image-файлов
без символа «_» и пр.
 driver.manage().window().
fullscreen() не работает
в ChromeDriver
 настройки компа: front
size, DPI и пр.
SikuliX Selenium
WebDriver
General
GENERALSIKULIX SELENIUM
WEBDRIVER
НАБИТЫЕ ШИШКИ
Трудности Selenium:
 разработка методов для
работы со скриншотами
 координатная сетка
Трудности SikLenium:
 дополнительные
зависимости (SikuliX,
OpenCV)
 сложность работы с
similarity
1 2 3
ВЫВОДЫ (1)
Оба подхода:
 имеют ряд недостатков
и ограничений
 требуют заготовки (и
обновления) «expected»
изображений (! в разном
объеме)
Для условий нашего
проекта мы выбрали
прототип Selenium
(координаты +
взаимодействие via
WebDriver API +
сравнение скриншотов
и изменений в html).
Учитывая
 возникшие сложности
(влияет на t разработки)
 специфику сравнения
изображений с параметром
similarity (надежность
результатов ???)
 общность проблем
(зависимость от screen
resolution и пр.)
 отсутствие очевидного
выигрыша по времени у
какого-либо из подходов
 возможность
переиспользования
координатной сетки (с/без
коэффициентов)
 невозможность предугадать,
какие изменения наиболее
вероятны
ВЫВОДЫ (2)
ИСПОЛЬЗУЕМЫЕ МАТЕРИАЛЫ
 Тестирование приложений на Canvas: рецепты на примере тестирования
API Яндекс.Карт (https://habrahabr.ru/company/yandex/blog/177163/)
 Тестирование безDOMных объектов современных веб-интерфейсов. SQA
Days12 (https://www.youtube.com/watch?v=aLUXFcYKq2Y)
 Тестируем Canvas c помощью Sikuli Script и Selenium WebDriver
(http://www.slideshare.net/ISsoft/html5-canvas-sikuli-selenium-2-web-driver)
 Visual vs. DOM-Based Web Locators: An Empirical Study (14th International
Conference, ICWE 2014)
 Visual GUI Testing: Automating High-Level Software Testing in Industrial Practice
(2015) (http://publications.lib.chalmers.se/records/fulltext/221145/221145.pdf)
 Практическое применение Sikuli Script в автоматизации тестирования. SQA
Days16 (https://comaqa.by/2016/06/02/sikuli-script-sqadays16/)
 Библиотека fabric.js (http://fabricjs.com/)
 Информация о SikuliX (http://sikulix.com/ и http://sikulix-
2014.readthedocs.io/en/latest/index.html)
Спасибо за
внимание!
Контакты
Skype: marta_verenchikova
Email:
marta.verenchikova@gmail.com
LinkedIn:
https://www.linkedin.com/in/verenc
hikova/en

More Related Content

Similar to Automating Canvas: difficult but possible

Vladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testingVladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testing
Ievgenii Katsan
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияArseny Zarechnev
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
COMAQA.BY
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
SQALab
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)
Dmitry Lobasev
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov seleniumqasib
 
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Yandex
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияArseny Zarechnev
 
Фреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силамиФреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силами
SQALab
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
Ontico
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIautomated-testing.info
 
Решения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе SeleniumРешения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе Selenium
SQALab
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизни
z-tech
 
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
jazzteam
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
solit
 
Автоматический контроль качества front-end-содержимого
Автоматический контроль качества front-end-содержимогоАвтоматический контроль качества front-end-содержимого
Автоматический контроль качества front-end-содержимогоMedia Gorod
 

Similar to Automating Canvas: difficult but possible (20)

Vladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testingVladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testing
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложения
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov selenium
 
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложения
 
Фреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силамиФреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силами
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
 
Selen framework
Selen frameworkSelen framework
Selen framework
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UI
 
Решения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе SeleniumРешения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе Selenium
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизни
 
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
 
Автоматический контроль качества front-end-содержимого
Автоматический контроль качества front-end-содержимогоАвтоматический контроль качества front-end-содержимого
Автоматический контроль качества front-end-содержимого
 

More from COMAQA.BY

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
COMAQA.BY
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
COMAQA.BY
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
COMAQA.BY
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
COMAQA.BY
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
COMAQA.BY
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
COMAQA.BY
 
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
COMAQA.BY
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
COMAQA.BY
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
COMAQA.BY
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
COMAQA.BY
 
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
COMAQA.BY
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликте
COMAQA.BY
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиков
COMAQA.BY
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смерть
COMAQA.BY
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестов
COMAQA.BY
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачами
COMAQA.BY
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьором
COMAQA.BY
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSource
COMAQA.BY
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testing
COMAQA.BY
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, java
COMAQA.BY
 

More from COMAQA.BY (20)

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
 
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
 
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликте
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиков
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смерть
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестов
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачами
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьором
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSource
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testing
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, java
 

Automating Canvas: difficult but possible

  • 1. 15 ДЕКАБРЯ 2016 COMAQA BIRTHDAY 2016 Автоматизация CANVAS: сложно, но возможно
  • 2. Марта Веренчикова Компания  Applied Systems Ltd. Позиция  QA Engineer (веб-проекты) Опыт  в IT: 1+  в автоматизации: курсы Академии ПВТ, начата работа над первым тестовым проектом Stack технологий  Java + Selenium WebDriver О ДОКЛАДЧИКЕ
  • 3. СОДЕРЖАНИЕ Canvas: маленький элемент с характером 1 2 подхода – 2 прототипа 2 Selenium vs SikLenium: кто победит? 3 Вместо эпилога: уроки, лайфхаки, next steps 4
  • 4. Arrange Act Assert СТРУКТУРА ТЕСТОВ  пред- и пост-условия  поиск элемента  взаимодействие с элементом  проверка (сравнение поведения – actual vs expected)
  • 6. Canvas – «безDOM-ный» элемент <canvas height="1256" width="3584" style="position: absolute; width: 1792px; height: 628px; left: -128px; top: -128px;"></canvas> CANVAS: В ЧЕМ ПРОБЛЕМА?
  • 7.  визуализация состояния складских помещений  html5, canvas (библиотека fabric.js)  до 170 «объектов» в 1 canvas-е  > 50 оттенков и текстур  сложное поведение «объектов» в canvas-е (click, hover и пр.) СПЕЦИФИКА ПРОЕКТА (1)
  • 8. Реакция на hover Реакция на click и hover СПЕЦИФИКА ПРОЕКТА (2)
  • 9. СПЕЦИФИКА ПРОЕКТА (3): ТРЕБОВАНИЯ К ИСПОЛЬЗОВАНИЮ ВЕБ-ПРИЛОЖЕНИЯ OS Разрешение экрана Браузер Полноэкранный режим Windows 7 и выше 1920×1280 Google Chrome F11
  • 10. ЦЕЛИ ИССЛЕДОВАНИЯ Общие:  выбрать оптимальный подход к поиску, взаимодействию и проверке объектов внутри canvas  подобрать инструментарий, позволяющий выполнить «поиск-взаимодействие- проверку» Проектные:  покрыть авто-тестами наиболее сложный «функционал» Что интересовало:  трудозатраты на разработку и поддержку  стабильность выполнения  скорость выполнения  масштабируемость
  • 11.  координатный подход Прототип #1  распознавание изображений Прототип #2  API библиотеки fabric.js  WebDriver API Прототип #1 + Прототип #2  изменения в html- верстке через WebDriver API Прототип #1 + Прототип #2  сравнение изображений Прототип #1 + Прототип #2 Поиск Взаимодействие Проверка ПРОВЕРКА РАЗРАБОТКА ПРОТОТИПА (1): ВЫБОР ПОДХОДА ПОИСК ВЗАИМОДЕЙСТВИЕ
  • 12. РАЗРАБОТКА ПРОТОТИПА (2): ВЫБОР ТЕСТОВЫХ СЦЕНАРИЕВ Тесты атомарны и полностью независимы Общая часть Тест #1 Тест #2 Тест #3 1. Переход по URL 3. Проверка состояния canvas без взаимодействия 3. Клик по «целевой» ячейке внутри canvas 3. Клик по «целевой» ячейке внутри canvas 2. Смена цветового режима 4. Проверка соответствия параметров внутри таблицы с данными внутри «целевой» ячейки 4. Проверка состояния canvas после взаимодействия
  • 14. РАЗРАБОТКА ПРОТОТИПА (3): ВЫБОР ИНСТРУМЕНТА Selenuim WebDriver SikuliXvs
  • 15. РАЗРАБОТКА ПРОТОТИПА (4): ОТЛИЧИЯ ПРОТОТИПОВ Прототипы разрабатывались тестировщиками одного уровня Действие Selenium SikLenium Поиск «объектов» в canvas по координатам по изображению (класс Region, SikuliX) Взаимодействие (click) WebDriver API (класс Actions) Сравнение данных в таблице WebDriver API Получение «actual» изображений интерфейс TakeScreenshot – («на лету») Сравнение с «expected» изображениями класс PixelGrabber (java.awt.image) класс Region (SikuliX)
  • 16. РАЗРАБОТКА ПРОТОТИПА (5): ТЕСТОВОЕ ОКРУЖЕНИЕ Параметр Selenium SikLenium Language Java (JDK v.1.8.9_92) IDE Intellij IDEA 2016.2.4 Build-instrument Maven v.3.3.9 Browsers and Drivers Google Chrome v. 54.0.2840 chromedriver.exe (v.2.25) Plug-ins, add-ons FireBug + FirePath (Mozilla Firefox should be installed) Test Framework TestNG (v.6.9.10) External Libraries (via POM-file dependencies) selenium-java (v.2.53.1) selenium-java (v.2.53.1) sikulixapi.jar (v.1.1.0) Reporting Allure
  • 17. РАЗРАБОТКА ПРОТОТИПА (6): ПОДГОТОВКА ДАННЫХ Данные Selenium SikLenium Координатная сетка + - «Базовые» скриншоты X шт. (сравнение) 2X шт. (поиск + сравнение) html-локаторы общие локаторы (.property-файл) Значения параметров в таблице список констант (@DataProvider)
  • 18. РАЗРАБОТКА ПРОТОТИПА (7): АРХИТЕКТУРА ТЕСТОВОГО ПРОЕКТА Prototype Selenium Prototype SikLenium Отличия:  «статический» (Selenium) vs «динамический» (SikLenium) Canvas Page Element  дополнительные helper-классы (Selenium)  накопление «actual» изображений (Selenium)
  • 19. РАЗРАБОТКА ПРОТОТИПА (8): ЗАПУСК ТЕСТОВ  mvn clean test site  последовательно, не параллельно  конфигурирование – через параметры аннотации @Test
  • 20. МЕТРИКИ (1): СРЕДНЕЕ ВРЕМЯ ВЫПОЛНЕНИЯ ТЕСТА, С  1 тест – 100 запусков  100% passed (оба прототипа)  время выполнения Test Suite: 41.23 мин (Selenium) и 41.82 мин (SikLenium)
  • 21. МЕТРИКИ (2): ТЕНДЕНЦИЯ РОСТА ВРЕМЕНИ ВЫПОЛНЕНИЯ ТЕСТОВ ПРИ УВЕЛИЧЕНИИ НАГРУЗКИ С увеличением нагрузки на машину (CPU Usage, Physical Memory) наблюдается тенденция к росту времени выполнения тестов
  • 22. Test Name Selenuim SikLenium Test #1 Passed – 100% Passed – 100% Test #3 Passed – 100% Passed – 20% Failed – 80% МЕТРИКИ (3): ПРОХОЖДЕНИЕ FALSE-POSITIVE ПРОВЕРКИ  Test #1, Test #3  «ложный» expected image  1 тест – 100 запусков  similarity = 0.99
  • 23. Test Name Selenuim vs Manual SikLenium vs Manual Test #1 98.4% 98.4% Test #2 67.2% 68.6% Test #3 64.2% 60.9% МЕТРИКИ (4): ВЫИГРЫШ ПО ВРЕМЕНИ ПРИ ВЫПОЛНЕНИИ ТЕСТОВ (MANUAL VS AUTOMATION)
  • 24. СРАВНЕНИЕ ПРОТОТИПОВ (1) Параметр Selenium SikLenium Время разработки прототипа (ч) X 2X «Базовые» скриншоты X шт. 2X шт. Расчет координатной сетки да нет «Сторонние» библиотеки - sikulixapi.jar (v.1.1.0) Необходимость разработки методов получения и сравнения скриншотов да нет Скорость выполнения тестов схожие значения для обоих подходов Стабильность выполнения все хорошо до определенных значений нагрузки Надежность выполнения (false- positive tests) все «ложные» проверки пройдены зависит от similarity, «ложного» скриншота и «ожидалок»* Трудозатраты на обновление зависит от «изменяемой» части (поведение, цвет, форма и расположение и пр.) Масштабируемость (в рамках приложения) зависит от тестируемой страницы приложения*
  • 25. СРАВНЕНИЕ ПРОТОТИПОВ (2) Параметр Selenium SikLenium Зависимость от разрешения экрана да* Зависимость от уровня zoom браузера да Формат скриншотов .png (по умолчанию), .jpg (также работает) Глубина цвета изображения 24-bit (по умолчанию), 32-bit (также работает) Размер изображения (в пк) 2 сравниваемых скриншота должны быть одного размера Разрешение изображения (dpi) 96 DPI (использовался для 2 прототипов) Влияние наличия «идентичных» элементов на экране нет возможно* Возможность управления точностью сравнения изображений нет да (similarity)
  • 26.  setup необязателен (via POM-файл)  «коварная» similarity  документация – хорошо, но FAQ – порою лучше  название image-файлов без символа «_» и пр.  driver.manage().window(). fullscreen() не работает в ChromeDriver  настройки компа: front size, DPI и пр. SikuliX Selenium WebDriver General GENERALSIKULIX SELENIUM WEBDRIVER НАБИТЫЕ ШИШКИ
  • 27. Трудности Selenium:  разработка методов для работы со скриншотами  координатная сетка Трудности SikLenium:  дополнительные зависимости (SikuliX, OpenCV)  сложность работы с similarity 1 2 3 ВЫВОДЫ (1) Оба подхода:  имеют ряд недостатков и ограничений  требуют заготовки (и обновления) «expected» изображений (! в разном объеме)
  • 28. Для условий нашего проекта мы выбрали прототип Selenium (координаты + взаимодействие via WebDriver API + сравнение скриншотов и изменений в html). Учитывая  возникшие сложности (влияет на t разработки)  специфику сравнения изображений с параметром similarity (надежность результатов ???)  общность проблем (зависимость от screen resolution и пр.)  отсутствие очевидного выигрыша по времени у какого-либо из подходов  возможность переиспользования координатной сетки (с/без коэффициентов)  невозможность предугадать, какие изменения наиболее вероятны ВЫВОДЫ (2)
  • 29. ИСПОЛЬЗУЕМЫЕ МАТЕРИАЛЫ  Тестирование приложений на Canvas: рецепты на примере тестирования API Яндекс.Карт (https://habrahabr.ru/company/yandex/blog/177163/)  Тестирование безDOMных объектов современных веб-интерфейсов. SQA Days12 (https://www.youtube.com/watch?v=aLUXFcYKq2Y)  Тестируем Canvas c помощью Sikuli Script и Selenium WebDriver (http://www.slideshare.net/ISsoft/html5-canvas-sikuli-selenium-2-web-driver)  Visual vs. DOM-Based Web Locators: An Empirical Study (14th International Conference, ICWE 2014)  Visual GUI Testing: Automating High-Level Software Testing in Industrial Practice (2015) (http://publications.lib.chalmers.se/records/fulltext/221145/221145.pdf)  Практическое применение Sikuli Script в автоматизации тестирования. SQA Days16 (https://comaqa.by/2016/06/02/sikuli-script-sqadays16/)  Библиотека fabric.js (http://fabricjs.com/)  Информация о SikuliX (http://sikulix.com/ и http://sikulix- 2014.readthedocs.io/en/latest/index.html)