Документация на Sikuli - VK-конспект на руски език, 60

Софтуерното тестване използва инструменти, за да провери дали се очакват очакваните резултати от приложение, задвижвано от последователност от действия на потребителя. В случай на приложение, управлявано чрез доста сложен графичен интерфейс (GUI), тестерите ще искат да проверят дали визуалното съдържание отговаря на техните очаквания. Това може да бъде представяне на GUI елементи на екрана като цяло или на част от екрана.

SikuliX може да бъде интегриран с такива тестови среди по няколко начина - или чрез скриптове, или чрез Java-базиран интерфейс за програмиране (API) (който реализира поддръжката на SikuliX). Типични примери за втория подход са RobotFramework и Cucumber.

Комбинацията от GUI-ориентирани инструменти и SikuliX (например със Selenium за уеб приложения) също се превърна в реалност .

Някои предизвикателства по този въпрос са, че свойствата на изображенията на SikuliX са обвързани с пиксели в смисъл, че картината на екрана трябва да бъде точно както се очаква, в противен случай SikuliX няма да я разпознае. Това обикновено води до различни изображения, които да се използват в различни среди. Версия 2 ще има свойства за подпомагане на борбата с подобни ситуации.

Нека отбележим още някои аспекти, които са важни за тестерите:

  • SikuliX изисква тестваното приложение да работи на реален екран (или някакъв еквивалент на неговото виртуално въплъщение)
  • SikuliX се предлага само на компютри с Windows, Mac или Linux с Java версия 6+.

SikuliX - как картините се разпознават на екрана?

SikuliX използва пакета OpenCV, за да намира изображения на екрана.

SikuliX разчита на метода OpenCV/matchTemplate (), който е описан по-подробно на тази страница (на английски). Ако не сте запознати с този метод, погледнете там и след това продължете да четете тук.

Основната дейност на SikuliX е да изчака да се появи снимка на дадено място:

За улеснение все още не е казано нищо за това как да се получи този образ. Предполага се, че съществува и е постижимо.

Методът matchTemplate () изисква наличието на основна картина (основа), в която трябва да се намери желаната картина (цел). За да се подготвим за тази ситуация, правим екранна снимка на екрана (използвайки класа Java Robot), в съответствие с параметрите, зададени от aRegion. Получената основна картина се съхранява в паметта. Целевото изображение също се поставя в паметта от съответния файл. И двете снимки се преобразуват в обекти CVMat, изисквани от пакета OpenCV.

Сега изпълняваме функцията matchTemplate () и получаваме матрица с размера на основната картина, където на всеки пиксел се присвоява оценка на сходство с целевата картина, получена чрез сравняване на всеки пиксел от тези снимки, започвайки от горния ляв ъгъл на целта снимка, поставена в оценения пиксел на основната картина. Ако това все още не е напълно разбрано, върнете се към горния пример и се опитайте да разберете. Тези оценки на сходство варират от 0,0 до 1,0: колкото по-ниска е стойността, толкова по-малко вероятно е зоната с горния ляв ъгъл в този пиксел да съдържа целевото изображение. Оценките над 0,7 - 0,8 сигнализират за голяма вероятност целта да бъде намерена.

В следващата стъпка прилагаме друг метод на OpenCV, за да получим от матрицата на резултатите общия релевантен максимален резултат, който подчертава пиксела, който най-вероятно ще служи като горния ляв ръб на целта в базовото изображение.