Test-Driven Development a Cucumber intro

Test-Driven Development a Cucumber intro
6 MIN
10 máj 2024

Obsah

Vývoj riadený testami (TDD)

Vývoj riadený testami (Test-Driven Development, TDD) je vývojová metóda, ktorá sa zameriava na písanie testov pred samotným implementovaním funkcionality. Ide o iteratívny proces, ktorý sa zameriava na vytváranie testov, ich spúšťanie a potom implementáciu funkcionality tak, aby testy prešli.

TDD postupuje podľa nasledujúcich krokov:

  1. Napíš test: V prvom kroku sa napíše test, ktorý popisuje želanú funkcionalitu, ktorá sa má implementovať. Tento test by mal zlyhať, pretože funkčnosť ešte nie je implementovaná.
  2. Spusti test: Test sa spustí a overí sa, či zlyhá, čo je očakávaný výsledok.
  3. Implementuj funkčnosť: Na základe testu sa implementuje funkčnosť tak, aby test prešiel. Toto znamená napísať dostatočný kód, ktorý spĺňa požiadavky testu.
  4. Spusti test znova: Po implementácii sa test spustí znova. Ak prejde, znamená to, že funkčnosť bola správne implementovaná.
  5. Refaktorizácia: Po úspešnom prechode testu sa môže vykonávať refaktorizácia kódu. To znamená zlepšiť kvalitu a čitateľnosť kódu bez ovplyvnenia správneho fungovania testov.

Výhody vývoja riadeného testami sú:

  • Lepšia kvalita kódu: TDD vytvára silné testové pokrytie, čo vedie k vyššej kvalite kódu. Každá zmena v kóde sa overí pomocou testov, čo zabezpečuje, že neprinesie nechcené vedľajšie účinky.
  • Väčšia dôvera: TDD prináša väčšiu dôveru v správnosť implementovanej funkcionality. Ak testy prechádzajú, môžete mať väčšiu istotu, že kód funguje podľa očakávaní.
  • Rýchle spätné väzby: TDD umožňuje okamžitú spätnú väzbu, keď testy prechádzajú alebo zlyhávajú. To umožňuje rýchlu detekciu a opravu chýb.
  • Zlepšená návrhová schopnosť: TDD podporuje dobrý návrh kódu, pretože vám umožňuje premýšľať o testovateľnosti a použiteľnosti kódu už pri jeho tvorbe.
  • Dokumentácia: Testy v TDD slúžia aj ako dokumentácia, pretože popisujú požadované funkcionálne požiadavky a očakávané výstupy.

Vývoj riadený testami (TDD) je užitočnou metódou pre vývojárov, pretože zlepšuje kvalitu kódu, zvyšuje dôveru v správnosť implementácie a umožňuje rýchlu spätnú väzbu. TDD vás núti premýšľať o testovateľnosti a návrhu už v raných fázach vývoja, čo vedie k lepšiemu a robustnejšiemu softvéru.

Cucumber

Cucumber je open-source nástroj na testovanie akceptačných testov, ktorý umožňuje písanie testovacích scenárov v jednoduchom a zrozumiteľnom jazyku nazývanom Gherkin. Scenáre v Cucumber sú písané vo formáte, ktorý je ľahko čitateľný nielen pre vývojárov, ale aj pre ostatných zainteresovaných ľudí, ako sú manažéri, testeri alebo zákazníci.

Cucumber podporuje behavior-driven development (BDD) prístup, ktorý zdôrazňuje komunikáciu a spoluprácu medzi rôznymi účastníkmi tímu, aby sa dosiahol lepší porozumenie požiadaviek a správneho fungovania softvéru.

Hlavné vlastnosti Cucumber sú:

  • Gherkin Syntax: Cucumber používa Gherkin syntax, ktorá je jednoduchá a ľahko čitateľná. Scenáre sa píšu vo forme krokov, ktoré sú vyjadrené klíčovými slovami ako „Given“ (Predpoklad), „When“ (Keď), „Then“ (Potom) a ďalšími, čo umožňuje jasne definovať očakávané správanie softvéru.
  • Automatizácia testov: Cucumber umožňuje automatizovať testy napísané v Gherkin syntaxe pomocou programovacích jazykov ako Java, Ruby, C# a ďalších. To umožňuje pripojenie testov k existujúcemu softvéru a automatizáciu ich vykonávania.
  • Jednoduchá spolupráca: Cucumber uľahčuje spoluprácu medzi členmi tímu, pretože jazyk Gherkin je zrozumiteľný pre všetkých. Scenáre môžu byť použité ako spoločná reprezentácia požiadaviek, ktorá pomáha zabezpečiť, že všetci majú rovnaké porozumenie o tom, čo softvér má robiť.
  • Reportovanie: Cucumber poskytuje bohaté možnosti reportovania, ktoré umožňujú sledovať výsledky testovania a spravovať ich. Môžete generovať prehľadné správy, ktoré zobrazujú prechádzajúce a zlyhávajúce scenáre, ako aj podrobnosti o jednotlivých krokoch.

Cucumber je vynikajúcim nástrojom na testovanie akceptačných testov a podporuje BDD prístup k vývoju softvéru. Jeho jednoduchý a zrozumiteľný jazyk Gherkin umožňuje lepšiu komunikáciu medzi členmi tímu a zlepšuje porozumenie požiadaviek. Automatizácia testov v Cucumber zvyšuje efektivitu testovania a generovanie reportov umožňuje sledovať výsledky a spravovať testovacie scenáre.

V programe Cucumber máme dva typy súborov – súbor s funkciami a súbor s definíciou krokov.

Súbor funkcie – súbor funkcie definuje určité správanie aplikácie v obyčajnom texte. Môže ho napísať QA, obchodný analytik, klient alebo dokonca akýkoľvek netechnický zainteresovaný subjekt. Súbory funkcií v programe cucumber sa zapisujú vo forme Given-When-Then (Dané-keď-potom). Príklad súboru funkcií:

Feature: Check addition in Google calculator

   In order to verify that google calculator work correctly

   As a user of google

   I should be able to get correct addition result

   Scenario: Addition

   Given I open google.com

   When I enter 2+2 in search textbox

   Then I should get result as 4

Súbor s definíciou kroku – V súbore s definíciou kroku zapisujeme kód, ktorý implementuje kroky zapísané v príkazoch Given-When-Then súboru funkcií. Na implementáciu krokov môžeme použiť rôzne nástroje a jazyky, napr. Watir s Ruby alebo Selenium s Javou atď.

V ďalšom príspevku nastavíme Cucumber so Selenium v Jave – Cucumber so Selenium a napíšeme vzorový testovací skript, ktorý bude implementovať súbor funkcie Google Calculator.