Návod: Prvý akceptačný test - "Newsletter subscription" príklad

Tento návod ťa prevedie jedným kompletným ATDD cyklom na jednoduchom príklade: formulár na prihlásenie do newslettera (email input + tlačidlo Odoslať). Postupuješ od akceptačných kritérií smerom dovnútra systému, kým nemáš zelený, funkčný kus softvéru.

  1. 1. Spíš zoznam akceptačných kritérií

    Pred písaním čo i len riadku kódu spíš, aké správanie od formulára očakávaš, v tvare Given/When/Then: (1) platný email → uloží sa a zobrazí sa potvrdenie; (2) neplatný formát emailu → zobrazí sa chybová správa a nič sa neuloží; (3) email, ktorý je už prihlásený → zobrazí sa informačná správa namiesto duplicitného záznamu. Toto je tvoj zoznam testov – postupne ho vybavíš.

  2. 2. Napíš prvý padajúci akceptačný test

    Vyber si najjednoduchší scenár (platný email) a napíš preň jeden automatizovaný acceptance test na úrovni celého systému – napr. pomocou Cypress, Playwright alebo Selenium (najpoužívanejšie nástroje na testovanie cez prehliadač). Predpokladom je bežiaca aplikácia (aspoň lokálne) a nainštalovaný testovací nástroj v projekte. Test v tomto momente padá, pretože formulár ani endpoint ešte neexistujú – to je v poriadku, tento červený test je tvoja špecifikácia.

  3. 3. Rozbi cestu od UI po implementáciu

    Aby padajúci test prešiel, postupuj zvonka dovnútra: pridaj formulár a routu, potom rozhranie na komunikáciu s NewsletterService a napokon jeho implementáciu. Vnútri tohto kroku môžeš použiť klasický TDD cyklus (napíš unit test na kúsok správania, over že padá, urob ho zeleným) – ale vždy len v rozsahu, ktorý potrebuješ na to, aby prešiel akceptačný test.

  4. 4. Voliteľne refaktoruj

    Keď sú akceptačný aj unit testy zelené, uprav kód tak, aby bol čistejší – premenuj, vytiahni duplicitu, zjednoduš rozhranie. Testy ti počas refaktoringu dávajú istotu, že si nezmenil(a) správanie.

  5. 5. Opakuj pre ďalšie scenáre

    Vezmi ďalšiu položku zo zoznamu (neplatný email), napíš preň nový padajúci akceptačný test a zopakuj kroky 2 – 4. Pokračuj, kým zoznam scenárov nie je prázdny – vtedy je funkcionalita hotová.