Obsah

BDD (Behavior-Driven Development)

BDD (z anglického Behavior-Driven Development, česky vývoj řízený chováním) je agilní softwarová metodika, která rozšiřuje principy TDD (Test-Driven Development) o spolupráci mezi vývojáři, testery a obchodními zástupci (product owners). Cílem BDD je zajistit, že tým vyvíjí správnou funkcionalitu, která skutečně splňuje potřeby uživatelů a podnikání.

Na rozdíl od klasického testování, kde se testy píší až dodatečně, BDD začíná definicí požadovaného chování systému před samotným kódováním – a to v jazyce srozumitelném všem zúčastněným stranám.

Původ a principy

BDD zformuloval Dan North v roce 2003 jako reakci na běžné problémy TDD:

Klíčové principy BDD:

Rozdíl mezi TDD, ATDD a BDD

Metodika Zaměření Hlavní aktéři Forma specifikace
TDD (Test-Driven Development) Jednotkové testy, nízkoúrovňová logika Vývojáři Kód (např. JUnit, pytest)
ATDD (Acceptance Test-Driven Development) Akcepční kritéria, shoda na požadavcích Vývojáři, testeři, product owner Tabulky, příklady
BDD Chování systému z pohledu uživatele Celý tým (včetně netechnických členů) Přirozený jazyk (Gherkin)

BDD je tedy nadstavbou TDD, která přidává komunikační a specifikační vrstvu.

Gherkin – jazyk pro popis chování

BDD využívá formální, ale člověkem čitelný jazyk Gherkin k popisu scénářů. Každý scénář má strukturu:

Příklad:

Scenario: User adds item to cart
  Given I am on the product page for "Notebook XYZ"
  When I click the "Add to Cart" button
  Then the cart should contain 1 item
  And I should see a confirmation message

Tyto scénáře se ukládají do souborů s příponou `.feature` a slouží jako živá dokumentace i jako spustitelné testy.

Nástroje pro BDD

Nejznámějším nástrojem pro BDD je Cucumber, ale existují i alternativy:

Jazyk Nástroj Poznámka
————-——————-———-
Java Cucumber-JVM Nejrozšířenější implementace
JavaScript @cucumber/cucumber, Playwright + Gherkin Podpora pro moderní E2E testování
.NET (C#) SpecFlow Plně integrován do Visual Studia
Python behave, pytest-bdd behave je nejbližší Cucumberu
Ruby Cucumber Původní implementace

Tyto nástroje mapují řádky Gherkinu na tzv. step definitions – funkce v programovacím jazyce, které skutečně provádějí test (např. ovládají webový prohlížeč přes Selenium).

Výhody BDD

Nevýhody a rizika

Doporučené postupy (Best Practices)

BDD v praxi – typický workflow

1. **Definice požadavku** – product owner popíše uživatelský příběh.
2. **Týmový workshop** – společně se vytvoří konkrétní příklady (scénáře v Gherkinu).
3. **Automatizace** – vývojář naimplementuje step definitions.
4. **Vývoj kódu** – vývojář píše kód tak, aby všechny scénáře prošly.
5. **Ověření** – tým společně ověří, že chování odpovídá očekávání.
6. **Refaktoring** – kód se upravuje, ale scénáře zůstávají stejné (zajišťují regresní bezpečnost).

Související pojmy

Externí odkazy

Viz také