Okurka (software) - Cucumber (software)
tento článek potřebuje další citace pro ověření.Říjen 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Vývojáři | Aslak Hellesøy,[1] Joseph Wilk,[2] Matt Wynne,[3] Gregory Hnatiuk,[4] Mike Sassak[5] |
---|---|
Stabilní uvolnění | 3.1.2[6] / 13. července 2018 |
Úložiště | |
Napsáno | Rubín |
Operační systém | Cross-platform |
Typ | Vývoj založený na chování rámec / Zkušební nástroj |
Licence | Licence MIT |
webová stránka | okurka |
Okurka je software nástroj, který podporuje vývoj založený na chování (BDD).[7][8][9][10] Ústředním bodem přístupu BDD Cucumber je jeho běžný jazykový analyzátor nazvaný kyselá okurka. Umožňuje určit očekávané softwarové chování v logickém jazyce, kterému zákazníci rozumějí. Cucumber jako takový umožňuje provádění dokumentace funkcí napsaných v obchodním textu.[11][7][8] Často se používá k testování jiného softwaru.[12] Běží automaticky přejímací zkoušky napsáno v a vývoj založený na chování (BDD) styl.[13]
Okurka byla původně napsána v Programovací jazyk Ruby.[7][14][8] a byl původně používán výhradně pro testování Ruby jako doplněk k RSpec Rámec BDD. Cucumber nyní podporuje celou řadu různých programovacích jazyků prostřednictvím různých implementací, včetně Jáva[15][8] a JavaScript.[16][17] Open source port okurky v .Síť se nazývá SpecFlow.[18][19][20] Například, Cuke4php a Cuke4Lua jsou softwarové mosty, které umožňují testování PHP a Lua projekty. Jiné implementace mohou jednoduše využít kyselá okurka analyzátor při implementaci zbytku testovacího rámce v cílovém jazyce.
Okurka jazyk
Okurka je jazyk, který okurka používá k definování testovacích případů. Je navržen tak, aby byl netechnický a čitelný člověkem, a souhrnně popisuje případy použití související se softwarovým systémem.[7][8][21][22] Účelem Gherkinovy syntaxe je propagovat vývojové praktiky založené na chování v celém vývojovém týmu, včetně obchodních analytiků a manažerů. Snaží se prosadit pevné a jednoznačné požadavky počínaje počátečními fázemi definování požadavků vedením podniku a v dalších fázích životního cyklu vývoje.
Kromě poskytnutí skriptu pro automatické testování je Gherkinova přirozená jazyková syntaxe navržena tak, aby poskytovala jednoduchou dokumentaci testovaného kódu.[22] Gherkin v současné době podporuje klíčová slova v desítkách jazyků.[22][23][7][8]
Jazykové operace[22]
# Seznam dostupných jazykůokurka - i18n Pomoc# Seznam klíčových slov jazykaokurka - i18n $ LANG
Syntax
Syntaxe je soustředěna kolem a lineárně orientovaný design, podobně jako u Krajta. Struktura souboru je definována pomocí mezer a dalších řídicích znaků.[22] #
se používá jako znak řádkového komentáře a lze jej umístit kamkoli do souboru.[22] Pokyny jsou jakýkoli neprázdný a nekomentovaný řádek. Skládají se z rozpoznaného klíčového slova okurky a řetězce.[24]
Všechny soubory okurky mají .Vlastnosti
přípona souboru. Obsahují jedinou definici funkce pro testovaný systém a jsou spustitelným testovacím skriptem.[24]
Funkce, scénáře a kroky
Okurkové testy jsou rozděleny do jednotlivých funkcí. Tyto funkce se dělí na scénáře, které jsou sekvencemi kroků.
Funkce
Funkce je a Pouzdro který popisuje konkrétní funkci testovaného softwaru. Funkce má tři části[24]
- The
Vlastnosti:
klíčové slovo - Název funkce (na stejném řádku jako klíčové slovo)
- Volitelný popis na následujících řádcích
Příklad definice prvku
Vlastnosti: Výběr peněz z bankomatu Uživatel s účtem v bance by chtěl vybrat peníze z bankomatu. Pokud má platný účet a debetní nebo kreditní kartu, mělo by mu být umožněno provést transakci. Bankomat inkasuje požadovanou částku peněz, vrátí jeho kartu a odečte částku výběru z účtu uživatele.Scénář: Scénář 1 Dáno předpokladyKdyž akcePak VýsledekScénář: Scénář 2 ...
Scénáře
Každá funkce je vytvořena ze sbírky scénářů. Jediný scénář je tok událostí popsanou funkcí a mapuje 1: 1 s spustitelným testovacím případem pro systém.[24] Při zachování příkladu funkce výběru z bankomatu může scénář popisovat, jak uživatel požaduje peníze a co se stane s jeho účtem.
Scénář: Eric chce vybrat peníze ze svého bankovního účtu v bankomatu Dáno Eric má platnou kreditní nebo debetní kartuA zůstatek na jeho účtu je $100Když vloží svou kartuA vybírá $45Pak bankomat by měl vrátit $45A zůstatek na jeho účtu je $55
V některých případech můžete chtít provést několik scénářů najednou Rozdělení ekvivalence a Analýza hraničních hodnot. A Osnova scénáře
poskytuje techniku k určení více příkladů k testování proti scénáři šablony pomocí zástupných symbolů.[24] Například,
Osnova scénáře: Uživatel si vybere peníze z bankomatu Dáno <Name> má platnou kreditní nebo debetní kartuA jejich zůstatek na účtu je <OriginalBalance>Když vloží svou kartuA ustoupit <WithdrawalAmount>Pak bankomat by se měl vrátit <WithdrawalAmount>A jejich zůstatek na účtu je <NewBalance>Příklady: | název | OriginalBalance | Částka výběru | Nová rovnováha | | Eric | 100 | 45 | 55 | | Gaurav | 100 | 40 | 60 | | Vyd | 1000 | 200 | 800 |
Za běhu je scénář spuštěn proti každému řádku v tabulce. Hodnoty sloupců jsou nahrazeny za každý z pojmenovaných zástupných symbolů ve scénáři.
Kroky
Jádro scénáře je definováno posloupností kroků, které nastiňují předpoklady a tok událostí, které se uskuteční. První slovo kroku je klíčové slovo, obvykle jedno z[24]
Dáno
- Popisuje předpoklady a počáteční stav před zahájením testu a umožňuje jakékoli nastavení před testem, které může nastatKdyž
- Popisuje akce provedené uživatelem během testuPak
- Popisuje výsledek vyplývající z akcí přijatých v klauzuli When
Kombinace daného-kdy-pak používá k definování spojek příležitostně další klíčová slova
A
- Logické aAle
- Logicky stejné jakoA
, ale používá se v negativní formě[25]
Scénář: Uživatel se pokusí vybrat více peněz, než kolik má na svém účtu Dáno John má platnou kreditní nebo debetní kartuA zůstatek na jeho účtu je $20Když vloží svou kartuA vybírá $40Pak bankomat zobrazuje chybuA vrátí svou kartuAle jeho zůstatek zůstává $20
Značky
Gherkinova struktura funkcí nutí organizaci. V případech, kdy je tato výchozí organizace nepohodlná nebo nedostatečná, však Gherkin poskytuje značky. Značky jsou @ -předpona
řetězce a lze je umístit dříve[24]
Vlastnosti
Scénář
Osnova scénáře
Příklady
Prvek může mít více značek a dědí z nadřazených prvků.[22][24]
Okurka
Krokové definice
Kroky v okurce .Vlastnosti
soubory lze považovat za vyvolání metody.[26][22] Předtím, než Cucumber může provést krok, je třeba prostřednictvím definice kroku říct, jak by měl být tento krok proveden.
Definice jsou psány v Rubín a běžně podána pod features / step_definitions / * _ steps.rb
.[22] Definice začínají stejnými klíčovými slovy jako jejich vyvolání (včetně úplné jazykové podpory Gherkin).[22] Každá definice má dva argumenty[22]
- Buď a regulární výraz nebo řetězec s proměnnými $
- Blok obsahující rubínový kód k provedení
Příklad použití regulárních výrazů
Dáno /(.*) má platnou kreditní nebo debetní kartu / dělat |název| # Rubínový kódkonec
Příklad použití řetězců a $ proměnných. Všimněte si, že za běhu je řetězec převeden na regulární výraz a jakákoli proměnná $ je převedena tak, aby odpovídala (.*)
.[22]
Dáno „$ name má platnou kreditní nebo debetní kartu“ dělat |název| # Rubínový kódkonec
Háčky
Háčky jsou způsob okurky, který umožňuje provést nastavení před spuštěním testů a poté provést roztržení. Jsou definovány jako spustitelné rubínové bloky, podobné JUnit metody označené @ Před, @ Poté
anotace. Konvenčně jsou umístěny pod Podpěra, podpora/
, a jsou aplikovány globálně.[22] Existují tři základní typy háčků[22]
Před
- Spustí se před scénářemPo
- Běží po scénářiKolem
- Převezme kontrolu a pobíhá kolem scénáře
Mezi další háčky patří[22]
PředKrok
AfterStep
AfterConfiguration
- Spouští se po konfiguraci okurky a je předána instance konfigurace
Před, po a kolem
háčky volitelně vezmou seznam scénářů filtrování značek, na které se vztahují. Se seznamem značek ve stejném řetězci se zachází jako NEBO
, zatímco s jednotlivými argumenty se zachází jako s A
; značky lze volitelně negovat tím, že jim bude předcházet ~
.[22]
Příklad označeného před zavěšením
Před('@BANKOMAT') dělat |scénář| # Rubínový kódkonec
Háčky se často používají k udržování stavu databáze, obvykle vyčištěním před spuštěním scénáře. Je také možné zahájit a vrátit transakci pomocí Před
a Po
háčky a mnoho rozšíření okurky poskytuje @txn
značku pro tento účel.[24]
Integrace a implementace
Non Ruby implementace Cucumber existují pro populární jazyky včetně Jáva, JavaScript, a Krajta.[24] Existuje také podpora pro integrační testovací rámce. Kompletní seznam implementací najdete na Cucumber. Cucumber má integrované testovací nástroje, které fungují dobře s mnoha Kontinuální integrace konfigurace. Existují pluginy okurek pro oblíbené nástroje CI, jako je Jenkins a TeamCity a také pro IDE Zatmění a RubyMine.
Níže je uveden příklad definice kroku napsaný pro Javu pomocí Cucumber-JVM.[27]
@ Dáno(„(. *) má platnou kreditní nebo debetní kartu“)veřejnost prázdnota has_card(Tětiva název) { // Java kód}
Doplňky formátovacího modulu
Okurka k zajištění výstupu používá zásuvné moduly Formatter. Ve výchozím nastavení je k dispozici několik běžných formátů, včetně[24]
Dostupné formáty nejsou standardizovány v různých implementacích Cucumber, takže se nabídky mohou lišit.[24] Okurka také podporuje bohaté výstupní formáty, jako jsou obrázky a videa.
Automatizace prohlížeče
Okurka neposkytuje integrovanou automatizaci prohlížeče. Funguje však dobře se stávajícími programy, jako jsou Selen a WATiR-WebDriver.[28] Podporuje spouštění testů s transakcemi prostřednictvím využití jiných programů, jako je ActiveRecord.[29]
Příkazový řádek okurky
Cucumber přichází s vestavěným rozhraním příkazového řádku, které pokrývá komplexní seznam pokynů. Stejně jako většina nástrojů příkazového řádku poskytuje okurka --Pomoc
možnost, která poskytuje souhrn argumentů, které příkaz přijímá.[30]
$ okurka - pomoc -r, --require LIBRARY | DIR Vyžadovat soubory před spuštěním funkcí. --i18n LANG Seznam klíčových slov pro v konkrétním jazyce. Spuštěním „nápovědy --i18n“ zobrazíte všechny jazyky. -f, --formát FORMÁTOVAT Jak formátovat funkce (výchozí: hezké). -o, --out [FILE | DIR] Zápis výstupu do souboru / adresáře místo ...
Příkazový řádek okurky lze použít k rychlému spuštění definovaných testů. Podporuje také spuštění podmnožiny scénářů filtrováním značek.
$ cucumber --tags @ tag-name
Výše uvedený příkaz pomáhá při provádění pouze těch scénářů, které mají zadaný @název štítku
.[30] Argumenty lze poskytnout jako logické NEBO
nebo A
činnost značek. Kromě značek lze scénáře filtrovat podle názvů scénářů.[30]
$ okurka - jméno odhlásit se
Výše uvedený příkaz spustí pouze ty scénáře, které obsahují slovo „odhlášení“.
Je také užitečné vědět, co se pokazilo, když test selhal. Okurka usnadňuje chytání chyb v kódu pomocí - stopa
volba.[30]
Okurku lze také nakonfigurovat tak, aby ignorovala určité scénáře, které nebyly dokončeny, tím, že je označíte značkou Work In Progress @wip
. Když je okurka předána - otřete
argument, okurka ignoruje scénáře s @wip
štítek.
Reference
- ^ „Aslak Hellesøy“. Aslakhellesoy.com. Citováno 2012-01-24.
- ^ „Joseph Wilk | o AI, webu, použitelnosti, testování a softwarovém procesu“. Blog.josephwilk.net. Citováno 2012-01-24.
- ^ „Čajem řízený vývoj“. Blog.mattwynne.net. Citováno 2012-01-24.
- ^ "Profil ghnatiuk". GitHub. Citováno 2012-01-24.
- ^ "Profil msassak". GitHub. Citováno 2012-01-24.
- ^ "Uvolnění - okurka / okurka-rubín". Citováno 9. srpna 2018 - přes GitHub.
- ^ A b C d E „Pragmatická knihovna | Okurková kniha“. Pragprog.com. Archivovány od originál dne 21.01.2012. Citováno 2012-01-24.
- ^ A b C d E F Rose, Seb; Wynne, Matt; Hellesøy, Aslak (15. února 2015). Pragmatická knihovna | Okurka pro knihu Java. Pragprog.com. Citováno 2019-04-28.
- ^ „Co je to okurka?“. okurka. Citováno 2019-06-08.
- ^ Aslak Hellesøy. „Nejvíce nepochopený nástroj pro spolupráci“. okurka.
- ^ Fox, Armando; Patterson, David (2016). Inženýrský software jako služba. Jahodový kaňon. 218–255. ISBN 978-0-9848812-4-6.
- ^ „Automatické testování se selenem a okurkou“. www.ibm.com. 2013-08-06. Citováno 2017-02-09.
- ^ Soeken, Mathias; Wille, Robert; Drechsler, Rolf (2012-05-29). Furia, Carlo A .; Nanz, Sebastian (eds.). Objekty, modely, komponenty, vzory. Přednášky z informatiky. Springer Berlin Heidelberg. 269–287. doi:10.1007/978-3-642-30561-0_19. ISBN 9783642305603.
- ^ „Pragmatická regál | Kniha RSpec“. Pragprog.com. 2010-12-02. Archivovány od originál dne 21.01.2012. Citováno 2012-01-24.
- ^ „Cucumber-jvm“. okurka. Citováno 2018-03-08.
- ^ „Cucumber-js“. okurka. Citováno 2018-03-08.
- ^ Naidele Manjunath; Olivier de Meulder (01.02.2019). „Žádný kód? Žádný problém - psaní testů prostou angličtinou“. Times Open. Citováno 2019-04-29.
- ^ „Vazba obchodních požadavků na .NET kód“. SpecFlow. Citováno 2019-04-29.
- ^ „SpecFlow“. GitHub. Citováno 2019-04-29.
- ^ Richard Lawrence; Paul Rayner (2018). Vývoj založený na chování s okurkou. Addison Wesley.
- ^ "okurka / okurka". GitHub. Citováno 2017-02-09.
- ^ A b C d E F G h i j k l m n Ó str „Gherkin Syntax“. okurka. Citováno 2019-07-09.
- ^ „Gherkin Supported Languages“. GitHub. Archivovány od originál dne 2016-04-20. Citováno 2016-01-17.
- ^ A b C d E F G h i j k l "Odkaz". okurka. Archivovány od originál dne 2015-10-25. Citováno 2016-01-17.
- ^ „Okurka“. behat. Citováno 2016-01-17.
- ^ "Dokumentace okurky". GitHub. 2019-01-23.
- ^ "Okurka-JVM". GitHub. Citováno 10. února 2016.
- ^ „GitHub - watir / watir-webdriver: kód Watir-webdriver byl přesunut“. 2018-06-09.
- ^ „GitHub - kolejnice / kolejnice: Ruby on Rails“. 2019-01-24.
- ^ A b C d Wynne, Matt; Sakra, Aslaku. "Okurková kniha". Knihy Safari online. Citováno 22. ledna 2016.
externí odkazy
- Inženýrský software jako služba: Agilní přístup využívající cloudové výpočty od Armanda Foxe a Davida Pattersona
- Okurkový projekt
- Projektová dokumentace okurky
- U kovárny - okurka, autorem Reuvenem M. Lernerem v Linux Journal
- Agilní 2009 - Aslak Hellesoy - rámec pro testování okurek, podcast od Bob Payne s Aslakem Hellesøym
- Cucumber: The latest in Ruby Testing Mike Gunderloy
- Specflow, okurka v .NET