Ez a bemutató bevezetés az API tesztelésbe a Karate keretrendszer használatával. Ismerje meg a Karate teszt script felépítését és az első teszt script elkészítésének lépéseit:

Az API egy rövidítés, amely az Application Programming Interface (alkalmazásprogramozási interfész) rövidítése. Egyszerűbben fogalmazva, úgy definiálhatjuk, mint egy szoftveres közvetítő, amely lehetővé teszi az alkalmazások közötti kommunikációt.

Azért van szükségünk API-tesztelésre, mert:

  • Az eredmények gyorsabban kerülnek közzétételre, így nem kell többé várni, hogy kiderüljön, jól működik-e az API.
  • A gyorsabb válaszadással az API-k telepítése is gyorsabbá válik, ami gyorsabb átfutási időt tesz lehetővé.
  • A hibák korai felismerése, még az alkalmazás felhasználói felületének létrehozása előtt, lehetővé teszi számunkra a kockázatok csökkentését és a hibák kijavítását.
  • Nagyszabású szállítás rövidebb idő alatt lehetséges.

Ahhoz, hogy az API teszteléssel foglalkozhassunk, különböző eszközök állnak rendelkezésre a piacon, mint például a Postman, a Mocha és a Chai. Ezek jó eredményeket és hatékony használatot mutattak az API-k tesztelésére, azonban ezek erősen kódfüggőek. Ahhoz, hogy ezeket használni tudjuk, technikailag jól kell rendelkeznünk és ismernünk kell a programozási nyelveket.

A Karate Framework gyönyörűen megoldja ezt a problémát az előző szoftvereszközökkel kapcsolatban.

Mi a karate keretrendszer

Karate? Beszéljünk a karatéról. Japánból származik? Mit gondolsz? Lehet, hogy a nagy Bruce Lee fejlesztette ki szabadidejében.

Bár szívesen elmélyednénk a karate érdekes gyökereiben, egyelőre beszéljünk a Karate eszköz amelyet a Peter Thomas , az egyik nagyszerű eszköz, amely az API-tesztelők megmentésére szolgál.

A Karate keretrendszer a BDD megközelítést követő Cucumber stílusban írja a programot. A szintaxis könnyen érthető a nem programozók számára is. És ez a keretrendszer az egyetlen olyan API-tesztelő eszköz, amely az API-automatizálást és a teljesítménytesztelést egyetlen önálló eszközben egyesítette.

A felhasználók számára lehetővé teszi a tesztesetek párhuzamos végrehajtását és a JSON & XML ellenőrzések elvégzését.

Ezekkel az információkkal bizonyos kulcsfontosságú pontokat lehet levonni a karate eszköz részletesebb megértéséhez:

  • A Karate egy BDD tesztelési keretrendszer a TDD helyett.
  • Úgy tervezték, hogy a nem programozók számára is egyszerű legyen. Ez a funkció megváltoztatja a játékot, mivel lehetővé teszi, hogy sokan használhassák és hozzáférhessenek, függetlenül a technikai hátterüktől vagy képességeiktől.
  • A teszt megírásához a Cucumber funkciófájlt és a Gherkins nyelvet használja, ami nagyon könnyen érthető.

Mindezek a funkciók az egyik legkedvezőbb automatizálási eszközzé teszik.

Története Karate keretrendszer

Létrehozta ' Peter Thomas' 2017-ben, ez a szoftver célja, hogy a tesztelési funkciókat mindenki számára könnyen elérhetővé tegye. Java nyelven íródott, és a legtöbben arra számítottak, hogy a fájlok is ugyanezen a nyelven lesznek, azonban szerencsére nem ez a helyzet.

Inkább Gherkins fájlokat használ, ami a Cucumber keretrendszerrel való kapcsolatából adódik. Az automatizálási szoftver a Cucumber kiterjesztése, ezért a Gherkins fájl használatát örökli a működésében. A nagy különbség a kettő között az, hogy a Karate nem használ Java-t a tesztelés során, a Cucumber viszont igen.

Pontosan ez az oka annak, hogy a nem programozóknak is megfelel, mivel a Gherkins szintaxis szuper olvasható és átfogó. Ez az oka annak, hogy a Karate a legmegfelelőbb és ajánlott az automatizált API tesztelés világába való belépéshez.

A Karate Testing Framework néhány jellemzője a következő:

  • Könnyen érthető gyurgyalagnyelvet használ.
  • Nem igényel olyan technikai programozási ismereteket, mint a Java.
  • A népszerű Cucumber szabványokon alapul.
  • Könnyen létrehozható egy keretrendszer.
  • A párhuzamos tesztelés az alapfunkció, amelyet maga a Karate biztosít, ezért nem kell függővé tennünk magunkat a Maven, Gradle stb.
  • UI a teszt hibakereséséhez.
  • Funkciófájl hívása egy másik fájlból.
  • Támogatja a házon belül épített adatmeghajtó tesztelését, így nem kell külső keretrendszerektől függenie.
  • Beépített Native Rest Reports. Ráadásul integrálható a Cucumberrel a jobb UI Reports és a nagyobb áttekinthetőség érdekében.
  • Házon belüli támogatást nyújt a különböző tesztelési környezetek (QA, Stage, Prod, Pre-Prod) közötti konfigurációváltáshoz.
  • A CI/CD integráció zökkenőmentes támogatása, ami hasznos lehet.
  • Képes különböző HTTP-hívások kezelésére:
    • Web Socket támogatás
    • SOAP kérés
    • HTTP
    • Böngésző cookie-k kezelése
    • HTTPS
    • HTML-form adatai
    • XML kérés

Karate Vs Rest-Assured összehasonlítása

Pihenjen nyugodtan : Ez egy Java-alapú könyvtár a REST szolgáltatások tesztelésére. Java nyelvet használ a kódsorok írásához. Segít számos kéréskategória tesztelésében, ami a különböző üzleti logikai kombinációk ellenőrzését eredményezi.

Karate keretrendszer : Egy Cucumber/Gherkins alapú eszköz, amelyet SOAP & REST szolgáltatások tesztelésére használnak.

A következő táblázat felsorol néhány kiemelkedőbb különbséget a Rest-Assured & Karate Framework között:

S.sz. Alap Karate keretrendszer REST-biztosított
1 Nyelv Az uborka és az uborka kombinációját használja. A Java nyelvet használja
2 Kód Méret Általában kevesebb a kódsor, mivel a Cucumber-szerű struktúrát követi. A kódsor több, mivel a Java nyelv használatát foglalja magába
3 Szükséges műszaki ismeretek A nem programozók is könnyen megírhatják a Gherkins kódot A Java kód írásához műszaki ismeretekre van szükség
4 Adatvezérelt tesztelés Szükség van a TestNG vagy azzal egyenértékű, hogy ugyanazt támogassa A házon belüli címkék felhasználhatók az adatok tesztelésének támogatására
5 Biztosítja a SOAP-hívások támogatását Igen, ez biztosítja Csak egy REST-kérelemhez kapcsolódik
6 Párhuzamos tesztelés Igen, a párhuzamos tesztelés könnyen támogatott a párhuzamos jelentésgenerálással is. Nem túl nagy mértékben. Bár az emberek próbálkoztak már ezzel, a kudarcok aránya nagyobb, mint a sikereké.
7 Jelentés Házon belüli jelentéstételt biztosít, ezért nem kell külső pluginektől függenie. A jobb felhasználói felület érdekében akár a Cucumber jelentéskészítő pluginnal is integrálhatjuk. Függőnek kell lennie a külső pluginoktól, mint a Junit, TestNG
8 CSV támogatás külső adatokhoz Igen, a Karate 0.9.0-ból Nem, Java kódot vagy könyvtárat kell használni
9 Webes felhasználói felület automatizálása Igen, a Karate 0.9.5-től lehetséges a Web-UI automatizálás. Nem, ez nem támogatott
10 Minta GET Adott paraméter val1 = 'name1'

És param val2 = 'name2'

És a 'somelocation' elérési útvonal

Amikor a módszer kap

Ezután a mérkőzés válasza 'OKAY'-t tartalmaz

given().

param("val1", "name1").

param("val2", "name2").

when().

get("/some\location").

then().

body(containsString("OKAY"));

Ezért, ahogy a fenti különbségek is mutatják, nyugodtan kijelenthetjük, hogy a karate az egyik legkönnyebb dolog, amit bárki csinálhat.

A Karate keretrendszerrel való munkához szükséges eszközök

Most, hogy a Karate keretrendszerrel kapcsolatos alapismereteinket már megalapoztuk, nézzük meg a Karate környezet beállításához szükséges folyamatokat és eszközöket.

#1) Napfogyatkozás

Az Eclipse egy integrált fejlesztőkörnyezet, amelyet a számítógépes programozás területén használnak. Leginkább a Java programozáshoz használják. Ahogy korábban említettük, a Karate Java nyelven íródott, így még inkább érthető, hogy miért az Eclipse az API teszt szoftverek IDE-je. Egy másik ok, hogy ez egy nyílt forráskódú eszköz, és ez egy elég erős ok arra, hogy ezt az eszközt válasszuk.

Megjegyzés: Használhatjuk az IntelliJ-t, a Visual Studiót és más, a piacon elérhető szerkesztőket is.

#2) Maven

Ez egy build automatizáló eszköz, amelyet elsősorban Java projektek építésére használnak. Ez az egyik módja a Karate környezet beállításának és a kód megírásának. Az Eclipse Maven követelményekkel való beállításához a Maven telepítéséhez kattintson ide.

A Mavenben végzett munka során használja a Maven függőségeket, amelyek segítenek a Karate Framework támogatásában.

A következő függőségeket fogja használni a Maven a pom.xml-ben.

 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Megjegyzés: A legfrissebb verziók a Maven-tárban elérhetők.

#3) Gradle

A Gradle a Maven alternatívája, és ugyanolyan jól használható. Vannak hasonlóságaik és különbségeik, de egyformán használhatók a karate kódjaink környezetének beállításához.

Könnyebben használható, rugalmasabb, és akkor ajánlott használni, ha az alkalmazásunknak van némi modularizálási és kezelési igénye egy csomó bővítménnyel. A Gradle beállítási kódja valahogy így nézne ki,

 testCompile 'com.intuit.karate:karate-junit4:0.6.0' testCompile 'com.intuit.karate:karate-apache:0.6.0' 

Megjegyzés: Használhatja a MAVEN vagy OSZTÁLY.

#4) Java környezet beállítása a rendszerben

Be kell állítania a JDK és a JRE környezetet, hogy elkezdhesse a Karate Framework szkripteket.

A karate teszt forgatókönyv szerkezete

A Karate tesztszkript arról ismert, hogy rendelkezik a ".feature" kiterjesztéssel. Ezt a tulajdonságot a Cucumber-től örökölte. A fájlok Java konvenció szerinti szervezése szintén megengedett. A fájlok szervezése a Java csomagkonvencióknak megfelelően történhet. A fájlok szervezése szabadon történhet.

A Maven irányelvek azonban arra utasítanak, hogy a nem Java fájlok tárolása külön történjen. Ezek egy src/test/források A Java fájlokat pedig a src/main/java .

A Karate keretrendszer alkotói azonban határozottan úgy vélik, hogy a Java és a nem Java fájlokat egymás mellett kell tartani. Szerintük sokkal könnyebb a *.java és *.feature fájlokat keresni, ha együtt tartjuk őket, mintha a szabványos Maven struktúrát követnénk.

Ez könnyen elvégezhető a pom.xml módosításával az alábbiak szerint (Maven esetén):

 src/test/java **/*.java ... 

Az alábbiakban a karate keretrendszer általános felépítését ismertetjük:

Mivel ez a Karate keretrendszer a Runner fájlt használja, ami a Cucumberben is szükséges a feature fájlok futtatásához, így az írás nagy része a Cucumber szabványokat fogja követni.

De a Cucumberrel ellentétben a lépések nem igényelnek egyértelmű meghatározást a Karate-ban, ami viszont növeli a rugalmasságot és a műveletek egyszerűségét. Nem kell hozzáadni azt az extra ragasztót, amit általában a Cucumber keretrendszert követve kell hozzáadnunk.

A "Runner" osztály neve legtöbbször a következő TestRunner.java.

Ezután a TestRunner.java fájl a következő formát ölti:

 import com.intuit.karate.junit4.Karate; import org.junit.runner.RunWith; @RunWith(Karate.class) public class TestRunner { } 

És beszélve a .feature fájl tartalmazza az összes tesztelési forgatókönyvet, amelyet tesztelni kell annak érdekében, hogy az API az elvárt követelményeknek megfelelően működjön.

Egy általános *.feature fájl az alábbiak szerint néz ki:

 Jellemző: felhasználói adatok lekérése Forgatókönyv: a felhasználói adatok lekérdezésének tesztelése Adott url '//reqres.in/api/users/2' Amikor a GET módszer Amikor a GET módszer Akkor állapot 200 

Az első alapvető karate teszt szkript létrehozása

Ez a rész segít Önnek a legelső tesztelési szkript elkészítésében, amely hasznos lesz az API-k átalakításában egy Karate-keretrendszer formájában.

Mielőtt megírnánk az alapvető Karate teszt szkripteket, kérjük, telepítse a következő szükséges eszközöket a gépére:

  • Eclipse IDE
  • Maven. Állítsa be a megfelelő Maven elérési utat.
  • JDK & JRE. Állítsa be a megfelelő elérési utat.

Nézzük meg a lépésről lépésre történő megközelítést:

#1) Hozzon létre egy új MAVEN Projekt az Eclipse szerkesztőben

  • Eclipse megnyitása
  • Kattintson a Fájl gombra. Válassza az Új projekt lehetőséget.

  • Maven projekt kiválasztása

  • Válassza ki a Munkaterület helyét.
  • Válassza ki az archetípust (általában a " Maven-archetype-quickstart 1.1 " egyszerű Maven projektek esetén).
  • Adja meg a csoport azonosítóját &; a lelet azonosítóját (példánkban a következő értékeket használtuk).
    • Csoport azonosító : Karate
    • Lelet azonosítója: KarateTestScriptsSample
  • Kattintson a Befejezés gombra a beállítás befejezéséhez.

#2) A létrehozás után a Project Explorer ablakban a következő struktúrát láthatja.

#3) Vegye fel az összes függőséget.

A legelső lépésünk, a beállítás után mi lesz, hogy tartalmazza az összes függőséget Az összes taget a POM.xml alatt tartjuk (Feltételezve, hogy már tisztában van a POM.xml használatával).

  • Nyissa meg a POM.xml fájlt, és másolja be az alábbi kódot a függőségi tag alá, majd mentse el a fájlt.
 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Kattintson ide a forrásért.

#4) Nézzük Brainstorming a forgatókönyv, mit fogunk tesztelni ebben a Karate Basic Test Script.

Forgatókönyv:

Egy API-t fogunk tesztelni ezzel az URL-címmel.

Útvonal: api/users/2

Módszer: GET

És érvényesítenünk kell , hogy a kérés visszatér-e egy Siker kód (200) vagy nem.

Egyszerűen fogalmazva, csak tesztelni fogunk egy minta API-t, hogy lássuk, sikeresen végrehajtódik-e vagy sem.

Megjegyzés: Egy tesztelésre rendelkezésre álló minta API-t veszünk. Választhat bármilyen PATH-ot, vagy hivatkozhat az API-jára.

Kattintson ide a forrásért.

#5) A következő lépésünk az lenne, hogy létrehozzunk egy .feature fájl.

Amint azt a bevezető részben említettük, a .feature fájl az a tulajdonság, amelyet a Cucumber-től örököltünk. Ebben a fájlban írjuk ki azokat a tesztforgatókönyveket, amelyeket az API tesztelés elvégzéséhez végre kell hajtani.

  • Menj a mappába src/test/java a projektben.

  • Kattintson rá a jobb gombbal, és hozzon létre egy új fájlt - userDetails.feature. Ezután kattintson a Befejezés gombra.

Most már a következő fájlt látja a mappa alatt src/test/java

A Zöld színű ikon hasonlít a .feature fi le a Cucumberben, amelyet az imént hoztunk létre.

  • Miután létrehoztuk a fájlt, most megírjuk a tesztforgatókönyveinket, amelyeket a következő szakaszban tárgyalunk.

#6) Mivel megvan a forgatókönyv és az üres . funkció fájl készen áll, most pedig kezdjük el az első szkriptünket. Kezdjük el a kódolást

Írja a következő kódsort a userDetails.feature fájl alá, amelyet az 5. lépésben hoztunk létre:

 Jellemző: felhasználói adatok lekérése Forgatókönyv: a felhasználói adatok lekérdezésének tesztelése Adott url '//reqres.in/api/users/2' Amikor a GET módszer Amikor a GET módszer Akkor állapot 200 

Próbáljuk meg megérteni a fenti fájlban szereplő komponenseket:

  • Jellemző: A kulcsszó megmagyarázza a tesztelt funkció nevét.
  • Háttér: Ez egy opcionális szakasz, amelyet előfeltétel szakaszként kezelünk. Ez használható annak meghatározására, hogy mi minden szükséges az API teszteléséhez. Tartalmazza a következőket HEADER, URL &; PARAM lehetőségek.
  • Forgatókönyv: Minden funkciófájl, amit látni fogsz, legalább egy funkciót tartalmaz (bár ez adhat többszörös forgatókönyvek). Ez a teszteset leírása.
  • Adott: Ez az a lépés, amelyet minden más tesztlépés előtt végre kell hajtani. Ez egy kötelezően végrehajtandó művelet.
  • Mikor: Megadja azt a feltételt, amelynek teljesülnie kell a következő vizsgálati lépés végrehajtásához.
  • Akkor: Ez azt mondja meg, hogy mi történik abban az esetben, ha az említett feltétel a Amikor teljesül.

Megjegyzés: A fent említett kulcsszavak mindegyike a Gherkins nyelvből származik. Ezek a Cucumber használatával a teszt szkriptek írásának standard módja.

És még néhány szó, amelyet a funkciófájlban használnak:

  • 200: Ez az a státusz/válaszkód, amelyet várunk (Kattintson ide a státuszkódok listájáért).
  • GET: Ez az API-módszer, mint a POST, PUT stb.

Reméljük, hogy ez a magyarázat könnyen érthető volt számodra. Most már tudod, hogy pontosan mi van a fenti fájlban.

Most létre kell hoznunk egy TestRunner.java fájlt

Ahogy a fenti szakaszban már kifejtettük, a Cucumbernek szüksége van egy Runner fájlra, amely a .feature fájlt, amely a tesztelési forgatókönyveket tartalmazza.

  • Menj a mappába src/test/java a projektben

  • Kattintson rá a jobb gombbal, és hozzon létre egy Új Java fájlt: TestRunner.java
  • A fájl létrehozása után, helyezze a következő kódsorokat alatta:
 import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { } 
  • A Test Runner az a fájl, amelyet most végre kell hajtani az 5. lépés alatt megírt kívánt forgatókönyv végrehajtásához.

#7) Most már készen állunk mindkét fájlunkkal TestRunner.Java és userDeatils.feature. Már csak az a feladatunk, hogy Fuss a forgatókönyv.

  • Menjen a TestRunner.java fájlhoz, és kattintson a jobb gombbal a fájlra az alábbi képen látható módon.

  • Válassza a Futtatás mint -> Junit Testet
  • Most, miután kiválasztotta, megfigyelheti, hogy a teszteset elindult.
  • Várja meg, amíg a teszt script végrehajtódik. Ha ez megtörtént, az alábbi képen látható módon fog megjelenni az ablakban.

  • Végül elmondhatjuk, hogy sikeresen létrehoztuk a legelső alapvető Tesztelési forgatókönyv a Karate keretrendszer.

#8) Végül a Karate keretrendszer egy HTML-jelentést is készít a végrehajtott végrehajtásról.

  • Menjen a Cél mappa -> surefire-reports-> Itt látni fogja a HTML-jelentést, amelyet meg tud nyitni.

** Azt is javasoljuk, hogy a jobb megjelenés érdekében nyissa meg a Chrome böngészővel.

  • A következő HTML-jelentés jelenik meg Önnek, amely a következőket mutatja be Forgatókönyvek & Teszt amelyet az említett forgatókönyvhöz hajtottak végre:

Következtetés

Ebben a bemutatóban az API-tesztelésről, a piacon elérhető különböző tesztelési eszközökről és arról beszéltünk, hogy a Karate Framework hogyan jobb választás a társaihoz képest.

Lépésről lépésre haladtunk az első alapvető tesztszkriptünk létrehozásakor. Azzal kezdtük, hogy létrehoztunk egy alapvető Maven projekt az Eclipse IDE-ben egy .feature fájl létrehozásához, amely tartalmazza az összes tesztelési forgatókönyvet és egy Runner fájlt a .feature fájlban említett teszteset végrehajtásához.

A több lépcső végén láthattuk a teszteredmények végrehajtási jelentését.

Reméljük, hogy ez a bemutató hasznos volt a kezdők számára, hogy megtanulják, hogyan készítsék el első tesztszkriptjüket a Karate Framework segítségével, és hogyan végezzenek API tesztelést. Ez a részletes lépésről-lépésre történő megközelítés egy csodálatos módja annak, hogy különböző teszteket futtassanak és hajtsanak végre az API-n.

NEXT>>

Ugrás az oldal tetejére