Definicja #
Cucumber to narzędzie open-source wspierające metodykę BDD (Behavior-Driven Development), które pozwala pisać i uruchamiać testy oprogramowania w języku naturalnym. Opiera się na języku Gherkin — strukturalnej składni Given-When-Then — jako formacie specyfikacji zachowania systemu.
Jak działa Cucumber:
- Feature files — pliki
.featurezawierające scenariusze w Gherkin opisujące oczekiwane zachowanie systemu - Step Definitions — kod (Java, JS, Ruby itp.) mapujący zdania Gherkin na konkretne akcje testowe (wywołania API, kliknięcia w UI, asercje)
- Runner — narzędzie uruchamiające scenariusze Gherkin przez dopasowanie kroków do step definitions
Przykład scenariusza Gherkin (w pliku .feature):
Feature: Logowanie
Scenario: Poprawne logowanie
Given użytkownik jest na stronie logowania
When podaje prawidłowy login i hasło
Then zostaje przekierowany do panelu głównegoKluczowe ekosystemy Cucumber:
- Cucumber-JVM — Java; integracja z JUnit i TestNG; najpopularniejsza wersja dla enterprise
- Cucumber.js — JavaScript/TypeScript; integracja z Playwright, WebdriverIO
- Cucumber-Ruby — oryginalna implementacja (Ruby)
- SpecFlow — odpowiednik Cucumber dla .NET/C# (osobny projekt, ta sama idea)
Cucumber nie jest frameworkiem testowym sam w sobie — korzysta z istniejących frameworków (JUnit, TestNG, Mocha) do uruchamiania kroków. Jest warstwą orkiestracji i dokumentacji żywej (living documentation).
Zastosowania #
- Testy akceptacyjne i E2E pisane przez testerów lub BA — scenariusze Gherkin zrozumiałe dla osób bez technicznego wykształcenia
- Living documentation — feature files jako żywa specyfikacja systemu aktualizowana wraz z kodem
- Automatyzacja testów UI z Playwright lub Selenium — step definitions sterujące przeglądarką przez Cucumber runner
- API testing — step definitions wywołujące REST API i weryfikujące odpowiedzi (np. z RestAssured w Javie)
- Testy regresji w pipeline CI/CD — Cucumber reports jako czytelny raport dla zespołu i menedżerów
Ścieżka nauki #
Cucumber jest popularnym narzędziem w rolach QA Automation Engineer — wymaga podstawowej znajomości programowania.
Zacznij od:
- Podstawy BDD i Gherkin — składnia Given/When/Then, Background, Scenario Outline, Tags
- Cucumber-JVM (Java): projekt Maven/Gradle, adnotacje
@Given,@When,@Then, JUnit Runner - Lub Cucumber.js (JavaScript): npm install, konfiguracja cucumber.json, step definitions w TypeScript
- Pisanie pierwszego scenariusza: feature file + step definitions + uruchomienie
Następnie pogłębiaj:
- Integracja z Selenium WebDriver lub Playwright — testowanie aplikacji webowych przez Cucumber
- Parametryzacja scenariuszy:
Scenario OutlinezExamplestable - Cucumber Reports — generowanie HTML raportów (Cucumber Reports plugin, Allure)
- Page Object Model z Cucumber — architektura testów UI z separacją warstw
- SpecFlow — jeśli pracujesz w ekosystemie .NET/C#
FAQ #
- Czym różni się Cucumber od Selenium?
- Selenium to narzędzie do sterowania przeglądarką — dostarcza API do klikania, wpisywania i weryfikowania elementów UI. Cucumber to framework BDD do organizacji testów w czytelne scenariusze Gherkin. Używa się ich razem: Cucumber orkiestruje scenariusze, a step definitions wywołują Selenium WebDriver lub Playwright.
- Co to jest Gherkin i jak działa z Cucumber?
- Gherkin to język strukturyzowanych scenariuszy testowych oparty na składni Given-When-Then (Kiedy-Gdy-Wtedy). Pliki .feature zawierają scenariusze w Gherkin; Cucumber parsuje je i dopasowuje każde zdanie do step definitions — funkcji w Javie, JS lub innym języku, które faktycznie wykonują test.
- Czy Cucumber jest używany w Polsce?
- Tak — Cucumber (JVM i JS) jest szeroko stosowany w polskich firmach, szczególnie w projektach enterprise z Javą i dużymi zespołami QA. Wymagany jest w wielu ofertach pracy na QA Automation Engineer. SpecFlow (odpowiednik .NET) pojawia się rzadziej.
- Czym jest SpecFlow?
- SpecFlow to odpowiednik Cucumber dla platformy .NET/C#. Używa tej samej składni Gherkin i tej samej idei BDD, ale step definitions pisze się w C# z integracją NUnit lub xUnit. SpecFlow jest popularną alternatywą dla testerów automatyzujących aplikacje .NET.