Upload
sqalab
View
1.030
Download
2
Embed Size (px)
DESCRIPTION
Доклад Виталия Шульга на конференции SQA Days-12, 30 ноября-1 декабря, Минск
Citation preview
Excellence in Software Engineering
Особенности автоматизации с помощью скриншотов на платформе .NET
Виталий Шульга, EPAM Systems
Excellence in Software Engineering
О докладчике
Виталий Шульга
Software Test Automation Engineerв EPAM SystemsМинск, Беларусь
www.linkedin.com/in/[email protected]
Excellence in Software Engineering
План доклада
1. Case study
2. Принцип действия image-based технологии
3. Наиболее популярные инструменты
4. Существующие image-based API
5. Трудности интеграции с .NET
6. Анализ задачи и реализация алгоритма поиска
7. Оптимизация поискового алгоритма
8. Симуляция устройств ввода
9. Анализ полученного решения
Excellence in Software Engineering
Как все начиналось
• .NET приложение на WPF• MS UI Automation + NUnit• > 1200 тестов
• + Приложение в Citrix для 30 тестов
+
Excellence in Software Engineering
Принцип действия image-based технологии
Сделать скриншот
Найти изображение
Выполнить действие
Excellence in Software Engineering
Наиболее популярные инструменты
*RoutineBot
Excellence in Software Engineering
• Основной инструмент• API поиска изображений
Оптимальный вариант использования
Excellence in Software Engineering
• Sikuli script API (Java)
• OpenCV (C++)
Существующие image-based API
Трудности интеграции
Excellence in Software Engineering
Трудность интеграции с .NET
• Необходимость «посредников»
• Большое время поиска
• Громоздкое и сложное решение
Excellence in Software Engineering
Анализ задачи и реализация алгоритма поиска
1. Получить массив пикселов экрана
2. Сравнить часть экрана с искомым изображением
3. Выполнять сдвиг вправо и вниз пока не будет найдено совпадение
Excellence in Software Engineering
Как работает алгоритм поиска изображения
0 X
Y
Excellence in Software Engineering
А как же скорость работы?
• Пусть картинка будет иметь размер 80х120 пикселов
• Посчитаем сколько операций нужно произвести, чтобы найти её на экране размером 1280х1024
• 1280 х 1024 х 80 х 120 = 12,5 млрд операций сравнения
• Это несколько минут для поиска картинки на экране
Excellence in Software Engineering
Оптимизация поискового алгоритма
1. Найдем 5 пикселов картинки на экране
2. Произведем обычный попиксельный поиск
3. CLR -> unsafe code
• 1280 х 1024 х 5 = 6,5 млн операций сравнения
• Это ~ 0.2 секунды на изображение
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
Наше решение
Excellence in Software Engineering
Эмуляция устройств ввода
• Нам понадобятся следующие возможности:
– Мышь
– Клавиатура
• Реализация: WinAPI
Excellence in Software Engineering
Полученное решение
• Быстрый поиск изображения
• Действия мыши
• Нажатия клавиш
• Ввод текста
Excellence in Software Engineering
Спасибо за внимание!
Краткий план доклада
1. Case study
2. Принцип действия image-based технологии
3. Наиболее популярные инструменты
4. Существующие image-based API
5. Трудности интеграции с .NET
6. Анализ задачи и реализация алгоритма поиска
7. Оптимизация поискового алгоритма
8. Эмуляция устройств ввода
9. Анализ полученного решения