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 dayGradle
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 day3. 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.
Przeczytaj również: Jak zarządzać projektami IT
FAQ
Jaki jest cel integracji Selenium i GitLab CI?
Celem jest stworzenie zautomatyzowanego środowiska testowego, w którym testy Selenium napisane w Javie są automatycznie uruchamiane w pipelinie GitLab CI. Pomaga to utrzymać wysoką jakość kodu i przyspiesza wdrażanie zmian.
Do czego służy plik .gitlab-ci.yml?
Plik .gitlab-ci.yml to plik konfiguracyjny, który definiuje wszystkie zadania, etapy (np. build, test, report) oraz środowisko wykonawcze dla pipeline’u ciągłej integracji w GitLab.
Jak generowane są raporty Allure w tym procesie?
Raporty Allure są generowane w osobnym etapie (report) pipeline’u, który wykorzystuje artefakty (wyniki testów) z etapu test. Specjalne polecenie allure generate przetwarza te wyniki na interaktywny raport HTML.
Czy muszę coś dodać do mojego projektu Java, aby to działało?
Tak, należy skonfigurować projekt Maven lub Gradle, dodając do niego niezbędne zależności. Kluczowe zależności to selenium-java do obsługi WebDrivera oraz allure-junit5 (lub odpowiednik) do integracji z raportowaniem Allure.
Poznaj mageek of j‑labs i daj się zadziwić, jak może wyglądać praca z j‑People!
Skontaktuj się z nami


