SlideShare a Scribd company logo
1 of 17
Особенности автоматизации с помощью
       скриншотов на платформе .NET
      Виталий Шульга, EPAM Systems
О докладчике

                                Виталий Шульга

               Software Test Automation Engineer
                                в EPAM Systems
                                Минск, Беларусь




                    www.linkedin.com/in/vitalliuss
                            vitalliuss@gmail.com
План доклада
1. Case study
2. Принцип действия image-based технологии
3. Наиболее популярные инструменты
4. Существующие image-based API
5. Трудности интеграции с .NET
6. Анализ задачи и реализация алгоритма поиска
7. Оптимизация поискового алгоритма
8. Симуляция устройств ввода
9. Анализ полученного решения
Как все начиналось

• .NET приложение на WPF
• MS UI Automation + NUnit
• > 1200 тестов

                               +


 • + Приложение в Citrix для 30 тестов
Принцип действия image-based технологии

Сделать скриншот



Найти изображение



Выполнить действие
Наиболее популярные инструменты




                                  *RoutineBot
Оптимальный вариант использования

• Основной инструмент
• API поиска изображений
Существующие image-based API

• Sikuli script API (Java)
• OpenCV (C++)




Трудности интеграции
Трудность интеграции с .NET

 • Необходимость «посредников»
 • Большое время поиска
 • Громоздкое и сложное решение
Анализ задачи и реализация алгоритма поиска
 1. Получить массив пикселов экрана
 2. Сравнить часть экрана с искомым
    изображением
 3. Выполнять сдвиг вправо и вниз пока
    не будет найдено совпадение
Как работает алгоритм поиска изображения
0                                          X




Y
А как же скорость работы?
 • Пусть картинка будет иметь размер
   80х120 пикселов
 • Посчитаем сколько операций нужно
   произвести, чтобы найти еѐ на экране
   размером 1280х1024


 • 1280 х 1024 х 80 х 120 = 12,5 млрд
   операций сравнения
 • Это несколько минут для поиска
   картинки на экране
Оптимизация поискового алгоритма
 1. Найдем 5 пикселов картинки на экране
 2. Произведем обычный попиксельный поиск
 3. CLR -> unsafe code




 • 1280 х 1024 х 5 = 6,5 млн
   операций сравнения
 • Это ~ 0.2 секунды на
   изображение
Время поиска картинки 40х40 пикселов
 2
1.8
1.6
1.4                                   OpenCV из .NET
1.2
 1                                    Sikuli из Java
0.8
0.6                                   Наше решение
0.4
0.2
 0

      Среднее время поиска, секунды
Эмуляция устройств ввода
 • Нам понадобятся следующие
   возможности:
   – Мышь
   – Клавиатура
 • Реализация: WinAPI
Полученное решение

 •   Быстрый поиск изображения
 •   Действия мыши
 •   Нажатия клавиш
 •   Ввод текста
Спасибо за внимание!
                Краткий план доклада
1. Case study
2. Принцип действия image-based технологии
3. Наиболее популярные инструменты
4. Существующие image-based API
5. Трудности интеграции с .NET
6. Анализ задачи и реализация алгоритма поиска
7. Оптимизация поискового алгоритма
8. Эмуляция устройств ввода
9. Анализ полученного решения

More Related Content

Similar to Особенности автоматизации с помощью скриншотов

CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестированииHappyDev
 
TestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщикаTestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщикаAlexander Nedeliaev
 
Selenium нетрадиционной ориентации или Тестирование производительности Javasc...
Selenium нетрадиционной ориентации или Тестирование производительности Javasc...Selenium нетрадиционной ориентации или Тестирование производительности Javasc...
Selenium нетрадиционной ориентации или Тестирование производительности Javasc...Nikita Makarov
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIMoscowJS
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?buranLcme
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
 
Sikuli Test Automation - How to do it?
Sikuli Test Automation - How to do it?Sikuli Test Automation - How to do it?
Sikuli Test Automation - How to do it?Mykhailo Poliarush
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Alexander Babich
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Презентация системы автоматической проверки решений задач по программированию...
Презентация системы автоматической проверки решений задач по программированию...Презентация системы автоматической проверки решений задач по программированию...
Презентация системы автоматической проверки решений задач по программированию...Yurii Kadirov
 
Технический задел
Технический заделТехнический задел
Технический заделVladimir Petrov
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныCodeFest
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAndrey Rebrov
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 

Similar to Особенности автоматизации с помощью скриншотов (20)

CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
TestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщикаTestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщика
 
Selenium нетрадиционной ориентации или Тестирование производительности Javasc...
Selenium нетрадиционной ориентации или Тестирование производительности Javasc...Selenium нетрадиционной ориентации или Тестирование производительности Javasc...
Selenium нетрадиционной ориентации или Тестирование производительности Javasc...
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public API
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
Sikuli Test Automation - How to do it?
Sikuli Test Automation - How to do it?Sikuli Test Automation - How to do it?
Sikuli Test Automation - How to do it?
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Презентация системы автоматической проверки решений задач по программированию...
Презентация системы автоматической проверки решений задач по программированию...Презентация системы автоматической проверки решений задач по программированию...
Презентация системы автоматической проверки решений задач по программированию...
 
Технический задел
Технический заделТехнический задел
Технический задел
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation Testing
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Особенности автоматизации с помощью скриншотов

  • 1. Особенности автоматизации с помощью скриншотов на платформе .NET Виталий Шульга, EPAM Systems
  • 2. О докладчике Виталий Шульга Software Test Automation Engineer в EPAM Systems Минск, Беларусь www.linkedin.com/in/vitalliuss vitalliuss@gmail.com
  • 3. План доклада 1. Case study 2. Принцип действия image-based технологии 3. Наиболее популярные инструменты 4. Существующие image-based API 5. Трудности интеграции с .NET 6. Анализ задачи и реализация алгоритма поиска 7. Оптимизация поискового алгоритма 8. Симуляция устройств ввода 9. Анализ полученного решения
  • 4. Как все начиналось • .NET приложение на WPF • MS UI Automation + NUnit • > 1200 тестов + • + Приложение в Citrix для 30 тестов
  • 5. Принцип действия image-based технологии Сделать скриншот Найти изображение Выполнить действие
  • 7. Оптимальный вариант использования • Основной инструмент • API поиска изображений
  • 8. Существующие image-based API • Sikuli script API (Java) • OpenCV (C++) Трудности интеграции
  • 9. Трудность интеграции с .NET • Необходимость «посредников» • Большое время поиска • Громоздкое и сложное решение
  • 10. Анализ задачи и реализация алгоритма поиска 1. Получить массив пикселов экрана 2. Сравнить часть экрана с искомым изображением 3. Выполнять сдвиг вправо и вниз пока не будет найдено совпадение
  • 11. Как работает алгоритм поиска изображения 0 X Y
  • 12. А как же скорость работы? • Пусть картинка будет иметь размер 80х120 пикселов • Посчитаем сколько операций нужно произвести, чтобы найти еѐ на экране размером 1280х1024 • 1280 х 1024 х 80 х 120 = 12,5 млрд операций сравнения • Это несколько минут для поиска картинки на экране
  • 13. Оптимизация поискового алгоритма 1. Найдем 5 пикселов картинки на экране 2. Произведем обычный попиксельный поиск 3. CLR -> unsafe code • 1280 х 1024 х 5 = 6,5 млн операций сравнения • Это ~ 0.2 секунды на изображение
  • 14. Время поиска картинки 40х40 пикселов 2 1.8 1.6 1.4 OpenCV из .NET 1.2 1 Sikuli из Java 0.8 0.6 Наше решение 0.4 0.2 0 Среднее время поиска, секунды
  • 15. Эмуляция устройств ввода • Нам понадобятся следующие возможности: – Мышь – Клавиатура • Реализация: WinAPI
  • 16. Полученное решение • Быстрый поиск изображения • Действия мыши • Нажатия клавиш • Ввод текста
  • 17. Спасибо за внимание! Краткий план доклада 1. Case study 2. Принцип действия image-based технологии 3. Наиболее популярные инструменты 4. Существующие image-based API 5. Трудности интеграции с .NET 6. Анализ задачи и реализация алгоритма поиска 7. Оптимизация поискового алгоритма 8. Эмуляция устройств ввода 9. Анализ полученного решения

Editor's Notes

  1. Linkedin + epam.com mail
  2. remove
  3. Аргументация + сравнение
  4. Убрать
  5. Консультация .net
  6. Join 8-9
  7. ¾ CLR
  8. ¾
  9. +code
  10. Сколько времени понадобилось на имплементацию?Сколько уже ранаются эти тесты??Время, число 500ранов5 минутСтабильность -,????Багов-нашли?
  11. Итого-в простых случаях – стандартные инструментыЕсть image based tools где простые вещи не работаютВажна интеграция, скорость, надежностьИногда проще сделать свое решениеСравнивать картиники проще чем кажется 