Wyślij zapytanie Dołącz do Sii

Jakość to doskonałość,
 której nie da się osiągnąć,
lecz do której trzeba uporczywie zdążać.
Lao Tzu

Wstęp

Mamy rok 2019, technologia, komputery, internet są nieodłącznymi elementami naszego życia. Pewnie niewielu z nas wyobraża sobie czasy gdy na wiadomość czekało się kilka tygodni, podróże zajmowały miesiące, a wiedza nie była powszechna. Ludzie od zawsze usprawniają swoją pracę, aby nie tracić czasu, sił, pieniędzy, a jednocześnie czerpać z życia to co najlepsze.

Rozwój w każdej branży jest bardzo dynamiczny, przyspieszamy pracę z użyciem maszyn, automatów, sztucznej inteligencji. Dążymy do szybkiego dostarczania usług, oprogramowania, towarów – wszystko po to żeby zaoszczędzić czas, którego mamy ograniczoną ilość – średnio każdy z nas ma 25566 dni do dyspozycji z czego około 25 lat przesypiamy.

Dzięki dostępnym narzędziom o szerokim spektrum funkcjonalności, jesteśmy w stanie udoskonalić procesy, zwiększyć wydajność i efektywność wykonywanych zadań. Na podstawie dziedziny, która jest dla mnie najważniejsza – Zapewnienia Jakości (eng. Quality Assurance) – chciałabym przedstawić dwa różne podejścia do automatyzacji testów, czyli dążenia do doskonałości w Inżynierii Oprogramowania.

W cyklu artykułów zaprezentuję rozwiązanie Tricentis Tosca – narzędzie mniej popularne – za to w mojej opinii przyszłościowe oraz najczęściej stosowane podejście do automatyzacji z użyciem Selenium WebDriver.  Do analizy wykorzystany zostanie zautomatyzowany przypadek testowy: Wyszukanie oferty pracy na stronie www.sii.pl, przygotowany z użyciem dwóch wspomnianych rozwiązań.

W kolejnych artykułach będą prezentowane poszczególne etapy pisania skryptów automatycznych, m.in przygotowanie środowiska testowego, tworzenie podstaw i budowanie całego przypadku testowego. Zajrzymy w zakamarki utrzymywania skryptów, zgłębimy tajniki zasilania danymi testowymi oraz poznamy meandry zarządzania ryzykiem w projekcie. Na zakończenie poznamy wady i zalety oraz efektywność prezentowanych narzędzi.

Zapraszam do lektury.

Rozdział 1 Jak wystartować?

Początki bywają trudne. Potrzeba miesięcy nauki i lat doświadczenia, żeby zacząć dobrze automatyzować. Ogrom narzędzi, języków wspomagających testy automatyczne, a przede wszystkim różnorodność technologii wykorzystywanych do tworzenia systemów i aplikacji, które podlegają testom – SUT (System Under Test) – powoduje mętlik co wybrać, jakie rozwiązanie wdrożyć, żeby nie stracić czasu i pieniędzy, a zyskać Jakość. Popularnym rozwiązaniem jest wykorzystywanie narzędzi darmowych np. Selenium WebDriver. Wiąże się to oczywiście z ograniczeniami, są też rozwiązania komercyjne, które coraz częściej zapewniają wsparcie wszystkich aktywności testerskich.

Zatem jak zacząć swoją przygodę z automatyzacją?

Tricentis Tosca

Narzędzie to jest przeznaczone dla osób mniej technicznych, nawet dla tych, którym Python kojarzy się z gatunkiem węża, a Java brzmi jak wyspa w Indonezji. Coraz częściej dąży się do ułatwień, które pozwalają wejść do branży IT nie tylko osobom studiujących arkana wiedzy tajemnej z tego obszaru.

W przypadku narzędzi Tricentis mamy do czynienia z niskim progiem wejścia. Mogę śmiało powiedzieć, że jest to narzędzie „Easy to Enter but Hard to Master”, od „Zera do Bohatera” nie staniemy się w jeden dzień, ale na pewno po niedługim czasie (2, 3 dni – tyle zajmuje opanowanie szkolenia Automation Specialist Level 1) będziemy w stanie efektywnie tworzyć testy automatyczne.

Do podstawowej pracy z narzędziem do automatyzacji wystarczy zainstalować Tosca Commander.

Dostęp do 14 dniowego okresu próbnego znajduje się pod adresem

https://www.tricentis.com/software-testing-tool-trial-demo/tosca-free-trial/

Na podany adres email zostaje wysłana wiadomość z instrukcją i dalszymi krokami, które mamy wykonać.

  • Zakładamy konto na stronie Tricentis (support.tricentis.com)
  • Pobieramy najnowszą wersję Tosca Commander (aktualnie najnowsza wersja to 13.0)
  • Po zainstalowaniu aplikacji i uruchomieniu musimy aktywować odpowiednią licencję. W przypadku Licencji Trial:
    • Wybieramy na zakładce Activate opcję Connect
    • Następnie wybieramy Connect to Cloud Hosted License Server
    • Podajemy Login i hasło konta, które założyliśmy na stronie Tricentis
    • Do naszego konta powinna być przypisana licencja Trial i być widoczna w dropdown, po jej wyborze możemy zacząć działać

HINT: Warto ukończyć dwa szkolenia Automation Specialist 1 & 2, które są dostępne za darmo i pozwalają poznać podstawy użytkowania Tosca.


Selenium

To rozwiązanie wymaga przede wszystkim większej wiedzy technicznej i umiejętności programistycznych. Żeby efektywnie automatyzować trzeba znać co najmniej jeden język programowania. Selenium jest powszechnym rozwiązaniem przy aplikacjach webowych, ze względu na swój open source’owy charakter i duże community, dzięki któremu powstają darmowe frameworki i narzędzia wspierające.

Zanim zaczniemy pisać testy, na samym początku musimy zmierzyć się z następującymi tematami:

  • Jakiego języka programowania użyjemy do pisania skryptów – najczęściej używane to Java i Python – jest to zależne nie tylko od naszej wiedzy czy umiejętności, ale przede wszystkim od technologii wykorzystywanej w projekcie webowym.
  • Jakie frameworki, zestaw bibliotek planujemy wykorzystać, aby usprawnić pisanie skryptów automatycznych – po co duplikować tworzenie metod, które wcześniej zostały napisane.
  • Wybrać środowisko programistyczne (IDE), które wspomoże naszą pracę – bardzo powszechnie używaną platformą jest Intellij Community.
  • Przygotowanie środowiska, zainstalowanie narzędzi, frameworków, bibliotek. Dodanie ścieżek do zmiennych środowiskowych.
  • Pamiętać o użyciu odpowiedniego sterownika dla każdej przeglądarki w odpowiedniej wersji.
  • Nie można zapomnieć również o repozytorium danych, które uchroni nas przed ewentualną utratą napisanego kodu.
  • Dodatkowo, jaki wykorzystać wzorzec projektowy, który pomoże zbudować architekturę testów automatycznych, czytelnych i łatwych do zarządzania.

Rozdział 2 Budowanie fundamentów

Testy automatyczne, tak jak aplikacja którą testujemy, powinny posiadać odpowiednią architekturę, która pozwoli tworzyć spójną, czytelną i łatwą do utrzymania całość. Testy powinny działać stabilnie bez dodatkowych redundancji i duplikacji, a przede wszystkim zwracać czytelną informację w przypadku wystąpienia błędów w SUT. Co jest zatem podstawą przy tworzeniu testów? W kontekście testów UI będą to obiekty interfejsu, na których użytkownik wykonuje akcje. Zatem przyjrzyjmy się jak znajdowanie, identyfikowanie i definiowanie obiektów wygląda w Tosca i Selenium.

Tricentis Tosca

Zaczynamy od utworzenia modeli, które będą użyte przy budowaniu automatycznych przypadków testowych:

  • W zakładce MODULES musimy utworzyć modele będące reprezentacją obiektów w aplikacji. Będą to nasze klocki „Lego”, z których będziemy budować przypadki testowe.
  • Dobrą praktyką jest przechowywanie modeli w odpowiedniej strukturze folderów – zależne od projektu – dzięki czemu zyskamy porządek. Również nazewnictwo powinno być na tyle zwięzłe, a jednocześnie opisowe, aby osoby, które nie tworzyły modeli mogły ich używać znając jedynie SUT i widząc UI aplikacji.
Scan - Application
  • Do stworzenia modeli używamy opcji Scan dostępnej pod prawym przyciskiem myszy lub w menu górnym. Do dyspozycji jest wiele opcji, w zależności jaką aplikację potrzebujemy zautomatyzować. Do aplikacji webowych i desktopowych używamy Scan -> Application.
  • Otrzymamy listę aplikacji, które są aktualnie uruchomione na komputerze. Wybieramy odpowiedni SUT i wciskamy Scan.
  • Engine Tosca xScan zwraca listę wszystkich obiektów jakie zostały rozpoznane. Pozostaje wybór odpowiednich komponentów, które będą używane w testach automatycznych.
xScan Tosca - Jak dążyć do Jakości z użyciem Tricentis Tosca. Część 1.

1. Menu opcji do znajdowania obiektów
2. Lista obiektów zidentyfikowanych przez engine Tosca xScan
3. Lista parametrów obiektów, służących do jednoznacznej identyfikacji elementów
4. Komunikat czy element jest rozpoznany przez Tosca jednoznacznie czy nie jest unikalny


GOOD PRACTICE:

Pamiętaj, nie twórz modeli, które będą zawierać bardzo wiele obiektów. Stwórz moduły odpowiadające poszczególnym obszarom aplikacji np. Top Menu, Side Menu, Filtry/Wyszukiwanie. Jednocześnie wybieraj tylko te elementy, które faktycznie będą używane w przypadkach testowych.


  • Wybór obiektów możemy wykonać za pomocą opcji:
Select on screen – wybór elementu na ekranie – dzięki tej opcji jesteśmy w stanie zaznaczyć kursorem wszystkie potrzebne nam elementy na UI aplikacji.Highlight selection –  po zaznaczenie elementu na liście umożliwia podświetlenie go na UI aplikacji. Możemy upewnić się że wybrany przez nas obiekt jest tym który nas interesuje.Filtered Items – w przypadku, gdy żadnego obiektu nie udało się znaleźć na liście, możemy przesunąć suwak (w prawą stronę) aby uzyskać bardziej szczegółową strukturę aplikacji.
  • Select on screen – wybór elementu na ekranie – dzięki tej opcji jesteśmy w stanie zaznaczyć kursorem wszystkie potrzebne nam elementy na UI aplikacji.
Select on screen – wybór elementu na ekranie – dzięki tej opcji jesteśmy w stanie zaznaczyć kursorem wszystkie potrzebne nam elementy na UI aplikacji.Highlight selection –  po zaznaczenie elementu na liście umożliwia podświetlenie go na UI aplikacji. Możemy upewnić się że wybrany przez nas obiekt jest tym który nas interesuje.Filtered Items – w przypadku, gdy żadnego obiektu nie udało się znaleźć na liście, możemy przesunąć suwak (w prawą stronę) aby uzyskać bardziej szczegółową strukturę aplikacji.
  • Highlight selection –  po zaznaczenie elementu na liście umożliwia podświetlenie go na UI aplikacji. Możemy upewnić się że wybrany przez nas obiekt jest tym który nas interesuje.
Select on screen – wybór elementu na ekranie – dzięki tej opcji jesteśmy w stanie zaznaczyć kursorem wszystkie potrzebne nam elementy na UI aplikacji.Highlight selection –  po zaznaczenie elementu na liście umożliwia podświetlenie go na UI aplikacji. Możemy upewnić się że wybrany przez nas obiekt jest tym który nas interesuje.Filtered Items – w przypadku, gdy żadnego obiektu nie udało się znaleźć na liście, możemy przesunąć suwak (w prawą stronę) aby uzyskać bardziej szczegółową strukturę aplikacji.
  • Filtered Items – w przypadku, gdy żadnego obiektu nie udało się znaleźć na liście, możemy przesunąć suwak (w prawą stronę) aby uzyskać bardziej szczegółową strukturę aplikacji.
  • Zidentyfikowanie jednoznaczne obiektu – ważnym aspektem tworzenia Modeli jest odpowiednie wyznaczenie elementów interface’u, które będą niepowtarzalne. Dzięki temu przy uruchamianiu przypadków testowych Tosca będzie w stanie odszukać właściwy komponent. Gdy obiekt nie będzie zidentyfikowany unikalnie, wtedy otrzymamy komunikat „More than one control found” – oznacza to że Tosca nie wie na czym ma wykonać akcję.
  • Do identyfikacji elementów używamy następujących metod:
Properties – najczęściej obiekty rozpoznawane będą po właściwościach technicznych, są to np. ID, ClassName, InnerText,Title bądź inny identyfikator, który jest unikalny dla danej kontrolki. Dzięki temu, że Tosca zwraca pełną listę parametrów technicznych dla każdego elementu, możemy w łatwy sposób wybrać po czym będzie rozpoznawany obiekt.Anchor – jeżeli element nie posiada żadnego unikalnego parametru technicznego, możemy użyć Kotwicy do zidentyfikowania go. Polega to na połączeniu z innym elementem, który został rozpoznany jednoznacznie np. pole edycyjne może być połączone z etykietą (Label), która ją opisuje na stronie.Image – w przypadku gdy żadne z powyższych rozwiązań nie przynosi rezultatu, do identyfikacji możemy użyć obrazu kontrolki. Należy jednak unikać tej metody, gdyż jest wrażliwa na zmiany np. rozdzielczość, kolor, rozmiar etc.Index – ostatnim sposobem identyfikacji obiektu jest index, trzeba jednak brać pod uwagę, że jest wrażliwe na ewentualne zmiany w SUT. Tej metody można używać przy listach rozwijanych, o ile nie będzie zmiany kolejność jej zawartości.
  • Properties najczęściej obiekty rozpoznawane będą po właściwościach technicznych, są to np. ID, ClassName, InnerText,Title bądź inny identyfikator, który jest unikalny dla danej kontrolki. Dzięki temu, że Tosca zwraca pełną listę parametrów technicznych dla każdego elementu, możemy w łatwy sposób wybrać po czym będzie rozpoznawany obiekt.
  • Anchor jeżeli element nie posiada żadnego unikalnego parametru technicznego, możemy użyć Kotwicy do zidentyfikowania go. Polega to na połączeniu z innym elementem, który został rozpoznany jednoznacznie np. pole edycyjne może być połączone z etykietą (Label), która ją opisuje na stronie.
  • Image  w przypadku gdy żadne z powyższych rozwiązań nie przynosi rezultatu, do identyfikacji możemy użyć obrazu kontrolki. Należy jednak unikać tej metody, gdyż jest wrażliwa na zmiany np. rozdzielczość, kolor, rozmiar etc.
  • Index  ostatnim sposobem identyfikacji obiektu jest index, trzeba jednak brać pod uwagę, że jest wrażliwe na ewentualne zmiany w SUT. Tej metody można używać przy listach rozwijanych, o ile nie będzie zmiany kolejność jej zawartości.


HINT: W pierwszej kolejności należy używać parametrów technicznych (Technical Properties) aby zidentyfikować unikalnie obiekty – najszybsza i najbardziej stabilna opcja.


  • Kolejnym krokiem jest odpowiednie nazwanie wybranych obiektów oraz całego modułu, aby odzwierciedlał interfejs użytkownika, umożliwiając czytelność i łatwość użytkowania dla osób budujący przypadki testowe z dostępnych modeli.
  • A na koniec zapisanie Modelu. W taki sposób przygotowujemy „klocki” służące do tworzenia przypadków testowych.

Selenium

W przypadku tego podejścia, również wyodrębniamy odpowiednie elementy, przy czym identyfikację musimy wykonać samodzielnie, dlatego ważne jest aby posiadać podstawową wiedzę z zakresu HTML.

Na przykładzie przygotowanego skryptu, zostały wykonane następujące czynności:

Konfiguracja środowiska do automatyzacji:

  • Instalacja odpowiedniej wersji JDK – środowisko Java dla developerów.
  • Instalacja narzędzia automatyzującego budowanie aplikacji. W naszym projekcie został użyty Maven.
  • Instalacja środowiska programistycznego IDE. U nas używany Intellij Community.
  • Pobranie odpowiedniego sterownika (driver) przeglądarki. W naszym przypadku sterownik dla Chrome w wersji 79.
  • Utworzenie nowego projektu w Intellij z użyciem Java + Maven. W pliku pom.xml należy dodać podstawowe dependencies w odpowiedniej wersji z mvnrepository.com dla:
    • Narzędzia do automatyzacji testów Selenium
    • Frameworka do pisania testów, w projekcie został użyty TestNg
  • Wybór wzorca projektowego – w naszym przypadku Page Object Model.

Przygotowana architektura:

  1. helpers – zawiera klasy do konfiguracji drivera oraz przeglądarki
  2. pages – zawiera klasy z elementami i metodami dotyczące danej strony (pages), HelperPage zawiera wspólne metody, które są wykorzystywane w innych klasach pages
  3. testData – zawiera interface z danymi testowymi
  4. tests – zawiera klasę z testami oraz bazową klasę TestBase, która inicjalizuje WebDriver
  5. resources – zawiera plik konfiguracyjny z adresem URL oraz lokalizacją driverów

Identyfikacja obiektów:

W Selenium możemy znaleźć WebElementy z wykorzystaniem:

  • id
  • name
  • className
  • css
  • tagName
  • linkText
  • partialLinkText
  • xpath

Jak można zauważyć, w obu narzędziach używamy parametrów technicznych, jedyna różnica jest taka, że Tosca zwraca wszystko w formie czytelnej listy, z której wybieramy odpowiednie atrybuty, a w Selenium musimy sami zagłębić się w strukturę html i wybrać odpowiedni parametr. Tosca od razu zwróci nam informację o tym, czy będzie w stanie wykonać akcję na obiekcie, w przypadku Selenium wymagane jest uruchomienie skryptu by sprawdzić czy poprawnie został znaleziony WebElement.

Przykład zidentyfikowanego elementu przycisk Aplikuj

Selenium

Dla osób mniej technicznych może wydawać się mało czytelne i trudniejsze do napisania.

@FindBy(xpath = "//*[@id=\"form_job_application\"]//*[@id=\"submit_btn\"]")
WebElement submitButton;

Tosca

Wystarczy wybrać, w momencie skanowania, odpowiedni obiekt z parametrem technicznym, w tym przypadku Id = submit_btn

Aplikuj Button Tosca - Jak dążyć do Jakości z użyciem Tricentis Tosca. Część 1.

Posiadając fundamenty możemy przystąpić do tworzenia pełnego przypadku testowego:

„Wyszukanie oferty pracy na stronie Sii”

  1. Otworzenie strony sii.pl
  2. Przejście do PRACA W SII
  3. Wyszukanie stanowiska: Automation Tester
  4. Wyfiltrowanie po miejscowości: Warszawa
  5. Przejście do oferty
  6. Sprawdzenie czy Tytuł = Automation Tester
  7. Sprawdzenie czy Lokacja = Warszawa
  8. Wypełnienie formularza Danymi Osobowymi
  9. Zaznaczenie obligatoryjnego checkbox’a
  10. Wysłanie Aplikacji bez załączonego CV
  11. Sprawdzenie czy informacja „Załącznik jest wymagany” zostaje wyświetlona

W kolejnym artykule przedstawiony zostanie materiał poświęcony tworzeniu przypadków testowych, zasilanie danymi oraz uruchamianie skryptów. Zapraszam serdecznie.

Ciąg dalszy nastąpi >>

Wsparcie w zakresie Selenium zapewnił Arkadiusz Purski.


Chcesz dowiedzieć się więcej o testowaniu oprogramowania w Sii? Odwiedź stronę Centrum Kompetencyjnego Usługi Testowe. Jeśli chcesz do nas dołączyć, sprawdź aktualne oferty pracy.

3.6/5 ( głosy: 24)
Ocena:
3.6/5 ( głosy: 24)
Autor
Avatar
Joanna Dzięcioł

Pasjonatka zapewnienia jakości w życiu zawodowym jak i w prywatnym. Orędowniczka usability, exploratory testing & gamification. Entuzjastka branży gier oraz virtual trophy hunter z zamiłowania. Architekt w SII Łódź oraz propagatorka Tricentis Tosca.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?