Wybierz region
pl
  • PL
  • EN
Wydrukuj

Katalon Studio krok po kroku

W tym artykule chciałbym przybliżyć wam narzędzie do testowania jakim jest Katalon Studio (https://www.katalon.com/). Jest to narzędzie które możemy wykorzystywać do automatyzowania takich obszarów jak: Api, Web, Mobile.

Katalon zyskuje co raz większą popularność o czym może świadczyć tego roczne wyróżnienie w środowisku testerskim jako jedne z najlepszych narzędzi do automatyzacji testów. Osobiście mnie ten fakt nie dziwi ponieważ Katalon jest to bardzo przyjazny użytkownikowi interfejs który z pewnością ułatwi pracę w automatyzowaniu jednego z tych trzech obszarów ww. W tym wpisie chciałbym się jednak najbardziej skupić na automatyzacji Web Serwisów.

Jeżeli ktoś testował Soap-owe Api to z pewnością zetkną się z oprogramowaniem takim jak SoapUi. Ja co prawda chciałbym się skupić na rozwiązaniach REST-owych ale nie przez przypadek jest tu nawiązanie do SoapUi ponieważ przy pracy w Katalon można zauważyć pewne podobieństwa pomiędzy tymi narzędziami. Zwłaszcza że skrypty piszę się w Groovy  (http://groovy-lang.org/).

Jeżeli chodzi o REST API jest to od pewnego czasu standard pisania Web Serwis-ów który zawładną światem IT i zepchną na drugi plan API oparte na SOAP.

Przy wyborze narzędzia zależało mi na tym aby było darmowe jak i dawało duże możliwości w wykonywaniu testów, możliwość połączenia się z bazą oraz asercji. Przy krótkim research'u wybór padł na Katalon Studio.

Zacznę od tego że stworzyłem Repozytorium które można zaciągnąć z GIT-a gdzie napisałem prosty Web Service w JAVA wraz z bazą danych H2. Na potrzeby kursu wykorzystałem bazę H2 ponieważ powstaję ona wraz z uruchomieniem kodu na maszynie i przetrzymywana jest w pamięci. W sam raz na potrzeby tego wpisu. Jednocześnie unikniemy tutaj problemów z konfiguracją.

Tutaj jest link do repozytorium: https://github.com/Kajetanos/JwtRestApi

Aby je uruchomić można użyć dowolnego IDE do JAVY ja korzystam z IntelliJ IDEA.

Przykład API jakie mamy w repozytorium opiera się na technologii JWT. Json Web Token (JWT) to rodzaj tokenu przechowywanego po stronie klienta. Token jest zaszyfrowany po stronie serwera i tylko serwer ma klucz pozwalający zweryfikować autentyczność tokenu.

JWT składa się z trzech części.

HEADER – zawiera informację o rodzaju tokena – JWT oraz o tym jakiego algorytmu używamy

PAYLOAD – część odpowiedzialna jest za przechowywanie danych, które chcemy przesyłać w tokenie

VERIFY SIGNATURE – podpis cyfrowy potwierdzającym autentyczność danych zawartych w tokenie

Wszystkie dane w tokenie są przepuszczone przez algorytm Base64 i dopiero w takiej postaci przechowywane.

Jeżeli już odpaliliśmy naszą Web Serwis z repozytorium to możemy uruchomić Katalon Studio.

Po uruchomieniu Katalon Studio tworzymy nowy projekt:

Wybieramy API/WEB Service i dodajemy lokalizacje.

Klikamy prawym przyciskiem w ObjectRepository i wybieramy pozycje new, a następnie WebServiceRequest. Możemy nadać nazwę „SignUp” a w pozycji URL: http://localhost:8089/users/sign-up. Po wykonaniu tej akcji nasz interfejs powinien wyglądać tak:

Teraz stworzymy formularz który pozwoli nam dodać użytkownika. Wybieramy metodę POST.

Wybieramy zakładkę HTTP Header i klikamy add.

W name wpisujemy „Content-Type” a w Value „application/json” .

Następnie przechodzimy do zakładki http Body. Domyślnie powinien być zaznaczony rodzaj „text”

W polu wpisujemy w formacie JSON:

{

    "username": "admin",

    "password": "password"

}

Teraz stworzymy następny formularz dzięki któremu wykonamy Autentykacje i w Response otrzymamy token który będzie nam potrzebny do Autoryzacji. Autoryzacja będzie nam potrzebna do możliwości korzystania z zasobów naszego API.

Tworzymy nowy WebServiceRequest i dodajemy ten sam header - „Content-Type” „application/json”

Następnie przechodzimy do zakładki HTTP Body i wykonujemy to samo co wyżej.

W Endpoint wpisujemy - http://localhost:8089/login i wybieramy metodę POST. Powinno to wyglądać mniej więcej tak :

Teraz jeżeli przejdziemy do zapytania signUp i wybierzemy zielony trójkącik to powinniśmy otrzymać code status 200. Jeżeli taki otrzymaliśmy to dodaliśmy nowego użytkownika. Dla pewności możemy podejrzeć co się dzieje w konsoli naszej aplikacji. Tam powinno być zapytanie wysłane do bazy :

„Hibernate: insert into application_user (id, password, username) values (null, ?, ?)” Dzieje się tak ponieważ na potrzeby tego tutoriala jest ustawiona wartość nasłuchiwania a application.properties.

 Jeżeli teraz wyślemy requesta …/login to w odpowiedzi powinniśmy otrzymać w head-erze token z przedrostkiem Bearer.

A więc utworzyliśmy już użytkownika na którego możemy się „zalogować” i pobraliśmy token dzięki któremu możemy pobierać zasoby z naszego Web Serwisu.

W aplikacji którą uruchomiliśmy mamy Encje Candy gdzie przetrzymujemy cukierki które otrzymamy po każdorazowym wykonaniu zapytania :)

Skopiujmy ten token wraz z przedrostkiem i dodajmy nowy Web Service Request. W endpoincie wpisujemy : http://localhost:8089/candy/all

Ok, teraz przejdziemy do Test Case. Klikamy po lewej stronie prawym przyciskiem na Test Case. Wybieramy New->Test Case. Nadajemy nazwę ja nadałem- Blog Test Case.

Otwieramy ten Test Case i w dolnym panelu wybieramy „Script”

To jest okno w którym możemy napisać skrypt do zautomatyzowania naszych testów.

Na tej części chciałbym się teraz skupić.

W Test Case za pomocy Groovy możemy operować na  obiektach zapytań które dodaliśmy do Katalon. Daje to nam duże możliwości i ułatwia proces automatyzacji.

W pierwszej linijce kodu inicjalizujemy zmienną signUp za pomocą klasy WS. Metoda sendRequest (findTestObject('signUp')) zwraca nam obiekt klasy- ResponseObject. W klasie tej mamy szereg metod które pozwolą nam operować na Response.

W następnej linijce sprawdzamy czy otrzymaliśmy z serwera status code = 200. Jeżeli tak to tak jak wyżej wywołujemy metodę sendRequest i z ResponseObject za pomocą metody getHeaderFields i inicjalizujemy zmienną token. Token znajduję się w polu „Authorization”. Metoda replace usuwa nam niepotrzebne znaki.

Na chwilę teraz wróćmy do ObjectRepository gdzie mamy nasze zapytania. Dodamy do nich 3 kolejne które będą nam pobierać dane z serwera.

We wszystkich trzech zapytaniach zdefiniujemy jedynie endpointy i wybieramy metodę GET.

Endpointy:

- http://localhost:8089\candy\all

- http://localhost:8089\candy\{id}

-http://localhost:8089\candy\getName\{id}

Wracamy do skryptu.

Teraz aby móc dodać token który pobraliśmy do headera naszego zapytania potrzebujemy obiektu – RequestObject gdzie mamy metodę setHttpHeaderProperties w której przekażemy ArrayList z TestObjectProperty a w niej property z tokenem.

Następnie wywołujemy metodę sendRequest tak jak poprzednie tyle tylko że jako parametr przekazujemy request który przed chwilą spreparowaliśmy .

Teraz przydało by się sprawdzić czy dane które nam zwraca WebSerwis pokrywa się z danymi które mamy w bazie danych. Tak jak już pisałem wyżej będziemy korzystać z bazy danych H2 która jest uruchamiana w pamięci.

Konektor do bazy napisałem w sekcji Keywords gdzie możemy dodawać pomocnicze klasy. Aby dodać taki Keyword wystarczy na liście z lewej strony kliknąć prawym przyciskiem w „Keywords” i wybrać new ->package. Następnie klikamy prawym przyciskiem w nowo utworzony package, wybieramy new-> Keyword. W nazwie może wpisać Connector. Klasa powinna nam się utworzyć, u mnie ona wygląda tak:

Na początku zdefiniowałem dwie zmienne statyczne connection i log. Connection będzie nam potrzebne do utworzenia połączenia z bazą danych i jest to obiekt klasy Connection a log do logowania wykonywanych operacji(tak jak w TestCase).

Pierwsza metoda definiuje nam klasę Drivera z którego będziemy korzystać w tym przypadku H2 następnie przy użyciu DriverManagera będziemy mogli użyć metody getConnection w której zdefiniujemy parametry aby móc się połączyć z bazą. Te parametry można podejrzeć w zaciągniętym repozytorium w resources/application.properties. Pierwszy parametr to TCP URI ,następny username oraz password. Metoda zwraca nam obiekt Connection który wykorzystujemy w metodzie execute na podstawie którego stworzymy Statement a następnie wykonamy na nim kwerendę przy użyciu metody executeQuery.

Teraz możemy wykorzystać naszą klasę w skrypcie. Importujemy ją:

 import db.Connector as Connector

Implementujemy obiekt ResultSet i wywołujemy metodę execute a w parametrze przekazujemy sql do wyciągnięcia danych z bazy. Tworzymy pętlę aby dodać wszystkie zwrócone encje do Listy i na końcu wykonujemy assercje.

Teraz z pozycji TestCase-a możemy uruchomić nasz skrypt.

Jak widać Katalon można również wykorzystać do testowania API i dzięki możliwości pisania skryptów w Groovy dowolnie konfigurować. Test Case który tutaj stworzyłem jest tylko przykładem tego jak można wykorzystać te narzędzie. Mam nadzieję że przybliżyłem temat testów API w Katalon i jeżeli czujecie że te narzędzie wam odpowiadam to odsyłam do dokumentacji: https://docs.katalon.com/katalon-studio/docs/index.html

gdzie można znaleźć wiele wartościowych treści i w pełni zobaczyć możliwości tego narzędzia. Dzięki możliwości wykonywania Test Case z kodu w terminalu jest możliwość utworzenia Job-ów w Jenkins.

Repozytorium do skryptów groovy: https://github.com/Kajetanos/KatalonRestApi


Kajetan Lipiński

Pracuję w Pionie Energetyki i Gazownictwa, do moich głównych zadań należy kontrola jakości wypuszczanych produktów oraz automatyzacja testów aplikacji webowych oraz desktopowych. Zainteresowania to automatyzacja oraz optymalizacja procesów wytwórczych w IT.


Wydrukuj