rest api testing with cucumber using bdd approach
Tento výukový program vysvětluje testování REST API s okurkou pomocí přístupu BDD. Zahrnuje instalaci softwaru, nastavení projektu, provádění testovacího jazyka a zprávy.
V tomto článku uvidíme, jak začít s testováním REST API ve stylu BDD s rámcem Cucumber.
Než se ponoříme hluboko do tématu, pochopme důležité pojmy, které jsou v něm obsaženy.
Začněme!!
Co se naučíte:
- Důležité koncepty v REST API
- Jak funguje okurka?
- Nastavení rámce pro testování okurek ve Windows
- Závěr
- Doporučené čtení
Důležité koncepty v REST API
ODPOČINEK
Jedná se o softwarový architektonický styl. Plná forma REST je převod reprezentativního státu . Definuje sadu omezení, která se mají použít pro vytváření webových služeb. Webové služby, které odpovídají architektonickému stylu REST, se nazývají webové služby RESTful.
Testování REST API
Testování REST API je testování API pomocí 4 hlavních metod, tj. POST, GET, PUT a DELETE.
REST šablona
RestTemplate je třída jarního rozhraní open-source, která poskytuje pohodlný způsob, jak otestovat klidné webové služby založené na HTTP poskytnutím přetížených metod pro metody HTTP.
Poznámka : Chcete-li se dozvědět více o konceptu REST API Testing, můžete se podívat na náš dřívější tutoriál ‘ Testování REST API s Spring RestTemplate a TestNG „Kde jsme popsali, jak provádět testování REST API ručně spolu s konceptem JSON.
BDD
BDD je přístup založený na chování. Jedná se o jednu z technik vývoje softwaru, která vyplynula ze stylu Test-Driven Development, tj. TDD.
Princip testování BDD spočívá v tom, že testovací případy jsou psány v přirozeném jazyce, který je snadno čitelný i neprogramátory.
Okurka
Okurka je nástroj, který podporuje vývoj založený na chování
Jak funguje okurka?
Podívejme se, jak funguje okurka.
Okurka se skládá ze souborů funkcí, souborů definic kroků a třídy Runner.
Soubory funkcí
Soubory funkcí píše váš obchodní analytik nebo možná váš sponzor. Ty jsou psány ve formátu přirozeného jazyka se specifikacemi v něm popsanými a potvrzují, že funkce aplikace odpovídají specifikacím.
V těchto specifikacích je uvedeno několik scénářů nebo příkladů. Každý scénář je seznamem určitých kroků, které musí okurka provést.
Zvažme scénář, kdy se uživatel chce přihlásit do systému.
Chcete-li ověřit, zda to funguje podle specifikací, je třeba popsat tento scénář. Zde jsou kroky, které je třeba provést společně s požadovaným výsledkem podle specifikací.
Jen pro představu bude takto vypadat ukázkový scénář:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Můžete vidět, že každý scénář je jakýmsi seznamem kroků, kterými Cucumber projde. Aby Cucumber pochopil scénáře, musí dodržovat některá základní pravidla syntaxe, která se nazývají kyselá okurka .
Soubory definice kroku
Soubory definic kroků mapují každý Gherkinův krok uvedený v souboru Feature na implementační kód. To umožňuje okurce provést akci, kterou je nutné provést krokem.
Cucumber framework podporuje mnoho programovacích jazyků pro psaní definic kroku, jako je Java, .net a Ruby.
Poznámka : V článku „ Testování REST API s Spring RestTemplate a TestNG „, Vyvinuli jsme testovací projekt TestNG s jarní šablonou.
moje otázky a odpovědi na sql rozhovor
Nyní budeme vyvíjet Test Framework pro stejnou službu REST a RestTemplate, ale pomocí Cucumber pro styl testování vývoje založený na chování.
Začněme s nastavením našeho testovacího rámce automatizace pomocí Cucumber!
Nastavení rámce pro testování okurek ve Windows
# 1) Instalace
(i) Pro vývoj definice kroku použijeme Javu. Nejprve si stáhněte instalační program JDK pro Windows z Věštec a nainstalujte stroj Java.
ii) IDE (integrované vývojové prostředí) : Pro svůj vývoj Automation Test Suite jsem použil Eclipse jako IDE. Můžete si jej stáhnout z Zatmění
(iii) Získejte zásuvný modul Eclipse pro okurku:
V Eclipse postupujte takto:
- Z nabídky vyberte možnost Nápověda -> Instalovat nový software.
- Enter „Zatmění okurky“ do vyhledávacího textového pole.
- Klikněte na Nainstalujte knoflík.
Instalace pluginu Cucumber v Eclipse
- Stále klikejte na tlačítko Další, dokud se nedostanete k Zkontrolovat licenci obrazovka.
Nakonec kliknutím na zaškrtávací políčko přijměte licenční smlouvu a klikněte na ikonu Dokončit knoflík. Tím bude instalace dokončena. Nyní restartujte Eclipse IDE. To je nutné, aby byla instalace modulu plug-in platná.
(iv) Jarní sklenice: Protože budeme používat třídu RestTemplate, která patří do jarního rámce, musíte mít jarní jarní rámce. Jarní sklenice si můžete stáhnout z Jarní rámec a uložte jej do místní složky. Například, C: / projectJar
(v) JSON-Simple Jars: Musíme provést analýzu JSON. Proto budeme používat odlehčené rozhraní JSON-simple API. Stáhněte si tedy JSON-simple-1.1.jar a uložte jej do C: / projectJar
vi) Sklenice na okurku:
Ke spuštění projektu Cucumber budete potřebovat následující sklenice s okurkou:
- okurkové jádro
- okurka-java
- okurka-JUnit
- okurka-JVM-deps
- hlášení okurek
- kyselá okurka
- JUnit
- falešný vše
- Dosah
- cucumber-HTML (Pro zprávy v html)
Tyto soubory si můžete stáhnout pomocí souboru pom.xml. Nejjednodušším způsobem je však stáhnout tyto soubory jar z Centrální úložiště a uložte tyto soubory jar do místní složky, Například, C: / projectJar
Nyní jsme tímto dokončili všechny potřebné instalace. Pojďme tedy vytvořit náš projekt BDD Test Automation.
# 2) Nastavení projektu
- Vytvořit soubor -> Nový -> Projekt Java -> Pojmenujte jej jako „ CRUD_Cucumber “.
- Nyní vytvořte nový balíček Java ukázka.
- Nakonfigurujte BuildPath projektu:
- Jak jste viděli v předchozí části, nainstalovali jsme zásuvný modul Cucumber, stáhli si jaro a jednoduché nádoby JSON. Je tedy čas přidat do našeho projektu cestu sestavení, která je spotřebuje. K tomu vytvořte a lib složka v Složka CRUD_Cucumber a nyní zkopírujte všechny sklenice z C: / projectJar do lib / okurka, lib / jaro složku.
- Klikněte pravým tlačítkem na „ CRUD_Cucumber “ -> Cesta sestavení -> Konfigurovat cestu sestavení.
- Klikněte na Knihovny záložka.
- Klikněte na Přidejte sklenice tlačítko-> Vyberte všechny sklenice z lib / okurka složka a lib / jaro složku. Tím se do cesty sestavení projektu přidají všechny sklenice s okurkou, jarní sklenice a jednoduchá nádoba JSON.
Struktura vašeho projektu se v Průzkumníku balíčků Eclipse zobrazí následovně.
Struktura balíčku testovacího projektu
# 3) Soubor funkcí
Nyní vytvořme soubor funkcí DemoFeature.feature funkce jako Provádění operací CRUD ve službě zaměstnancům.
V našem příkladu jsem použil jednu figurínu http://dummy.restapiexample.com/api ukázková služba REST.
Tento soubor funkcí popisuje scénáře provádění operací CRUD, tj. Pokrytí CRUD (Create-Read-Update-Delete).
- Nejprve definujeme funkci, v našem případě jde o testování metod CRUD, které lze popsat následovně.
Feature: Test CRUD methods in Sample Employee REST API testing
- Nyní má různé scénáře, jako je vytvoření, aktualizace, čtení a odstranění záznamu zaměstnance. Podívejte se tedy na scénář POST:
Scenario: Add Employee record
- Popište předpoklad pro test, kterým je nastavení adresy URL služby pro zaměstnance.
Given I Set POST employee service api endpoint
- Zadejte skutečný testovací krok odeslání žádosti o příspěvek.
When I Set request HEADER And Send a POST HTTP request
- Nyní popište ověření těla odpovědi.
Then I receive valid Response
V našem souboru funkcí bude tedy scénář vypadat takto:
Scenario: Add Employee record Given I Set POST employee service api endpoint When I Set request HEADER And Send a POST HTTP request Then I receive valid Response
Podobně můžete napsat zbývající scénáře, jak je znázorněno níže.
DemoFeature.feature
# 4) Kroky implementace definice
U kroků funkcí použitých ve výše uvedených scénářích musíte psát programové implementace, v tomto případě je to Java.
Step Definition je metoda napsaná v Javě s výrazem. Svou metodu spojuje s jedním nebo více kroky. Když tedy okurka provede kroky popsané ve scénáři souboru funkcí, nejprve hledá shodu definice kroku vykonat.
Například, kdy lze definici kroku pro Přidat zaměstnance pomocí POST napsat následovně.
U daného kroku je implementace napsána následovně:
špionážní aplikace pro mobilní telefony pro Android
@Given('^I Set POST employee service api endpoint$') public void setPostEndpoint(){ addURI = 'http://dummy.restapiexample.com/api/v1/create'; System.out.println('Add URL :'+addURI); }
Podobně pro krok When je následující metoda definice:
@When ('^Send a POST HTTP request$') public void sendPostRequest(){ doublename_id = Math.random(); emp_name = 'zozo_'+name_id;//Just to avoid Duplicate Name entry String jsonBody'{'name':''+emp_name+'','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntityentity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee restTemplate = newRestTemplate (); response = restTemplate.postForEntity(addURI, entity, String.class); }
Nyní je zde část kroku ověření, tj. Implementace Then step:
@Then ('^I receive valid Response$') Public void verifyPostResponse(){ responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.hasText(responseBody,employeeId); // Check if the status code is 201 Assert.isTrue(response.getStatusCode()==HttpStatus.OK); System.out.println('Employee is Added successfully employeeId:'+employeeId); }
Poznámka: Zde používáme metodu RestTemplate pro odesílání požadavku. To je stejné jako metoda použitá v „ Testování REST API s Spring RestTemplate a TestNG '' . Chcete-li se dozvědět více o metodách Rest Template, můžete se podívat na výukový program.
Vaše definice kroku bude tedy vypadat následovně.
StepDefinition.java
Stejným způsobem můžete implementovat definice kroků pro zbývající scénáře Aktualizovat, Číst a Odstranit zaměstnance.
# 5) Provádění testů
Nyní jsme dokončili naši úlohu vývoje scénářů a skriptů kroků, takže pojďme spustit naše testy. K tomu musíme napsat třídu běžců JUnit.
publicclassRunner { }
Tady je třeba přidat následující anotace nad název třídy:
@RunWith (Cucumber.class): Spustit jako testovací běžec třídy pro Cucumber.
@CucumberOptions: Zde určíte umístění souboru funkcí a umístění souboru definice kroku, aby se rámec Cucumber během provádění podíval.
features='' glue=''
Zapojit: Slouží k určení různých možností formátování pro sestavu, která se generuje jako výstup.
Vaše třída běžců tedy bude vypadat takto.
TestRunner.java
Stačí kliknout pravým tlačítkem na TestRunner.java a vyberte možnost „ Spustit jako test JUnit ' . Zobrazí se výsledek provedení testu následujícím způsobem.
Výstup záložky Junit
otázky a odpovědi na pohovor o zajištění kvality
Na konzole uvidíte následující zprávy.
Výstup konzoly
# 6) Zprávy
Výsledek jsme viděli na konzole. Cucumber však poskytuje výsledky testů v reprezentativnějším formátu HTML, který lze sdílet se zúčastněnými stranami.
Otevřeno cílová -> zprávy o okurkách v prohlížeči.
Poznámka : Pamatujete si běžecké třídy Junit CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Zde je plugin možnost, kterou specifikujeme pro sestavy formátu HTML spolu se složkou.
target/cucumber-reports
Nyní otevřete stránku target cucumber-reports index.html. Stránka sestavy je stránka HTML, kde můžete vidět název funkce se scénáři, které byly úspěšně provedeny.
Vaše zpráva bude tedy vypadat následovně.
Výsledek CucumberTest ve formátu HTML
Závěr
Na závěr tohoto tutoriálu shrňme, co jsme se zatím naučili.
Viděli jsme všechny kroky od začátku k nastavení BDD Cucumber REST API Test Automation Framework.
V tomto procesu jsme se naučili následující:
- Pro automatizaci testů jsme vybrali programovací jazyk Java.
- Zvolili jsme Cucumber jako testovací rámec pro vytvoření testovací sady testovacím způsobem Behavior Driven Development.
- Pro odesílání skutečných požadavků HTTP na server jsme spotřebovali třídu Spring Framework RestTemplate.
- Pro náročné těchto API jsme provedli instalaci pluginu Cucumber, stáhli jsme soubory jar závislostí Cucumber, jar jars a JSON-simple jar pro analyzátor API.
- Vytvořili jsme soubor Feature pro popis scénářů v jednoduché angličtině, soubor Step Definition pro mapování kroků a třídu JUnit Runner pro spuštění souboru Feature.
- Nakonec jsme provedli třídu Test Runner a výsledek jsme viděli na konzole v prezentovatelnějším a čitelnějším formátu HTML.
Stručně řečeno, tento článek vysvětluje, jak začít s automatizací REST API Test s okurkou. Pokryli jsme nastavení našeho testovacího automatizačního rámce přímo od instalace veškerého základního softwaru, nastavení projektu, vývoj TestScriptu až po provedení testu a prohlížení generovaných zpráv.
To je dostatečné pro to, aby jakékoli QA automatizace mohlo začít s testovacím automatizačním rámcem. Pokud však někdo chce podrobně pochopit, jak funguje okurka interně, jak funguje jazyk Gherkin, pak jej lze prozkoumat na Okurka.
Doufám, že jste připraveni začít s testováním REST API ve stylu BDD s okurkou !!
Doporučené čtení
- 10 nejlepších nástrojů pro testování API v roce 2021 (nástroje pro testování API SOAP a REST)
- Nejlepší nástroje pro testování softwaru 2021 (QA Test Automation Tools)
- Testování REST API s Spring RestTemplate a TestNG
- Testování stahování e-knih Primer
- Top 20 nejdůležitějších API testů Interview Otázky a odpovědi
- Testování SaaS: výzvy, nástroje a přístup k testování
- Zjednodušení testování API pomocí Katalon Studio
- Testování automatizace pomocí nástroje Cucumber Tool a Selenium - Selenium Tutorial # 30