PrzedsprzedażAkademia AI w testach i jakości oprogramowania: 1 350 zł zamiast 1 750 zł netto do 30 listopada

Startuje przedsprzedaż Akademii AI w testach i jakości oprogramowania: 5 tygodni z Tomaszem Stelmachem, start 11 stycznia 2027. Wyjątkowa cena 1 350 zł netto zamiast 1 750 zł tylko do 30 listopada.

zostało 25 dniZobaczcie program i zapiszcie się
Java dla testerów automatyzujących: plan nauki na 8 tygodni i pierwsze testy w Javie 21
Czas czytania: 14 minut

Java dla testerów automatyzujących to ta część języka i jego ekosystemu, której naprawdę używacie w testach: składnia, programowanie obiektowe, kolekcje i wyjątki, a do tego Maven, JUnit 5, Selenium albo Playwright i REST Assured. Zamiast ogólnych rad o mentorze dostajecie tu zakres tematów, plan na 8 tygodni i trzy działające testy w Javie 21: API, UI w Selenium 4 i UI w Playwright.

Wszystkie przykłady uruchomiliśmy 10.10.2026 w projekcie Maven z Javą 21: 7 testów, 0 błędów. Wersje bibliotek to aktualne wydania z Maven Central z tego dnia. Jeśli dopiero instalujecie środowisko, zacznijcie od lekcji wprowadzenie do języka Java i pierwszy program w Javie, a do tego tekstu wróćcie, gdy chcecie poukładać całą ścieżkę.

Czy Java to nadal dobry wybór dla testera automatyzującego?

Tak, choć z innego powodu, niż często się podaje. Java nie jest jedynym językiem do automatyzacji i nie jest najpopularniejszym językiem w ogóle: według ankiety Stack Overflow Developer Survey 2025 używa jej 29,4 procent respondentów, mniej niż JavaScriptu, Pythona czy SQL. Jej siła w testach to dojrzały ekosystem, silne typowanie, które łapie wiele błędów jeszcze przed uruchomieniem, i fakt, że wiele systemów w bankach, ubezpieczeniach i dużych firmach ma backend właśnie w Javie, więc testy w tym samym języku łatwiej utrzymać razem z kodem.

Ważne sprostowanie wobec starszej wersji tego artykułu: Selenium i Appium nie są „oparte na Javie”. To narzędzia wielojęzyczne. Według dokumentacji Selenium biblioteki są oficjalnie dostępne dla Javy, Pythona, C#, Ruby, JavaScriptu i Kotlina, a według dokumentacji Appium serwer działa na Node.js, a klienci są dla Javy, Pythona, Ruby, .NET i JavaScriptu. Java jest jednym z równorzędnych wyborów, a nie warunkiem.

Narzędzie Języki według dokumentacji Co oznacza dla Was
Selenium 4 Java, Python, C#, Ruby, JavaScript, Kotlin wybór języka zależy od zespołu, nie od narzędzia
Playwright TypeScript i JavaScript, Python, Java, .NET wersja Java wymaga Javy 8 lub nowszej, przeglądarki pobiera sama
Appium serwer Node.js, klienci m.in. Java, Python, Ruby, .NET testy mobilne w Javie piszecie klientem Java
REST Assured Java i inne języki JVM najwygodniejszy wybór do testów API w Javie
Retrofit Java i Android klient HTTP, nie biblioteka do testów API

Źródło: dokumentacja Selenium, Playwright, Appium, REST Assured i Retrofit, odczyt 10.10.2026

Ostatni wiersz też koryguje starszą wersję tekstu. Retrofit to według opisu projektu Square bezpieczny typowo klient HTTP dla Androida i JVM. Da się go użyć w testach, ale nie daje asercji, raportów ani składni given, when, then. Do testów API w Javie standardem jest REST Assured.

Jaki zakres Javy jest potrzebny w testach automatycznych?

Tester automatyzujący nie musi znać całej Javy. Musi swobodnie poruszać się w kilku obszarach, które wracają w każdym frameworku testowym, a resztę może dobrać później. Poniżej lista z odsyłaczami do lekcji naszego kursu Java dla testerów.

Obszar Po co w testach Lekcja na blogu
Typy, zmienne, operatory dane testowe, porównania w asercjach pierwszy program
Warunki i pętle sprawdzanie stanów, iterowanie po wynikach instrukcja if, pętle
Napisy i tablice komunikaty, parsowanie odpowiedzi łańcuchy znakowe, tablice
Klasy, obiekty, konstruktory Page Object, klienci API, dane testowe klasy i obiekty, konstruktory
Hermetyzacja i dziedziczenie BasePage, wspólna konfiguracja testów hermetyzacja, dziedziczenie
Kolekcje i wyjątki listy elementów, obsługa błędów sieci w planie, tydzień 4
Rekordy i text blocks czytelne dane testowe i JSON w kodzie w planie, tydzień 5

Na start możecie spokojnie odłożyć wielowątkowość, strojenie JVM, refleksję i zaawansowane strumienie. Wrócą, gdy będziecie równolegle uruchamiać testy albo pisać własne narzędzia, ale nie blokują pierwszego dobrego testu.

Java dla testerów: ucz się w praktyce, poznawaj narzędzia zintegrowane z Javą, ustal regularny harmonogram nauki
Trzy nawyki, które z naszego doświadczenia odróżniają osoby kończące naukę od tych, które utknęły w tutorialach.

Java dla testerów: jak wygląda plan nauki na 8 tygodni?

Plan zakłada około 6 do 8 godzin tygodniowo i kończy każdy tydzień czymś, co da się pokazać: działającym kodem w repozytorium. Kolejność jest celowa. Testy API pojawiają się przed testami UI, bo są szybsze, stabilniejsze i uczą czytania odpowiedzi serwera bez walki z przeglądarką.

Tydzień Temat Efekt do repozytorium
1 JDK 21, IntelliJ IDEA, Maven, pierwszy program, typy i operatory projekt Maven, który się kompiluje
2 warunki, pętle, metody, napisy 10 małych zadań z walidacji danych
3 klasy, obiekty, konstruktory, hermetyzacja klasa Uzytkownik z builderem danych testowych
4 kolekcje (List, Map), wyjątki, dziedziczenie parser odpowiedzi z obsługą błędów
5 JUnit 5: asercje, cykl życia, testy parametryzowane, rekordy pierwsze 10 testów jednostkowych
6 REST Assured: GET, POST, ścieżki JSON, statusy zestaw testów API dla publicznego serwisu
7 Selenium 4 albo Playwright for Java, Page Object, czekanie 3 testy UI z Page Object
8 Git, raport z testów, uruchamianie w CI (GitHub Actions lub Jenkins) repozytorium z README i zielonym pipeline

Z naszego doświadczenia najwięcej osób odpada w tygodniu 3, przy obiektowości. To normalne. Jeśli klasa i obiekt wydają się Wam filozofią, a nie programowaniem, jesteście w bardzo licznym i dobrym towarzystwie. Pomaga wtedy przerobienie tych samych tematów na przykładzie z testów, a nie na zwierzętach i samochodach z podręcznika.

Jak przygotować projekt: Java 21, Maven i JUnit 5?

Projekt opiera się na pliku pom.xml, w którym Maven trzyma wersję Javy i zależności. Poniżej minimalny zestaw, na którym uruchomiliśmy wszystkie testy z tego artykułu. JUnit 5 to framework, który uruchamia testy, REST Assured obsługuje API, a Selenium i Playwright przeglądarkę. W praktyce wybierzcie jedno z dwóch ostatnich.

<properties>
    <maven.compiler.release>21</maven.compiler.release>
</properties>
<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.13.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>6.1.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.51.0</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.playwright</groupId>
        <artifactId>playwright</artifactId>
        <version>1.63.0</version>
    </dependency>
</dependencies>

Wbrew pozorom

JUnit 6 jest już dostępny i według strony projektu wymaga Javy 17 lub nowszej. Ten sam kod testów z tego artykułu uruchomiliśmy najpierw z JUnit 5.13.4, a potem z JUnit 6.1.3, nie zmieniając ani jednej linijki: 7 testów, 0 błędów w obu wersjach. Oba wydania używają tego samego API Jupiter, więc nauka JUnit 5 nie jest nauką czegoś przestarzałego.

Jak napisać pierwszy test API w Javie z REST Assured?

Test API sprawdza odpowiedź serwera bez przeglądarki: status, nagłówki i treść JSON. Poniżej trzy testy na publicznym serwisie JSONPlaceholder: pobranie użytkownika, test parametryzowany dla trzech identyfikatorów i utworzenie wpisu metodą POST. Składnia given().when().then() czyta się jak scenariusz testowy, a ścieżki typu address.city wskazują pole w JSON.

package pl.qi.testy;

import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.notNullValue;

import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class UzytkownicyApiTest {

    @BeforeAll
    static void konfiguracja() {
        RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
    }

    @Test
    @DisplayName("GET /users/1 zwraca użytkownika z poprawnym e-mailem")
    void pobieraUzytkownika() {
        given()
            .accept(ContentType.JSON)
        .when()
            .get("/users/1")
        .then()
            .statusCode(200)
            .body("id", equalTo(1))
            .body("email", equalTo("Sincere@april.biz"));
    }

    @ParameterizedTest(name = "użytkownik {0} mieszka w mieście {1}")
    @CsvSource({"1, Gwenborough", "2, Wisokyburgh", "3, McKenziehaven"})
    void sprawdzaMiasto(int id, String miasto) {
        given()
            .pathParam("id", id)
        .when()
            .get("/users/{id}")
        .then()
            .statusCode(200)
            .body("address.city", equalTo(miasto));
    }

    @Test
    void tworzyPost() {
        String nowyPost = """
            {"title": "Test z REST Assured", "body": "Java 21", "userId": 1}
            """;
        given()
            .contentType(ContentType.JSON)
            .body(nowyPost)
        .when()
            .post("/posts")
        .then()
            .statusCode(201)
            .body("id", notNullValue())
            .body("title", equalTo("Test z REST Assured"));
    }
}

Kilka elementów Javy, które tu pracują: importy statyczne skracają wywołania, adnotacje @Test i @ParameterizedTest mówią JUnit, co uruchomić, a blok tekstowy z trzema cudzysłowami (Java 15 i nowsze) pozwala wkleić JSON bez escapowania. Wynik uruchomienia: 5 testów, 0 błędów. Jeśli testy API są dla Was nowe, zacznijcie od artykułu testowanie API dla początkujących, a w Javie przećwiczycie je na szkoleniu REST Assured: testy integracyjne API dla testerów.

Selenium 4 czy Playwright for Java do testów UI?

Oba narzędzia dobrze działają z Javą i oba w aktualnych wersjach same pobierają to, czego potrzebują. Według dokumentacji Selenium od wersji 4.6 każde wydanie zawiera Selenium Manager, który znajduje albo pobiera sterownik przeglądarki, więc ręczne ściąganie chromedrivera to już historia. Playwright for Java przy pierwszym uruchomieniu pobiera przeglądarki Chromium, Firefox i WebKit.

package pl.qi.testy;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.time.Duration;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

class FormularzSeleniumTest {

    private WebDriver driver;

    @BeforeEach
    void start() {
        ChromeOptions opcje = new ChromeOptions();
        opcje.addArguments("--headless=new", "--window-size=1920,1080");
        // Selenium Manager sam znajdzie albo pobierze chromedriver pasujący do przeglądarki
        driver = new ChromeDriver(opcje);
    }

    @Test
    void wysylaFormularz() {
        driver.get("https://www.selenium.dev/selenium/web/web-form.html");
        driver.findElement(By.id("my-text-id")).sendKeys("Quality Island");
        driver.findElement(By.cssSelector("button[type='submit']")).click();

        // po kliknięciu ładuje się nowa strona, więc czekamy na komunikat
        WebElement komunikat = new WebDriverWait(driver, Duration.ofSeconds(10))
            .until(ExpectedConditions.visibilityOfElementLocated(By.id("message")));
        assertEquals("Received!", komunikat.getText());
    }

    @AfterEach
    void koniec() {
        driver.quit();
    }
}

Ten test nie przeszedł nam za pierwszym razem i dobrze, bo pokazuje dwie klasyczne pułapki. Najpierw kliknięcie przechwycił inny element, bo przeglądarka bez interfejsu startuje z małym oknem, więc doszło --window-size. Potem test szukał komunikatu, zanim załadowała się nowa strona, więc doszło jawne czekanie WebDriverWait. Więcej o czekaniu w Selenium piszemy w artykule explicit wait vs implicit wait.

package pl.qi.testy;

import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import com.microsoft.playwright.options.AriaRole;
import org.junit.jupiter.api.Test;

class FormularzPlaywrightTest {

    @Test
    void wysylaFormularz() {
        try (Playwright playwright = Playwright.create()) {
            Browser przegladarka = playwright.chromium().launch();
            Page strona = przegladarka.newPage();
            strona.navigate("https://www.selenium.dev/selenium/web/web-form.html");

            strona.getByLabel("Text input").fill("Quality Island");
            strona.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Submit")).click();

            // asercja z automatycznym czekaniem, bez ręcznego Thread.sleep
            assertThat(strona.locator("#message")).hasText("Received!");
        }
    }
}

W Playwright ten sam scenariusz przeszedł od razu, bo asercja assertThat(...).hasText(...) sama ponawia sprawdzenie, aż tekst się pojawi albo minie limit czasu, a lokatory po etykiecie i roli przypominają to, jak użytkownik widzi stronę. Selenium ma za to większą bazę gotowych projektów, integracji i ofert pracy, a Selenium Grid pozwala uruchamiać testy na wielu maszynach.

Kryterium Selenium 4 Playwright for Java
Sterowniki i przeglądarki Selenium Manager pobiera sterownik pobiera własne przeglądarki
Czekanie jawne WebDriverWait wbudowane w akcje i asercje
Języki Java, Python, C#, Ruby, JavaScript, Kotlin TypeScript i JavaScript, Python, Java, .NET
Wynik naszego testu przeszedł po dodaniu rozmiaru okna i czekania przeszedł za pierwszym razem
Kiedy wybrać istniejące frameworki, Grid, duży rynek pracy nowy projekt, aplikacje z dużą ilością JavaScriptu

Pełne porównanie z Cypress znajdziecie w tekście Selenium, Cypress czy Playwright. Jeśli chcecie przejść jedną ścieżkę z trenerem, macie do wyboru szkolenie automatyzacja testów Selenium WebDriver albo automatyzacja testów z Playwright w Javie. Testy automatyczne w Javie dla aplikacji mobilnych to osobny temat: szkolenie Appium w Javie.

Jak zbudować portfolio, które przekona rekrutera?

Rekruter nie uruchomi Waszego kodu, ale otworzy repozytorium i README. Portfolio ma pokazać, że umiecie zbudować mały, porządny projekt testów, a nie że przeszliście 40 tutoriali. Wystarczą trzy rzeczy: testy API, kilka testów UI z Page Object i zielony pipeline.

README

Jak uruchomić w 1 minucie

Wymagania, jedna komenda mvn test, opis przypadków testowych i znane ograniczenia.

Struktura

Page Object i dane testowe

Osobno strony, osobno testy, osobno dane. Żadnych haseł w kodzie.

CI

Zielony pipeline

GitHub Actions albo Jenkins uruchamia testy przy każdym commicie i publikuje raport.

U naszych klientów, którym pomagamy rekrutować i szkolić zespoły, najlepiej wypada repozytorium, w którym autor potrafi wyjaśnić, dlaczego dany test jest na poziomie API, a nie UI. Swoje umiejętności możecie też pokazać na QA Board, platformie łączącej specjalistów QA z firmami. Jeśli wolicie zdobyć doświadczenie na prawdziwym projekcie z zespołem, jest projekt szkoleniowo stażowy dla testera automatyzującego.

Jakie błędy popełniają testerzy uczący się Javy?

Te błędy widzimy na każdej edycji szkoleń, na których szkolimy testerów wchodzących w automatyzację. Według danych Quality Island przeszkoliliśmy już ponad 2 500 specjalistów, a nasze zespoły napisały ponad 450 000 testów automatycznych, więc lista jest z praktyki, nie z podręcznika.

Błąd Skutek Co robić zamiast
Nauka Javy w oderwaniu od testów po 3 miesiącach nadal brak pierwszego testu od tygodnia 5 każdy temat ćwiczcie na teście
Kopiowanie tutoriali z Selenium 3 ręczne sterowniki, przestarzałe API Selenium 4 i Selenium Manager, dokumentacja selenium.dev
Thread.sleep zamiast czekania wolne i niestabilne testy WebDriverWait albo asercje Playwright z automatycznym czekaniem
Wszystko przez UI testy trwają godzinami logika i dane w testach API, UI tylko dla ścieżek krytycznych
Asercje w Page Object klasy stron nie do ponownego użycia Page Object opisuje stronę, asercje zostają w teście

Jeśli chcecie zacząć od samych podstaw, przydadzą się też najlepsze książki do nauki Javy, a ludzi, którzy przeszli tę drogę wcześniej, spotkacie na Testing Ground Conference.

Co zabrać z tego artykułu

01Java to jeden z kilku równorzędnych języków automatyzacji. Selenium, Playwright i Appium są wielojęzyczne, a Retrofit to klient HTTP, nie narzędzie do testów.

02Tester potrzebuje wycinka Javy: typy, warunki, pętle, obiektowość, kolekcje, wyjątki, rekordy. Wielowątkowość i JVM mogą poczekać.

03Plan na 8 tygodni kończy każdy tydzień kodem w repozytorium. Testy API przed testami UI.

04Aktualny stos: Java 21, Maven, JUnit 5 (kod działa też na JUnit 6), REST Assured, Selenium 4 z Selenium Managerem albo Playwright for Java.

05Portfolio to README, Page Object i zielony pipeline, a nie liczba ukończonych tutoriali.

Chcecie przejść tę ścieżkę z trenerem, na przykładach z projektów? Szkolenie z Javy dla testerów prowadzi od składni do pierwszych testów automatycznych.

Zobacz szkolenie z Javy


Powiązane na blogu Quality Island

Pełna lista źródeł

Co o tym sądzisz?

Dodaj komentarz

Bądź na bieżąco
Strefa QA, portal z eksperckimi artykułami o jakości oprogramowania
Bądź na bieżąco
Szkolenie Specjalista ds. AI w organizacji: program przekwalifikowujący
Specjalista ds. AI w organizacji
Specjalista ds. AI w organizacji: program przekwalifikowujący

4 400,00 zł

03.02.27, 14.04.27, 02.06.27
5 dni
Szkolenie Inżynier AI: program przekwalifikowujący dla specjalistów IT
Inżynier AI
Inżynier AI: program przekwalifikowujący dla specjalistów IT

6 900,00 zł

12.01.27, 16.03.27
8 tygodni
KURS ONLINE: PAQT Foundation, AI w pracy testera, przygotowanie do egzaminu

590,00 zł

Popularne artykuły
Język Gherkin: co to jest i jak go używać w testowaniu oprogramowania, grafika Quality Island
Język Gherkin: co to jest i jak go używać w testowaniu oprogramowania
Smoke test: co to jest i czym różni się od sanity testu, grafika Quality Island
Smoke test: co to jest, kiedy go uruchamiać i czym różni się od sanity testu
Jak zostać testerem oprogramowania: ścieżka krok po kroku, grafika Quality Island
Jak zostać testerem oprogramowania: ścieżka krok po kroku bez dyplomu informatyka
Najnowsze artykuły
Audyt WCAG 2.2: przebieg, ceny w zł i szablon zapytania ofertowego, okładka artykułu Quality Island
Audyt WCAG 2.2: przebieg, ceny w zł i szablon zapytania ofertowego
Tester manualny: co robi, ile zarabia i checklista kompetencji na pierwszą rozmowę, grafika Quality Island
Tester manualny: co robi, ile zarabia w 2026 i checklista kompetencji na rozmowę
Art. 4 AI Act: kompetencje w zakresie AI w zespole IT i QA, checklista i rejestr szkoleń AI
Art. 4 AI Act po Digital Omnibus: kompetencje w zakresie AI w zespole IT i QA, checklista i rejestr szkoleń
Popularne kategorie

Grupa marek jakości oprogramowania

Jakość oprogramowania w Polsce ma swój adres

Quality Island