Úvod do Serenity BDD

1. Úvod

V tomto tutoriáli uvedieme úvod do Serenity BDD - skvelého nástroja na aplikáciu Behavior Driven Development (BDD). Toto je riešenie pre automatizované testovanie prijatia, ktoré generuje dobre ilustrované správy o testovaní.

2. Základné koncepty

Koncepty stojace za Serenity nasledujú po konceptoch BDD. Ak si o tom chcete prečítať viac, prečítajte si náš článok o uhorkách a JBehave.

2.1. Požiadavky

V Serenity sú požiadavky usporiadané do troch úrovní:

  1. schopnosti
  2. Vlastnosti
  3. príbehy

Projekt zvyčajne implementuje funkcie na vysokej úrovni, napr. možnosti správy objednávok a členstva v projekte elektronického obchodu. Každá funkcia obsahuje veľa funkcií a funkcie sú podrobne vysvetlené príbehmi používateľov.

2.2. Kroky a testy

Kroky obsahujú skupinu operácií manipulácie so zdrojmi. Môže to byť akcia, overenie alebo operácia súvisiaca s kontextom. Klasický Dané_Kedy_Potom formát sa môže prejaviť v krokoch.

A testy idú ruka v ruke Kroky.Každý test rozpráva jednoduchý užívateľský príbeh, ktorý sa vykonáva pomocou istých Krok.

2.3. Správy

Serenity nielen podáva správy o výsledkoch testov, ale tiež ich používa na výrobu dokumentácie popisujúcej požiadavky a správanie sa aplikácií.

3. Testovanie pomocou SerenityBDD

Aby sme mohli spustiť naše testy Serenity s JUnit, musíme @RunWith the SerenityRunner, testovací bežec. SerenityRunner vybavuje krokové knižnice a zaisťuje, že výsledky testov budú zaznamenané a hlásené reportérmi Serenity.

3.1. Maven závislosti

Aby sme mohli využiť Serenity s JUnit, mali by sme zahrnúť vyrovnanosť-jadro a serenity-junit v pom.xml:

 net.serenity-bdd serenity-core 1.2.5-rc.11 net.serenity-bdd serenity-junit 1.2.5-rc.11 

Tiež potrebujeme serenity-maven-plugin mať správy agregované z výsledkov testov:

 net.serenity-bdd.maven.plugins serenity-maven-plugin 1.2.5-rc.6 serenity-reporty po integrácii-test agregát 

Ak chceme, aby Serenity generovalo správy, aj keď dôjde k zlyhaniu testu, pridajte do pom.xml:

 org.apache.maven.plugins maven-surefire-plugin 2.20 true 

3.2. Príklad členských bodov

Naše testy sú spočiatku založené na typickej funkcii členstva v aplikácii elektronického obchodu. K členskému programu sa môže pripojiť zákazník. Keď si zákazník zakúpi tovar na platforme, členské body sa zvýšia a zodpovedajúcim spôsobom sa zvýši stupeň členstva zákazníka.

Poďme teraz napísať niekoľko testov proti vyššie popísaným scenárom a zistiť, ako Serenity funguje.

Najprv napíšeme test inicializácie členstva a uvidíme, aké kroky potrebujeme:

@RunWith (SerenityRunner.class) verejná trieda MemberStatusIntegrationTest {@Steps private MemberStatusSteps memberSteps; @Test public void membersShouldStartWithBronzeStatus () {memberSteps.aClientJoinsTheMemberProgram (); memberSteps.theMemberShouldHaveAStatusOf (bronz); }}

Potom implementujeme dva kroky nasledovne:

public class MemberStatusSteps {private Member member; @Step („Člen, ktorý má {0} bodov“) public void aMemberHasPointsOf (int points) {member = Member.withInitialPoints (points); } @Step („Potom by mala byť známka člena {0}“) public void theMemberShouldHaveAStatusOf (známka MemberGrade) {assertThat (member.getGrade (), equalTo (známka)); }}

Teraz sme pripravení vykonať test integrácie s mvn čisté overiť. Správy sa budú nachádzať na adrese target / site / serenity / index.html:

Zo správy vidíme, že máme iba jeden schvaľovací test „Členovia by mali začínať bronzovým statusom, majú schopnosť“ a úspešne absolvujú. Kliknutím na test sa zobrazia kroky:

Ako vidíme, správa spoločnosti Serenity nám dáva dôkladné pochopenie toho, čo naša aplikácia robí, a či zodpovedá našim požiadavkám. Ak máme nejaké kroky na implementáciu, môžeme ich označiť ako @ Čaká sa:

@Pending @Step („When the member exchange {}“) public void aMemberExchangeA (Commodity komodity) {// TODO}

Správa by nám mala pripomenúť, čo je potrebné urobiť ďalej. A v prípade, že niektorý test zlyhá, je to vidieť aj v správe:

Bude uvedený každý neúspešný, ignorovaný alebo preskočený krok:

4. Integrácia s JBehave

Serenity sa tiež môže integrovať s existujúcimi rámcami BDD, ako je JBehave.

4.1. Maven závislosti

Pre integráciu s JBehave ešte jedna závislosť serenity-jbehave je potrebné v POM:

 net.serenity-bdd serenity-jbehave 1.24.0 

4.2. Test JBehave Github REST API pokračoval

Keď sme si predstavili, ako vykonať testovanie REST API pomocou JBehave, môžeme pokračovať v našom teste JBehave REST API a zistiť, ako to zapadá do Serenity.

Náš príbeh bol:

Scenár: Užívateľský profil Githubu by mal mať prihlasovacie užitočné zaťaženie rovnaké ako používateľské meno Daný užívateľský profil GitHub api Keď hľadám eugenp cez api Potom odpoveď githubu obsahuje „prihlasovacie“ užitočné zaťaženie rovnaké ako eugenp

The Dané_Kedy_Potom kroky je možné migrovať do formátu @Kroky bez akýchkoľvek zmien:

verejná trieda GithubRestUserAPISteps {private String api; súkromný zdroj GitHubUser; @Step („Vzhľadom na rozhranie REST API github pre užívateľský profil“) public void withUserProfileAPIEndpoint () {api = "//api.github.com/users/%s"; } @Step ("Pri hľadaní {0} cez api") public void getProfileOfUser (reťazec používateľské meno) hodí IOException {HttpResponse httpResponse = getGithubUserProfile (api, používateľské meno); resource = retrieveResourceFromResponse (httpResponse, GitHubUser.class); } @Step ("Potom by malo byť prihlasovacie pole s hodnotou {0} v užitočnom obsahu používateľa {0}") public void profilePayloadShouldContainLoginValue (reťazec používateľské meno) {assertThat (používateľské meno, Matchers.is (resource.getLogin ())); }}

Aby mapovanie príbehu na kód JBehave fungovalo podľa očakávania, musíme implementovať definíciu kroku JBehave pomocou @Kroky:

verejná trieda GithubUserProfilePayloadStepDefinitions {@Steps GithubRestUserAPISteps userAPISteps; @Given ("API užívateľského profilu github") public void givenGithubUserProfileApi () {userAPISteps.withUserProfileAPIEndpoint (); } @When („hľadám používateľa $ prostredníctvom rozhrania API“) public void whenLookingForProfileOf (reťazec user) hodí IOException {userAPISteps.getProfileOfUser (užívateľ); } @Then ("odpoveď githubu obsahuje 'prihlasovacie' užitočné zaťaženie rovnaké ako $ user") public void thenGithubsResponseContainsAloginPayloadSameAs (reťazec) {userAPISteps.profilePayloadShouldContainLoginValue (užívateľ); }}

S SerenityStories, môžeme spustiť testy JBehave z nášho IDE aj z procesu zostavovania:

import net.serenitybdd.jbehave.SerenityStory; verejná trieda GithubUserProfilePayload rozširuje SerenityStory {}

Po overiť stavba dokončená, môžeme si pozrieť našu správu z testu:

V porovnaní s obyčajnou textovou správou JBehave nám bohatá správa Serenity poskytuje oku príjemnejší a živý prehľad nášho príbehu a výsledku testu.

5. Integrácia so zaistením REST

Je pozoruhodné, že Serenity podporuje integráciu so zárukou REST. Ak chcete mať prehľad o REST-assured, pozrite si sprievodcu REST-assured.

5.1. Maven závislosti

Ak chcete využiť funkciu REST zaistenú s Serenity, vyrovnanosť-pokoj závislosť by mala byť zahrnutá:

 net.serenity-bdd serenity-rest-guaranteed 1.2.5-rc.11 

5.2. V teste GITHUB REST API použite zabezpečenie REST

Teraz môžeme nahradiť nášho webového klienta nástrojmi so zárukou REST:

importovať statický net.serenitybdd.rest.SerenityRest.rest; importovať statický net.serenitybdd.rest.SerenityRest.potom; verejná trieda GithubRestAssuredUserAPISteps {private String api; @Step („Vzhľadom na rozhranie REST API github pre užívateľský profil“) public void withUserProfileAPIEndpoint () {api = "//api.github.com/users/{username}"; } @Step ("Pri hľadaní výrazu {0} cez rozhranie API") public void getProfileOfUser (reťazec používateľské meno) hodí IOException {rest (). Get (api, používateľské meno); } @Step („Potom by malo byť prihlasovacie pole s hodnotou {0} v užitočnom zaťažení používateľa {0}“) public void profilePayloadShouldContainLoginValue (reťazec používateľské meno) {then (). Body ("login", Matchers.equalTo (používateľské meno) ); }}

Po výmene implementácie userAPISteps v StepDefition, môžeme znova spustiť overiť stavať:

verejná trieda GithubUserProfilePayloadStepDefinitions {@Steps GithubRestAssuredUserAPISteps userAPISteps; // ...}

V správe môžeme vidieť skutočné API vyvolané počas testu a kliknutím na ikonu REST dotaz Kliknutím na tlačidlo sa zobrazia podrobnosti žiadosti a odpovede:

6. Integrácia s JIRA

Odteraz už máme skvelú správu z testu popisujúcu podrobnosti a stav našich požiadaviek v rámci Serenity. Ale pre agilný tím sa na sledovanie požiadaviek často používajú systémy na sledovanie problémov, ako je JIRA. Bolo by lepšie, keby sme ich mohli bezproblémovo používať.

Našťastie Serenity už podporuje integráciu s JIRA.

6.1. Maven závislosti

Na integráciu s JIRA potrebujeme ďalšiu závislosť: serenity-jira-requirements-provider.

 net.serenity-bdd serenity-jira-requirements-provider 1.1.3-rc.5 

6.2. Jednosmerná integrácia

Ak chcete do príbehu pridať odkazy na JIRA, môžeme pridať problém s JIRA pomocou metaznačky príbehu:

Meta: @ vydanie # BDDTEST-1

Okrem toho by mal byť účet JIRA a odkazy uvedené v súbore serenity.properties v koreňovom adresári projektu:

jira.url = jira.project = jira.username = jira.password =

V správe by bol potom pripojený odkaz na JIRA:

Serenity tiež podporuje obojsmernú integráciu s JIRA, ďalšie podrobnosti nájdete v oficiálnej dokumentácii.

7. Zhrnutie

V tomto článku sme predstavili Serenity BDD a viacnásobné integrácie s inými testovacími rámcami a systémami riadenia požiadaviek.

Aj keď sme prebrali väčšinu toho, čo Serenity dokáže, určite dokáže viac. V našom ďalšom článku sa budeme venovať tomu, ako nám vďaka Serenity s podporou WebDriveru môžeme automatizovať stránky webových aplikácií pomocou scenára.

Celý implementačný kód nájdete ako vždy v projekte GitHub.


$config[zx-auto] not found$config[zx-overlay] not found