Skrypty obrazkowe w testowaniu (zero programowania)

Skrypty obrazkowe w testowaniu (zero programowania)
W niektórych przypadkach tworzenie skryptów testowych musi bazować na rozpoznawaniu obrazków. Oto historia takiej automatyzacji.
 

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

 
Skrypty obrazkowe (Hectora) stosuje na różnych etapach pracy testerskiej. Dzięki nim jestem w stanie weryfikować poprawność wyświetlania aplikacji czy wykonywać testy funkcjonalne. Podczas weryfikacji sprawdzam poprawność obszaru, który mnie faktycznie interesuje. Wcześniej, gdy robiłem zrzuty całych ekranów i następnie poddawałem je analizie porównawczej zorientowanej na występowanie zmian, analizator wyłapywał zmiany nieistotne albo poprawne, ale nie będące błędami jak np. wahania kursów walut, czy czasy w różnych regionach świata. Dzięki Hectorowi jestem w stanie wskazać miejsce, które mnie interesuje i poddać weryfikacji. Tworzenie skryptów obrazkowych jest stosunkowo szybkie dzięki czemu idealnie nadaje się retestów zgłoszeń defektów, które niekiedy trzeba wielokrotnie sprawdzać. Z moich doświadczeń wynika, że są stabilne. Odtwarzam napisany raz skrypt wielokrotnie i nie ma problemu z odnalezieniem obiektu.
 

Różne odsłony narzędzia Hector na przestrzeni 3 lat

 
Poniżej przedstawione są różne wersje na różnych etapach rozwoju tworzonego frameworku Hector. Framework był rozwijamy w wolnych chwilach, jako zadanie dodatkowe. Na początku 2011 r. założono potrzebę wizualizacji skryptów ze względu na potrzebę dokumentowania. Można komuś przesłać obrazek, na bazie którego ktoś sam stworzy podobny skrypt.
 
Uwaga: Na potrzeby prezentacji niektóre skrypty zostały zmodyfikowane, aby wyraźnie pokazać moment odnalezienia wzorca, a następnie najechanie myszką.
 
 

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.

 

 
Niektóre wzorce występujące w skrypcie:
 
 

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).

Działanie pokazanego na obrazku skryptu sprowadza się do otwarcia przeglądarki Safari, załadowania strony Roche, czego potwierdzeniem powinno być znalezienie logo Roche. Poniżej link do filmu prezentujący inny skrypt (proste klikanie po stronie).
 
 
 

Program Hector napisany w AutoIT (2012 r.) 

 
Wysyłanie maila
 

 

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.

 

 

To powinno Cię zainteresować