Uruchomienie testów na Jenkinsie - prosty plan

Wstęp - Ciągła integracja

Tworząc testy automatyczne bardzo szybko napotykamy na temat ciągłej integracji, z angielskiego Continuous Integration (CI). Temat CI jest bardzo szeroki i obszerny. W dzisiejszym świecie IT firmy tworzą dedykowane stanowiska (rola DevOps), które zajmują się tylko i wyłącznie tematem ciągłej integracji.

Tworząc swój pierwszy framework do testów automatycznych w Selenium, musimy wpiąć go jak najszybciej w ramy ciągłej integracji. Dlaczego? Ponieważ to, w jaki sposób będziemy wykonywać testy na zdalnej maszynie, wpływa na to, w jaki sposób będziemy pisać kod frameworka.

W dzisiejszym artykule poznamy najprostszą, a zarazem najstarszą formę tworzenia projektu na serwerze ciągłej pracy. Będzie to prosty projekt.

Do pracy wykorzystamy Jenkinsa. Jenkins w skrócie to serwer automatyzacji, który umożliwia programistom na budowanie, testowanie i wdrażanie oprogramowania. Dlaczego użyjemy Jenkinsa? Ponieważ jest on darmowy, działa pod większością popularnych systemów operacyjnych oraz ma on bogaty zestaw pluginów.

Czego potrzebujemy zanim zaczniemy?

Do uruchomienia testów na ciągłej integracji w minimalnej formie potrzebujemy:

  • Serwera ciągłej integracji,
  • Agenta/Egzekutora podłączonego do serwera CI z wymaganymi zainstalowanymi składnikami do uruchomienia testów
  • Konta z odpowiednimi uprawnieniami do CI,
  • Testów -- opartych o framework testowy, który w jasny sposób raportuje wyniki,
  • Wiedzy na temat tego, jak uruchomić testy z poziomu linii poleceń,
  • Repozytorium testów -- inaczej mówiąc, kodu testów umieszczonego w repozytorium.

Do pracy wykorzystamy:

  • Jenkinsa zainstalowanego na własnej lokalnej maszynie (Windows 10), ze wszystkimi zainstalowanymi składnikami potrzebnymi do uruchomienia testów takimi jak Java czy Maven,
  • Konta admina,
  • Testów z lekcji 9-tej kursu, dostępnej pod adresem - https://github.com/ilusi0npl/selenium-kurs-temat-9*,
  • Gałąź, z jakiej będziemy korzystać, to topic/chapter29,
  • Framework utworzony w lekcji 9-tej wykorzystuje framework Allure do raportowania,

* Uwaga - testy z kursu na gałęzi topic/chapter29 są skonfigurowane w następujący sposób:

  • Uruchomią testy lokalnie, bez Selenium GRID przy użyciu lokalnych driverów,
  • Drivery mają podane następujące ścieżki:
chrome.driver.location=C:/drivers/chromedriver.exe
firefox.driver.location=C:/drivers/geckodriver.exe
ie.driver.location=C:/drivers/IEDriverServer.exe

O tym jak skonfigurować framework pod Selenium GRID oraz utworzyć odpowiednią infrastrukturę, dowiesz się w kolejnych lekcjach.

Taka a nie inna forma konfiguracji wynika z formy kursu, czyli nauki krok po kroku.

Kurs Selenium

Utworzenie prostego projektu

Prace rozpoczynamy od zalogowania się do Jenkinsa. Następnie używając lewego menu wybieramy New Item, tak jak na obrazku poniżej:

1.png

Na formularzu poniżej w polu Enter an item name wpisujemy nazwę planu. Nazwa planu, powinna być samo opisująca się, ponieważ tworzymy plan dla testów Selenium, plan nazwiemy „Selenium_Acceptance_Tests_Simple_Project".

Następnie wybieramy Freestyle project oraz klikamy OK.

2.png

Wpisanie nazwy projektu i kliknięcie OKpowoduje utworzenie projektu i otwarcie jego konfiguracji.

Na formularzu konfiguracyjnym widzimy następujące sekcje:

  • General -- Odpowiada za wysoko poziomową konfigurację projektu,
  • Source Control Management -- Wybór i konfiguracja repozytorium,
  • Build Trigger -- Pola w tej sekcji definiują warunki, kiedy projekt ma być budowany. Na przykład co 2 godziny lub z każdą zmianą w repozytorium,
  • Build Environment - Określa wysoko poziomową konfigurację środowiska, w jakim ma być budowany projekt np. czyszczenie środowiska przed wykonaniem planu,
  • Build -- W sekcji tej definiujemy właściwe kroki planu,
  • Post-build Actions -- analogicznie jak wyżej, sekcja zawiera definicje kroków, które zostaną wykonane po krokach w sekcji Build

3.png

Konfiguracja prostego projektu

Po utworzeniu projektu, możemy przejść do jego konfiguracji.

Konfiguracja będzie polegać na ustawieniu trzech głównych kroków, do których możemy zaliczyć:

  1. Pobranie repozytorium z kodem testów po ang. repository checkout,
  2. Uruchomienie testów,
  3. Wygenerowanie raportu,

Zaczynamy od sekcji Source Code Management, w której to wybieramy opcję git:

  1. W polu Repository URL wpisujemy adres repozytorium - https://github.com/ilusi0npl/selenium-kurs-temat-9
  2. W polu Branches to build wpisujemy wartość topic/chapter29, ponieważ będziemy używać specyficznej gałęzi z repozytorium,
  3. Pozostałe pola pozostawiamy bez zmian.

4.png

Mając skonfigurowane repozytorium możemy skonfigurować testy.

Przechodzimy do sekcji Build , w której to klikamy na przycisk Add build step i wybieramy opcje Invoke top-level Maven targets. Wybieramy tę opcję, ponieważ testy w repozytorium wykorzystują właśnie Mavena. Po kroku w sekcji Build pojawia nam się pusty krok Mavena. Następnie w polu Goals, wpisujemy:

clean install -DskipTests

Komenda składa się z dwóch faz/kroków. Pierwszy krok clean czyści projekt (usuwa katalog /target), zaś w drugi install -DskipTests buduje projekt z pełnymi zależnościami bez uruchamiania testów.

Potrzebujemy jeszcze komendy do uruchomienia testów. W tym celu ponownie klikamy w przycisk Add build step i wybieramy opcje **Invoke top-level Maven targets.**W drugim kroku wpisujemy komendę:

test

Ostatecznie nasza sekcja Build, powinna wyglądać jak na obrazku poniżej:

5.png

Pamiętaj aby zapisać swoją pracę klikając w przycisk Save na dole strony.

Ostatnim krokiem w konfiguracji jest konfiguracja sekcji Post-build Actions , w której to wygenerujemy raport z testów. Framework, który uruchamia testy korzysta z **Allure.**Framework Allure posiada specjalny plugin do Jenkinsa, który służy do generowanie raportu. Aby móc z niego skorzystać, musimy wpierw go na Jenkinsie zainstalować.

Instalacja i konfiguracja pluginu Allure

W celu instalacji pluginu Allure przechodzimy do Manage Jenkins -> Manage plugins.

Zostaje wyświetlona strona, na której mamy dostęp do zainstalowanych pluginów na Jenkinsie.

6.png

Wybieramy zakładkę Available i wpisujemy w polu wyszukiwania Allure. Jeśli Allure nie jest już zainstalowany, pojawi się ona liście na pierwszej pozycji.

7.png

Zaznaczamy pole wyboru i klikamy w przycisk Install without restart. Plugin zaczyna się instalować.

8.png

Po zakończonej sukcesem instalacji, możemy przejść do konfiguracji Allure plugin . W tym celu idziemy do Manage Jenkins -> Global Tool Configuration. Po wejściu na stronę Global Tool Configuration wyszukujemy Allure Commandline. Tak jak na obrazku poniżej:

9.png

Następnie klikamy na **Allure Commandline installations.**Zostanie nam wyświetlona sekcja konfiguracji pluginu, tak jak na obrazku poniżej:

10.png

Wypełniamy kolejno:

  • W pole Namewpisujemy „allure-command-line"
  • Zaznaczamy checkbox Install automatically -- w ten sposób Jenkins pobierze Allure command line z centralnego repozytorium Mavena,
  • W polu Version wybieramy interesującą nas wersje Allure command line. W naszym przykładzie wybierzemy wersje 2.12.1

Po wypełnieniu formularza konfiguracji używamy przycisku Save,aby zapisać ustawienia.

Możemy teraz wrócić do konfiguracji planu.

W sekcji Post-build Actions klikamy na przycisk Add post-build action i wybieramy Allure Report.

W polu Path wpisujemy wartość target/allure-results . Ścieżka target/allure-resultsjest to ścieżka, w której Allure zapisuje wyniki testów. Została ona skonfigurowana we frameworku, który wykorzystujemy.

Ostatecznie sekcje Build oraz Post-build Actions powinny wyglądać jak na obrazku poniżej:

11.png

Kończymy konfigurację przez naciśniecie przycisku Save, aby zapisać plan.

Uruchomienie planu

Po zakończonej konfiguracji możemy uruchomić plan. Aby to zrobić naciskamy na Build Now . Po wykonaniu planu, dostępna jest ikona Allure. Kliknięcie na ikonę przeniesie nas do raportu z wykonania.

12.png

13.png

Co dalej?

W kolejnych artykułach dowiesz się, jak lepiej tworzyć i utrzymywać plany na środowisku ciągłej integracji przy użyciu tzw. pipleline, z ang. rurociąg. Przy pracy z pipelinem wykorzystamy podejście Infrastructure as a code, z angielskiego kod jako infrastruktura.

Potrzebujesz więcej informacji?

Artykuł powstał na bazie kursu Automatyzacja testów z wykorzystaniem Selenium!

O Autorze

Nazywam się Mateusz Ciołek i od 2011 roku zajmuję się testowaniem oprogramowania ze specjalizacją w automatyzacji testów.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.