17
Excellence in Software Engineering Особенности автоматизации с помощью скриншотов на платформе .NET Виталий Шульга, EPAM Systems

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

  • Upload
    sqalab

  • View
    1.030

  • Download
    2

Embed Size (px)

DESCRIPTION

Доклад Виталия Шульга на конференции SQA Days-12, 30 ноября-1 декабря, Минск

Citation preview

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

Excellence in Software Engineering

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

Виталий Шульга, EPAM Systems

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

Excellence in Software Engineering

О докладчике

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

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

www.linkedin.com/in/[email protected]

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

Excellence in Software Engineering

План доклада

1. Case study

2. Принцип действия image-based технологии

3. Наиболее популярные инструменты

4. Существующие image-based API

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

6. Анализ задачи и реализация алгоритма поиска

7. Оптимизация поискового алгоритма

8. Симуляция устройств ввода

9. Анализ полученного решения

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

Excellence in Software Engineering

Как все начиналось

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

• + Приложение в Citrix для 30 тестов

+

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

Excellence in Software Engineering

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

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

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

Выполнить действие

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

Excellence in Software Engineering

Наиболее популярные инструменты

*RoutineBot

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

Excellence in Software Engineering

• Основной инструмент• API поиска изображений

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

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

Excellence in Software Engineering

• Sikuli script API (Java)

• OpenCV (C++)

Существующие image-based API

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

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

Excellence in Software Engineering

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

• Необходимость «посредников»

• Большое время поиска

• Громоздкое и сложное решение

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

Excellence in Software Engineering

Анализ задачи и реализация алгоритма поиска

1. Получить массив пикселов экрана

2. Сравнить часть экрана с искомым изображением

3. Выполнять сдвиг вправо и вниз пока не будет найдено совпадение

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

Excellence in Software Engineering

Как работает алгоритм поиска изображения

0 X

Y

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

Excellence in Software Engineering

А как же скорость работы?

• Пусть картинка будет иметь размер 80х120 пикселов

• Посчитаем сколько операций нужно произвести, чтобы найти её на экране размером 1280х1024

• 1280 х 1024 х 80 х 120 = 12,5 млрд операций сравнения

• Это несколько минут для поиска картинки на экране

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

Excellence in Software Engineering

Оптимизация поискового алгоритма

1. Найдем 5 пикселов картинки на экране

2. Произведем обычный попиксельный поиск

3. CLR -> unsafe code

• 1280 х 1024 х 5 = 6,5 млн операций сравнения

• Это ~ 0.2 секунды на изображение

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

Excellence in Software Engineering

Время поиска картинки 40х40 пикселов

Среднее время поиска, секунды0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

OpenCV из .NET

Sikuli из Java

Наше решение

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

Excellence in Software Engineering

Эмуляция устройств ввода

• Нам понадобятся следующие возможности:

– Мышь

– Клавиатура

• Реализация: WinAPI

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

Excellence in Software Engineering

Полученное решение

• Быстрый поиск изображения

• Действия мыши

• Нажатия клавиш

• Ввод текста

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

Excellence in Software Engineering

Спасибо за внимание!

Краткий план доклада

1. Case study

2. Принцип действия image-based технологии

3. Наиболее популярные инструменты

4. Существующие image-based API

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

6. Анализ задачи и реализация алгоритма поиска

7. Оптимизация поискового алгоритма

8. Эмуляция устройств ввода

9. Анализ полученного решения