W 2011 roku napisałem proste narzędzie do tworzenia skryptów testowych bazujących na rozpoznawaniu obrazów. Wykorzystywałem je wtedy głownie do testów stron webowych z dużą zawartością obiektów flashowych. Narzędzie było napisane w AutoIt, gdyż ten język idealnie nadawał się na prototyp, oraz dlatego, że oferuje biblioteki do rozpoznawania obrazów.
Mój ówczesny szef, Jakub Bryl, zaproponował napisanie frameworku, z którego będą mogły korzystać osoby nieprogramujące, w tym klienci chcący robić prostą automatyzację. Graficzne GUI z możliwością wyklikiwania skryptów wydawało się być dobrą propozycją.
Myślą przewodnią jaka nam towarzyszyła było uświadomienie sobie, że wszystko co jest na monitorze to obraz. Każdy obiekt jest obrazem, a „event” ma swoją graficzną reprezentację. Starałem się oddać faktyczne działanie użytkownika oprogramowania, które sprowadza się do wizualnego zlokalizowania obiektu i wykonania na nim akcji poprzez wydanie polecenia myszką bądź klawiaturą. Znaliśmy już wtedy program SIKULI, który jest zaawansowanym programem bazującym na rozpoznawaniu obrazów, ale w tamtym czasie natrafiliśmy akurat na wersję dość niestabilną, z kłopotami instalacyjnymi, co utwierdziło nas w przekonaniu o napisaniu czegoś prostszego. Czegoś, z czym mogliby poradzić sobie nawet niezaawansowani technicznie klienci. Skoro wszystko na ekranie jest obrazkiem, to działanie aplikacji testowej powinno sprowadzać się do zlokalizowania obrazka i wykonania na nim akcji „LeftMouseClick”, „RightMouseClik”, „DoubleClick”, „Drag&Drop”, czy „SendKey” (obsługa klawiatury). Powstał program o roboczej nazwie Hector, który od 2011 do 2014 roku przechodził różne fazy rozwoju. Hector umożliwia przygotowanie wzorców do wyszukania, zapisania ich w osobnych plikach wraz informacją o poprawnym położeniu, przypisania akcji oraz dzięki zaimplementowanej bibliotece do rozpoznawania obrazów pozwala wykonać cały skrypt.
Przykład zapisu wzorców, numer porządkowy, x,y położenie na ekranie, szerokość, wysokość.
Zastosowanie Hektora w testach
Różne odsłony narzędzia Hector na przestrzeni 3 lat
Program Hector napisany w AUTO IT (kwiecień 2014 r.)
W przykładowych filmach każdy zlokalizowany obiekt zaznaczany jest czerwoną ramką. Nawet załadowanie strony jest weryfikowane znalezieniem obrazka.
Przykładowe filmy
Weryfikacja fragmentów stron podczas testu funkcjonalnego.
Niektóre wzorce występujące w skrypcie:
Tworzenie skryptu do zrzutu skranów pod Chrome i FF.
Niektóre wzorce występujące w skrypcie:
Przykład tworzenia skryptu w Paincie.

Program Hector napisany w C# (2013 r.)
W 2013 roku Hector ++ był rozwijany w ramach wewnętrznego projektu ADMD Roche Polska. Przestał być projektem testerskim. Został przepisany na język C#, .Net. Wprowadzono również zmieniony interfejs graficzny. W projekcie wzięli udział Aleksandra Owczarska (developer), Przemysław Borowczyński (GUI Designer), autor artykułu (projekt manager).
Program Hector napisany w AutoIT (2012 r.)

Skrypt wizualizuje obiekty, które są odnajdywane oraz pokazuje przypisane akcje w trybie View Mode (akcje niewidoczne). Zielony kolor oznacza poprawne wykonanie poszczególnych akcji (skrypt uruchomiony z wynikiem PASS).
Skrypt do zrzutów ekranów stron.
Powyższy skrypt w pętli wczytuje strony z komponentu typu lista. Skrypt jest przed uruchomieniem dlatego pokolorowany jest na niebiesko.
Obiekt numer 1 z obrazkiem „Favorite” to obiekt gdzie następuje lokalizacja miejsca wykonania akcji czyli wprowadzenia adresów URL z obiektu numer 2.
Obiekt numer 2 to lista z URL-ami.
Obiekt numer 3 to „wait”, zdarzenie ładowania strony, który jest również obrazkiem.
Obiekt numer 4 to zrobienie zrzutu ekranu.
Testowanie iPada
Skrypt otwiera mapę, lokalizuje miasto Warszawa, następnie klika na notatnik i wypisuje poprzez wyświetlaną klawiaturę poszczególne litery wyrazu Hector. Przed uruchomieniem tego skryptu konieczne było odpowiednie skonfigurowanie PC i iPhona. Na iPhonie należało między innymi wykonać jailbreak i wgrać klienta SVN. Po zestawieniu komunikacji między urządzeniami można było wyświetlić ekran iPhona na monitorze PC. Na komputerze wgrany był Hector, który poprzez rozpoznawanie obiektów i klikanie na nich był w stanie sterować iPhonem. Te same zmiany były dokonywane na iPhonie co na PC. Konfiguracje wykonał Przemek Wiśniewski, który miał istotny wkład na tym etapie projektu.
|
Marcin Jędras jest zatrudniony w ADMD Roche Polska na stanowisku Senior Test Specialist. Zajmuje się pisaniem skryptów automatycznych do aplikacji webowych oraz desktop. Wykorzystuje między innymi Ruby/Watir, webdriver 2.0, AutoIt, CasperJS oraz metody rozpoznawania obrazów do lokalizacji obiektów i wyszukiwania zmian na screen shotach aplikacji. |
Od redakcji
Jeśli tak jak Marcin chcesz podzielić się swoją wiedzą z innymi testerami, czekamy na Twój artykuł, film, komentarz, pracę dyplomową czy inną formę treści, jaką chcesz opublikować na naszych łamach.