Uživatelské nástroje

Nástroje pro tento web


bdd

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:

  • Testy psané pouze vývojáři často neodpovídají skutečným obchodním požadavkům.
  • Nedostatek komunikace mezi technickým a netechnickým týmem.

Klíčové principy BDD:

  • Společný jazyk – tým používá „doménový jazyk“ (Ubiquitous Language) pro popis požadavků.
  • Příklady místo abstrakcí – chování se specifikuje pomocí konkrétních případů použití (scénářů).
  • Automatizace specifikací – tyto příklady lze spustit jako živé testy.
  • Zpětná vazba v reálném čase – okamžitě vidíme, zda systém chová podle očekávání.

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:

  • Given – počáteční stav („předpoklady“),
  • When – akce uživatele nebo událost,
  • Then – očekávaný výsledek.

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

  • Lepší komunikace – odstraňuje nedorozumění mezi obchodní a technickou stránkou.
  • Jasnější požadavky – chování je popsáno konkrétními příklady, ne vágními popisy.
  • Živá dokumentace – `.feature` soubory jsou vždy aktuální, protože selhání testu signalizuje nesoulad.
  • Rané odhalení chyb – chyby v pochopení požadavků se projeví hned při psaní scénářů.
  • Automatizace akcepčních testů – snadná validace, že systém dělá to, co má.

Nevýhody a rizika

  • Náklady na zavádění – vyžaduje změnu myšlení a školení týmu.
  • Nadměrná automatizace – BDD není vhodný pro všechny typy testů (např. jednotkové testy).
  • Technické detaily v Gherkinu – pokud scénáře popisují „jak“ místo „co“, ztrácí se hlavní výhoda.
  • Údržba testů – změna UI může vyžadovat úpravu mnoha step definitions.

Doporučené postupy (Best Practices)

  • Začněte workshopy „Three Amigos“ – společné schůzky vývojáře, testera a product ownera k definici chování.
  • Používejte přirozený jazyk – scénář by měl číst jako uživatelský příběh.
  • Vyhněte se podmínkám a cyklům v `.feature` souborech – raději vytvořte samostatné scénáře.
  • Nepřetěžujte Gherkin technickými detaily – ty patří do kódu, ne do specifikace.
  • Integrujte BDD do CI/CD – automaticky spouštějte scénáře při každém commitu.

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é

bdd.txt · Poslední úprava: autor: admin