Konfiguracja zautomatyzowanego środowiska testowego przy użyciu Selenium i Java w GitLab CI pipeline wraz z raportami Allure
Współczesny świat charakteryzuje się dynamicznym rozwojem oprogramowania. Niezbędne elementy dobrego i efektywnego procesu jego tworzenia to ciągła integracja (CI) i zautomatyzowany proces testowania. Praktyki te pomagają utrzymać wysoką jakość kodu, zwiększyć współpracę między członkami zespołu i przyspieszyć wdrażanie zmian. Co więcej, dzięki możliwości wychwycenia błędów na wczesnym etapie cyklu rozwoju, skracają czas i zmniejszają koszty ich napraw.
Czym się zajmiemy?
W tym artykule pokażę Ci, jak skonfigurować automatyczne środowisko testowe przy użyciu Selenium i Java w pipelinie GitLab CI – popularnej platformie CI/CD, która oferuje szeroki zakres funkcjonalności do zarządzania kodem, kompilacjami i wdrożeniami. Przeanalizujemy również generowanie raportów Allure, które zapewniają kompleksowe wizualizacje wyników testów, a także wiele dodatkowych informacji. Dzięki temu umożliwiają zespołom szybką identyfikację obszarów wymagających poprawy.
Jakie zadania wykonamy?
- Konfiguracja projektu – przygotowanie projektu Java z niezbędnymi zależnościami Selenium i Allure przy użyciu Maven lub Gradle.
- Konfiguracja GitLab CI – tworzenie pliku .gitlab-ci.yml w celu zdefiniowania zadań, etapów i środowiska dla pipeline’u.
- Pisanie i uruchamianie testów Selenium – tworzenie przykładowych testów Selenium przy użyciu JUnit 5 i Selenium WebDriver.
- Przeglądanie i analizowanie raportów Allure – uzyskiwanie dostępu i analizowanie wygenerowanego raportu Allure w celu skutecznej oceny wyników testów.
Po przejściu powyższych kroków będziesz mieć solidną wiedzę na temat wdrażania pipeline’u GitLab CI do automatycznego testowania przy użyciu Selenium i Java oraz wykorzystywania raportów Allure do ulepszenia procesu testowania.
1. Konfiguracja projektu
Maven
Po pierwsze – upewnij się, że Twój projekt Java jest skonfigurowany do pracy z narzędziami takimi jak Maven lub Gradle służącymi do automatycznego budowania. Przykładowy plik pom.xml (Maven) powinien zawierać niezbędne zależności Selenium i Allure:
<dependencies>
<!-- Selenium WebDriver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- Allure integration -->
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit5</artifactId>
<version>2.17.2</version>
</dependency>
</dependencies>
Gradle
Dodaj niezbędne zależności do pliku build.gradle:
plugins {
id 'java'
id 'io.qameta.allure' version '2.8.1'
}
repositories {
mavenCentral()
}
dependencies {
// Selenium WebDriver
implementation 'org.seleniumhq.selenium:selenium-java:3.141.59'
// Allure integration
testImplementation 'io.qameta.allure:allure-junit5:2.17.2'
}
allure {
autoconfigure = true
useJUnit5 {
version = '2.17.2'
}
}
2. Konfiguracja GitLab CI
Maven
Dodaj plik .gitlab-ci.yml do katalogu głównego projektu. Zdefiniujesz w nim wszystkie zadania i środowisko, w którym będą one uruchamiane. Przykładowa konfiguracja powinna wygląda tak:
image: maven:3.8.2-openjdk-11
cache:
paths:
- .m2/repository
stages:
- build
- test
- report
build:
stage: build
script:
- mvn clean compile
test:
stage: test
script:
- mvn test
artifacts:
when: always
paths:
- target/allure-results
expire_in: 1 day
allure-report:
image: "franela/allure-docker:latest"
stage: report
script:
- allure generate --clean target/allure-results -o target/allure-report
artifacts:
when: always
paths:
- target/allure-report
expire_in: 1 day
Gradle
Zmodyfikuj plik .gitlab-ci.yml, aby używać poleceń Gradle zamiast Maven. Jak to zrobić? Spójrz:
image: gradle:7.3.3-jdk11
cache:
paths:
- .gradle/caches
stages:
- build
- test
- report
build:
stage: build
script:
- gradle clean compileJava
test:
stage: test
script:
- gradle test
artifacts:
when: always
paths:
- build/allure-results
expire_in: 1 day
allure-report:
image: "franela/allure-docker:latest"
stage: report
script:
- allure generate --clean build/allure-results -o build/allure-report
artifacts:
when: always
paths:
- build/allure-report
expire_in: 1 day
3. Objaśnienie konfiguracji
Maven
W powyższym przykładzie pliku .gitlab-ci.yml używasz obrazu Docker maven:3.8.2-openjdk-11, który zawiera Mavena i JDK 11. Definiujesz trzy etapy: kompilację, testowanie i raportowanie.
Najpierw kompilujesz swój kod za pomocą polecenia mvn clean compile. Podczas testowania uruchamiasz testy Selenium poleceniem mvn test. Ich wyniki są przechowywane w katalogu target/allure-results. Do przechowywania wyników testów używasz sekcji artefaktów, którą wykorzystasz później.
Na etapie raportu generujesz raport Allure. Używasz obrazu Docker franela/allure-docker:latest, który zawiera narzędzie Allure. Skrypt uruchamia „allure generate”, który konwertuje wyniki testów z katalogu target/allure-results na raport Allure przechowywany w katalogu target/allure-report. Używasz również sekcji artefaktów do przechowywania wygenerowanego raportu Allure, który może być następnie dostępny i analizowany przez zespół.
Gradle
W tym przykładzie zaktualizowaliśmy plik build.gradle o wymagane zależności Selenium i Allure. Skonfigurowaliśmy również wtyczkę Allure dla Gradle, która umożliwia raportowanie Allure podczas wykonywania testów.
Dodatkowo zmodyfikowaliśmy plik .gitlab-ci.yml, aby używać poleceń Gradle do budowania i testowania projektu. Pole obrazu używa teraz gradle:7.3.3-jdk11, które zawiera Gradle i JDK 11. Reszta pipeline’u pozostaje taka sama, z etapami kompilacji, testowania i raportowania wykonującymi odpowiednie zadania przy użyciu poleceń Gradle.
4. Pisanie i uruchamianie testów Selenium
Teraz, gdy pipeline CI jest już skonfigurowany, stwórz kilka przykładowych testów Selenium. Użyj frameworka testowego JUnit 5 w połączeniu z Selenium WebDriver. Oto prosty przykład klasy testowej:
import org.junit.jupiter.api.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class SampleSeleniumTest {
private WebDriver driver;
@BeforeEach
public void setUp() {
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
driver = new ChromeDriver();
}
@Test
public void pageTitleTest() {
driver.get("https://www.example.com");
String title = driver.getTitle();
assertEquals("Example Domain", title);
}
@AfterEach
public void tearDown() {
if (driver != null) {
driver.quit();
}
}
}
Sprawdzamy w nim tytuł strony „https://www.example.com”. Dodatkowo w metodzie setUp() inicjalizujemy Chrome WebDriver, a w metodzie tearDown() zamykamy WebDriver.
5. Wyświetlanie i analizowanie raportów Allure
Po pomyślnym wykonaniu zadania przez pipeline GitLab CI możesz uzyskać dostęp do wygenerowanego raportu Allure w sekcji artefaktów pipeline`u. Aby wyświetlić wyniki, pobierz raport Allure i otwórz plik index.html w przeglądarce internetowej.
Raport Allure zapewnia kompleksowy przegląd wyników testów, w tym status zaliczenia/niezaliczenia, czas wykonania i inne istotne informacje. Oferuje również różne wizualizacje, a także opcje filtrowania, aby pomóc w bardziej efektywnej analizie wyników testów.
Podsumowanie
W tym artykule zademonstrowałem, jak skonfigurować pipeline GitLab CI do uruchamiania automatycznych testów z Selenium i Java oraz generowania raportów Allure po zakończeniu testów. Taka konfiguracja umożliwia zespołom utrzymanie wysokiej jakości kodu, usprawnienie procesu rozwoju i szybką identyfikację wszelkich problemów pojawiających się na etapie testowania. Włączając zautomatyzowane testowanie i praktyki ciągłej integracji, można znacznie usprawnić organizację pracy związanej z tworzeniem oprogramowania.