Business & Integration IT konzultant
Gherkin testing, BDD – Behavior Driven Development testing a písanie testovacích scenárov
Pokiaľ ide o spôsob písania testov a testovania softvéru, tímy majú k dispozícii mnoho možností. Ako určiť, akú syntax použiť a aké testovacie riešenie je pre teba najvhodnejšie? V tomto článku sa budeme zaoberať používaním jazyka Gherkin a testov Gherkin. Budeme sa venovať syntaxi a spôsobu písania testu.
Skôr ako si povieme, čo je Gherkin language a ako písať Gherkin testy, musíme najprv pochopiť, akú úlohu zohráva vývoj riadený správaním (BDD) a ako tento postup a Gherkin spolupracujú.
Čo je BDD – Behavior-Driven Development ?
Behavior-Driven Development je agilná metodika vývoja softvéru, pri ktorej sa aplikácia dokumentuje a testy sa navrhujú na základe správania, ktoré používateľ očakáva pri interakcii s aplikáciou. Podporovaním developerov a testerov, aby sa zamerali len na požadované správanie aplikácie alebo programu, pomáha vyhnúť sa nadmernému kódu, zbytočným funkciám alebo nedostatočnému zameraniu daného testu alebo kódu.
Zjednodušene môžeme tento vývoj opísať v dvoch fázach. Objavovanie a testovanie.
Predtým, ako tímy začnú pracovať, najprv zistia, čo nevedia o aplikácii. Potom lepšie pochopia, ako sa držať hlavných funkcií aplikácie a byť produktívnejší. Pokiaľ ide o testovanie, proces premýšľania o týchto testoch sa začína ešte pred začiatkom vývoja. Testy sa píšu preto, aby riadili implementáciu a konečný produkt.
Gherkin language – definícia
Gherkin je textový jazyk s jednoduchou štruktúrou. Je navrhnutý tak, aby sa ho ľahko naučili aj ľudia, ktorí nevedia programovať, ale zároveň je dostatočne štruktúrovaný na to, aby umožnil stručný opis testovacích scenárov a príkladov na prezentáciu obchodných pravidiel vo väčšine oblastí. Keďže tento jazyk používa jednoduchú angličtinu, je určený na opis prípadov použitia softvérového systému spôsobom, ktorý dokáže prečítať a pochopiť takmer každý.
Gherkin – syntax
Feature: názov scenára
Given [prepodmienky alebo setup testu]
When [trigger alebo akcia (event)]
Then [očakávaný výstup]
Pre viac informácií o syntaxi si môžeš prezrieť aj Gherkin documentation.
Ako písať Gherkin test
Ak chceš písať Gherkin test cases, musíš najprv pochopiť niektoré kľúčové slová (keywordy), ktoré sa používajú a ich praktický význam. Tu je zoznam najčastejších kľúčových slov v syntaxi jazyka Gherkin:
- funkcia (feature),
- pravidlo (rule),
- príklad (example),
- given, when, then, and, but
- pozadie (background),
- náčrt scenára (scenario outline).
Každé kľúčové slovo je rozhodujúce pre proces písania Gherkin testu. Pozrime sa teraz bližšie na tieto kľúčové slová a na to, ako ich používať pri písaní testov Gherkin.
Funkcia
Skripty Gherkin sa začínajú týmto kľúčovým slovom, za ktorým nasleduje text, ktorý poskytuje opis. Jednoduchšie povedané, funkcia je opis toho, čo má softvér robiť. Toto kľúčové slovo sa používa aj na zoskupovanie scenárov.
V skutočnosti nie je na účely testovania, ale umožňuje to pridať dokumentáciu o požiadavkách a obchodných pravidlách. Časť s opisom sa končí, keď začneš nový riadok s jedným z ďalších kľúčových slov, ako je náčrt scenára, príklad alebo pravidlo.
Popis
V prípade potreby môžeš pod uvedené kľúčové slová napísať aj voľné popisy, pokiaľ sa žiadny z riadkov nezačína kľúčovým slovom.
Pravidlo
Kľúčové slovo rule (pravidlo) sa používa na vyjadrenie jedného obchodného pravidla, ktoré je potrebné zahrnúť. Tým sa poskytuje kontext pre funkciu.
Kroky Gherkin
Ďalej sa pozrime na niektoré kroky v testoch Gherkin. Sú to kroky Given (to, čo je dané), When (keď), Then (potom), And (a) alebo But (ale).
Given
Kroky Given nastavujú scénu pre scenár. Vo väčšine prípadov tieto kroky opisujú niečo, čo sa odohralo v minulosti. Týmto sa systému dodáva kontext predtým, ako s ním používateľ začne komunikovať. Z tohto dôvodu by si v tomto kroku nemal zahrnúť interakcie používateľa. Premýšľaj o tom, čo zahrnieš do tohto kroku ako predpoklady.
Poznámka: Môžeš mať viac ako jeden krok Given.
When
Kroky When (keď) sú akčné kroky. Opisujú udalosť. Príkladom môže byť udalosť vyvolaná iným systémom alebo interakciou používateľa. Odporúča sa, aby si pre každý scenár mal len jeden krok When.
Then
Kroky Then (potom) sú kroky výsledku. Tu opisuješ, čo chceš, aby systém urobil, aby sa to dalo porovnať s tým, ako softvér skutočne funguje v praxi. Malo by to byť niečo, čo môžeš skutočne vidieť ako výsledok, napríklad správa alebo hlásenie.
And, But
Keď máš vyššie uvedené kroky, môžeš použiť and alebo but.
Background
Ako bolo uvedené vyššie, background ti umožňuje pridať ešte viac kontextu k scenárom vo funkcii. Tu môžeš mať podľa potreby viac ako jeden daný krok.
Scenario Outline
Osnova scenára obsahuje časť s príkladmi. Tieto kroky sa čítajú ako šablóna. Osnova scenára sa spustí raz pre každý riadok sekcie príkladov okrem header riadku.
Gherkin – Given When Then examples
Zlaté pravidlo Gherkin je jednoduché: správaj sa k ostatným používateľom kódu tak, ako chceš, aby sa správali k tebe. Vytváraj funkčné súbory tak, aby im každý ľahko porozumel.
Scenáre píš intuitívnym spôsobom a taktiež by nemali byť ultra-deklaratívne alebo ultra-imperatívne.
Ultra-deklaratívny príklad:
- Je to príliš vágne.
- Kroky nie sú procedurálne – nedajú sa automatizovať.
- Vynecháva podmienky úspechu.
Ultra-imperatívny príklad:
- Obsahuje príliš veľa detailov.
- Interakcie s aplikáciou na nízkej úrovni.
Tu je správny príklad:
- Scenár má deklaratívne, opisné kroky.
- Dodržiava sa poradie given-when-then.
- Interakcia a požadované správanie sú jasne znázornené.
- Konkrétny príklad pomáha čitateľovi pochopiť scenár.
Základné pravidlo BDD
Kardinálne pravidlo BDD je pravidlo jedna k jednej (1:1) – každý scenár by mal pokrývať presne jedno jediné nezávislé správanie. Sústredenie sa na jedno správanie v danom čase poskytuje niekoľko výhod:
- Väčšia prehľadnosť a menej nejednoznačnosti.
- Každé zlyhanie testu identifikuje samostatný problém.
- Menej komplikovaný skript má kratší čas vykonávania.
- Pozostáva z jedného správania, jedného príkladu, jednej situácie, jedného testu a jedného výsledku.
Príklad nesprávneho scenára:
Zahŕňa dve samostatné správania (dve dvojice When-Then). Ak si do testu zahrnul dve alebo viac dvojíc Given-When, je lepšie ich rozdeliť do iného scenára.
Existujú prípady, keď je vhodnejšie a prijateľnejšie napísať viacero dvojíc „When-Then“, ale vo všeobecnosti by sme sa tomu mali vyhnúť.
Pravidlo jedinečného príkladu
Pokiaľ ide o testovacie prípady, niekedy menej znamená viac, preto vynechaj tie, ktoré nie sú potrebné. Namiesto toho sa sústreď na jedinečné triedy ekvivalencie. Hoci sa testovanie „všetkého“ môže zdať lákavé, je to strata času. Namiesto toho sa zameraj na najkritickejšie aspekty projektu a minimalizuj testovanie duplikátov.
Príklad:
Vo vyššie uvedenom príklade by sa scenár spustil šesťkrát. Jedenkrát pre každý riadok v tabuľke príkladov. To je úplne zbytočné.
Zlaté pravidlo gramatiky
Pretože jazyk je dôležitý, píš tak, ako keby tvoj stredoškolský učiteľ angličtiny známkoval tvoju gramatiku. Cieľom scenárov je, aby boli čitateľné a výstižné. Kroky sú navrhnuté tak, aby sa dali opakovane použiť. Výhody špecifikácie správania môže zničiť zlá syntax, pravopisné chyby a rozporuplné formulácie. Scenáre môžu byť mätúce.
Príklad č. 1:
Uvedený scenár je nekonzistentný a nejednoznačný – nie je jasné, či „ja“ som „používateľ“, alebo či je zapojená tretia strana. Okrem toho je použitie výlučne perspektívy tretej osoby elegantnejšie.
Frázuj kroky tak, ako by si písal bežné vety.
Príklad č. 2:
Nevieme, či uvedené kroky overujú existenciu odkazov alebo na ne klikajú – musíme ich objasniť:
Správny príklad:
Napíš dobré názvy
Pri dobre napísaných scenároch je vytvorenie silných názvov jednoduché. Vynikajúci scenár sa zameriava na jednu konkrétnu akciu. Názov by mal byť krátkym jednozväzkovým textom.
- Pri používaní slovných spojení ako „a“, „alebo“ a „ale“ buď opatrný, pretože naznačujú, že sa môže vykonať viacero činností.
- Vyhnúť sa treba aj používaniu spojok ako „pretože“, „pretože“ a „takže“, pretože vysvetľujú, prečo scenár existuje, zatiaľ čo by sme sa mali sústrediť na to, čo je dej – prečo môže byť odvodené z jednotlivých etáp alebo opísané komentárom.
- Vyhni sa jazyku tvrdení – nepoužívaj výrazy ako „overiť“, „tvrdiť“ alebo „mal by“, pretože sa zameriavajú skôr na tvrdenie ako na činnosť.
Gherkin pluginy a packages
Ak si chceš uľahčiť život, nainštaluj si pluginy alebo packages
Textové editory s Gherkin
Zvýrazňovanie syntaxe v jazyku Gherkin podporuje väčšina populárnych textových editorov. V niektorých IDE je k dispozícii pokročilá podpora jazyka Cucumber vrátane možnosti spúšťať Cucumber z vnútra IDE, zobrazovať výsledky, prechádzať medzi fázami jazyka Gherkin atď.
Atom – Je to textový editor pre Windows, macOS a Linux, ktorý ponúka niekoľko rôznych balíkov na použitie s Gherkinom.
TextMate – Je to špecializovaný textový editor pre systém macOS na použitie s aplikáciou Gherkin. Pomáha zvýšiť proces tvorby dokumentácie pri vývoji scenárov.
Visual Studio Code – Nie je to textový editor, ale editor kódu špeciálne navrhnutý pre systémy Windows, macOS a Linux. Možno ho používať s pluginom so syntaxou Gherkin.
IDE – IDE je ďalší plugin, ktorý možno použiť pre rôzne jazyky, ktoré sa udržiavajú ako plugin pre Gherkin. Existujú rôzne IDE, ako napr:
- Java IDE (Java Eclipse IDE, Java Apache Netbeans IDE, Java IntelliJ IDEA),
- IDE pre Ruby,
- CukeTest.
Výhody a nevýhody používania jazyka Gherkin
Teraz, keď už vieš, ako napísať Gherkin test, ťa možno zaujíma, ako určiť, či je to pre teba a tvoj tím tá správna možnosť. Pravdou je, že s používaním Gherkinu sú spojené výhody aj nevýhody. Poďme sa na niektoré z nich pozrieť bližšie.
Gherkin je jednoduchý
Gherkin je vo svojej podstate jednoduchý na pochopenie pre vývojárov aj obchodných manažérov. V istom zmysle je „netechnický“, čo uľahčuje spoluprácu medzi tímami.
Zameriava sa na požiadavky projektu
Syntax jazyka Gherkin a tento typ testovania sa skutočne zameriava na projektové a obchodné požiadavky. To zabezpečuje vývojový proces vytvorený s ohľadom na používateľskú skúsenosť.
Opätovné použitie kódu
Spôsob, akým sú tieto testy napísané, uľahčuje opätovné použitie častí kódu iných testov. To môže prispieť k úspore času, peňazí a zdrojov.
Nie pre všetky projekty
Gherkin + Cucumber nie je ideálny pre všetky typy projektov. Krátke projekty, ktoré si budú vyžadovať veľa testov, sa môžu použitím tejto metódy oddialiť. Hoci BBD má svoj čas a miesto, tento spôsob myslenia a implementácia týchto testov môže projekty spomaliť.
Vyžaduje si veľké zapojenie tímu
Toto môže byť pre alebo proti, v závislosti od metodiky vývoja tímu. Ako už bolo spomenuté, Gherkin a Cucumber idú ruka v ruke s vývojom riadeným správaním. To znamená, že si vyžaduje, aby tím neustále spolupracoval, čo nemusí byť vždy vhodné pre daný projekt.
Potenciálne výdavky
Hoci sa tieto testy môžu písať jednoduchšie, zle napísaný test môže mať za následok veľa zbytočne stráveného času a peňazí navyše, ak je potrebné testy prepísať. Pokiaľ vývojári veľmi dobre nerozumejú Gherkinu, môže byť tento typ testovania veľkým finančným rizikom.
Gherkin framework
Efektívna práca s jazykom Gherkin si vyžaduje správnu sadu nástrojov. Tieto nástroje pomáhajú nielen pri písaní a organizovaní scenárov Gherkin, ale aj pri ich vykonávaní ako súčasť automatizovaných testovacích súborov. Najčastejšie používané nástroje v spojení s Gherkinom sú:
- Cucumber: Je to najpopulárnejší nástroj na vykonávanie scenárov Gherkin. Cucumber podporuje rôzne programovacie jazyky vrátane Java, Ruby a JavaScript, vďaka čomu je univerzálny pre rôzne vývojové prostredia.
- SpecFlow: SpecFlow, ktorý sa primárne používa s projektmi .NET, je podobný Cucumberu a riadi sa rovnakými princípmi. Bez problémov sa integruje do ekosystému .NET.
- Behave: Pre vývojárov v jazyku Python je Behave vhodnou voľbou. Je navrhnutý špeciálne pre Python a dobre spolupracuje s Gherkinom.
- Quantum – Quantum je open-source testovací framework BDD založený na jazyku Java, ktorý navrhla spoločnosť Perfecto. Automatizované testy Quantum BDD sa vykonávajú v cloude, vďaka čomu je ich vykonávanie stabilné na čistých a zabezpečených zariadeniach so systémom Android/iOS a v počítačových prehliadačoch.
Záver
Ako sme už v tomto článku uviedli, Gherkin je základným jazykom v oblasti testovania softvéru, najmä v rámci vývoja riadeného správaním (BDD – Behavior Driven Development). Jeho jednoduchá, ale výkonná syntax umožňuje tímom vytvárať jasné, zrozumiteľné a vykonateľné špecifikácie. Gherkin spája priepasť medzi technickými a netechnickými zainteresovanými stranami a zabezpečuje, aby správanie softvéru úzko súviselo s obchodnými požiadavkami a očakávaniami používateľov.
Na záver možno povedať, že Gherkin je viac než len jazyk na testovanie, je prostriedkom zvyšovania kvality, efektívnosti a účinnosti procesov vývoja a testovania softvéru.
Ak vieš po nemecky a si IT tester alebo automatizovaný tester, pozri si naše firemné benefity a reaguj na voľné pracovné miesta.