Behavior-Driven Development (BDD)
BDD to praktyka tworzenia oprogramowania, która łączy wymagania biznesowe z implementacją techniczną. Bazuje na współpracy między interesariuszami biznesowymi, testerami i deweloperami w celu zdefiniowania zachowania systemu w języku zrozumiałym dla wszystkich. Jej główne załoznie ta:
- Scenariusze Given-When-Then (Gherkin): opisują przypadki testowe w prostym języku naturalnym.
- Automatyzacja scenariuszy: np. przy użyciu Cucumber, Cypress, JBehave itp.
- Współpraca zespołowa: analitycy, testerzy i programiści wspólnie tworzą specyfikacje.
Cucumber to narzędzie wspierające podejście BDD. Umożliwia pisanie testów akceptacyjnych w języku Gherkin. Można je wykorzystać do automatyzacji scenariuszy opisujących zachowanie systemu — np. proces logowania, rejestracji czy płatności. Cucumber to framework/narzędzie wspierające BDD — pozwala uruchamiać testy akceptacyjne automatycznie
Rola testera w BDD:
- Współtworzenie scenariuszy – nie tylko pisanie testów, ale aktywny udział w definiowaniu wymagań.
- Zrozumienie kontekstu biznesowego – testy muszą pokrywać to, co najważniejsze z punktu widzenia użytkownika.
- Mapowanie scenariuszy na kroki testowe – umiejętność przekładania Given, When, Then na działania testowe.
- Zarządzanie regresją – tworzenie testów, które będą służyły jako “żywa dokumentacja” i zabezpieczenie przed regresją.
Przykład prostego scenariusza Gherkin:
Feature (Funkcja): Logowanie użytkownika
Scenario (Scenariusz): Prawidłowe logowanie
Given (Załóżmy że) użytkownik znajduje się na stronie logowania
When (Jeżeli) wpisze poprawny login i hasło
Then (Wtedy) zostaje przekierowany do panelu użytkownika
Rozszerzona wersja scenariusza Gherkin.
Feature (Funkcja): Logowanie użytkownika
Scenario (Scenariusz): Prawidłowe logowanie
Given (Załóżmy że) użytkownik znajduje się na stronie logowania
And (Oraz) posiada aktywne konto w systemie
When (Jeżeli) wpisze poprawny login i hasło
But (Ale) kliknie przycisk logowania dwukrotnie
Then (Wtedy) zostaje przekierowany do panelu użytkownika
And (Oraz) widzi wiadomość powitalną
Korzyści z BDD
- BDD = lepsza współpraca + testy akceptacyjne + dokumentacja.
- Pomaga uniknąć nieporozumień między “co ma działać” vs “jak to działa”.
- Każdy scenariusz staje się automatycznym, żywym dowodem spełnienia wymagań.
References
- John Ferguson Smart, BDD w działaniu. Sterowanie zachowaniem w rozwoju aplikacji
- Mastering BDD with Cucumber and Java - Medium