Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Тестирование десктопного приложения через Sikuli ?

sikuli
windows
desktop
Теги: #<Tag:0x00007fedc46c1a88> #<Tag:0x00007fedc46c1920> #<Tag:0x00007fedc46c17e0>

(Sergei Chipiga) #1

Всем привет,

Назревает задача покрыть автотестами десктопное windows приложение, внутри которого используется веб-клиент и отрисовка контента средствами джава-скрипта.

Объекты, которые создаются посредством JS, не доступны извне для управления. Склоняюсь в сторону средств визуальной автоматизации.

Поделитесь пожалуйста, есть ли success-stories при использовании Sikuli или чего-то подобного?


(Sergey Korol) #2

Когда-то давно использовал SikuliX для file upload / drag & drop и работы с mfa в вэбе.

Минусы: не работает headless, нужен active desktop, из коробки не работает ремоутно, чувствителен к смене разрешения / глубины цвета и т.п.

В остальном, с задачами справлялся весьма неплохо.


(Михаил) #3

Автоматизировал десктопное приложение под OS X. Единственная сложность была в поддержке разных версий ОС. Имею в виду, что после обновления на следующую версию менялись например шрифты. И приходилось заново скриншотить. А вообще я остался доволен.
Использовал вот в такой связке Maven + Java + SikuliX + Cucumber. Здесь на сайте где-то был пример на Java c использованием паттерна Page Object.
Я так понимю под ваши цели WinAppDriver не подойдет ?


(Sergei Chipiga) #4

Хм, вот про WinAppDriver не думал, скорее всего нет, но спасибо! Будет интересно глянуть на этот проект.


(Artur Korobeynyk) #5

Приложение рисует только то что приходит извне?
Если оно постоянно слушает сокет и реагирует на него, то можно найти Win32Api контролы для управления приложением и тыкать их когда надо, а результат того что отправляется на сервер или получается от сервера корректировать промежуточным прокси.
Например, есть кнопка “Показать кошек”, по нажатию приложение отправляет реквест https://server/api/showCats.php . Респонс отрисовывается в приложении. Респонс скорее всего будет html доком. Находим Win32 контрол в приложении, его х и у кординаты, запускаем ивент мышеклик по кординатам тем же Вин32. На проксе перехватываем запрос, проверяем его, меняем если хотим. Получаем ответ от сервера, парсим в своем собственном Html парсере, чтобы проверить что дока верно построена, дальше правим респонс на показ собак, если надо.
Здесь либо такие костыли, либо косяки от фейлов распознавания образов. А вобще, на примере скайпа, вся функциональность содержится в .lib/.so библиотеках, ехе только рисует. По-этому для тестирования просто бралась либа и писался свой клиент скайпа в который были захардкожены нужные степы тестов. Всё это компилилось в экзе и в результате просто получали хеадлесс клиент скайпа, который запускался, делал что надо, проверял что получил что надо и выключался. Возможно вам тоже подойдет подход с разработкой своих мини версий приложений.


(Sergei Chipiga) #6

Сперва была идея писать тесты на gtest, но так как проект давно легаси, и текущие мейнтейнеры только периодически правят конфиги, и с трудом могут сказать, как это устроено внутри, а набор кейсов довольно простой, решили остановиться на варианте визуального тестирования.