Test-Driven Development a Cucumber intro

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:
- 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á.
- Spusti test: Test sa spustí a overí sa, či zlyhá, čo je očakávaný výsledok.
- 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.
- Spusti test znova: Po implementácii sa test spustí znova. Ak prejde, znamená to, že funkčnosť bola správne implementovaná.
- 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.