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.
- 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.
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:
| |
| |
|
- 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:
| |
| |
| |
|
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:
- helpers – zawiera klasy do konfiguracji drivera oraz przeglądarki
- 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
- testData – zawiera interface z danymi testowymi
- tests – zawiera klasę z testami oraz bazową klasę TestBase, która inicjalizuje WebDriver
- 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
Posiadając fundamenty możemy przystąpić do tworzenia pełnego przypadku testowego:
„Wyszukanie oferty pracy na stronie Sii”
- Otworzenie strony sii.pl
- Przejście do PRACA W SII
- Wyszukanie stanowiska: Automation Tester
- Wyfiltrowanie po miejscowości: Warszawa
- Przejście do oferty
- Sprawdzenie czy Tytuł = Automation Tester
- Sprawdzenie czy Lokacja = Warszawa
- Wypełnienie formularza Danymi Osobowymi
- Zaznaczenie obligatoryjnego checkbox’a
- Wysłanie Aplikacji bez załączonego CV
- 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.
Zostaw komentarz