REST Assurance API tesztelési útmutató

⚡ Okos összefoglaló

A REST Assured a vállalat egyik legkiválóbb szereplője. Java-alapú, nyílt forráskódú könyvtár, amely leegyszerűsíti a REST API automatizált tesztelést. A keretrendszer lehetővé teszi a minőségbiztosítási mérnökök számára, hogy összetett JSON-válaszokat, fejléceket, állapotkódokat és válaszidőket validáljanak tiszta BDD-stílusú szintaxis és zökkenőmentes Maven-integráció használatával.

  • 🇧🇷 Foundation Beállítás: konfigurálása Java, Eclipse, és a Maven függőségeket az első REST Assured tesztszkript megírása előtt.
  • 📐 Szintaxismesterség: Alkalmazd a Given-When-Then mintát az API-kérések olvasható, üzletileg könnyen érthető formátumban történő kifejezéséhez.
  • 🔍 Részletes validáció: Extracválasz törzse, állapotkódok, fejlécek, tartalomtípus és időzítés egy folyékony láncon keresztül.
  • 🧩 Útvonal navigáció: Beágyazott JSON-értékek bejárása pontjelöléssel, hasonlóan az XPath-hoz a Selenium pontos állításokért.
  • 🛡️ CI/CD integráció: Kombinálja a REST Assurance szolgáltatást a következővel: TestNG or JUnit API-ellenőrzések közvetlen beágyazása az automatizált build folyamatokba.

REST Assured bemutatója

Mi az a nyugalom?

Biztos lehet benne lehetővé teszi a REST API-k tesztelését java könyvtárak használatával, és jól integrálható a Maven-nel. Nagyon hatékony párosítási technikákkal rendelkezik, így a várt eredmények érvényesítése is meglehetősen egyszerű. A Rest Assured rendelkezik a kérés és a válasz szinte minden részéből származó adatok lekérésére szolgáló módszerekkel, függetlenül attól, hogy milyen bonyolultak a JSON-struktúrák.

A tesztelő közösség számára az API Automation Testing még mindig új és rés. A JSON bonyolultsága miatt az API-tesztelés feltáratlan marad. Ez azonban nem teszi kevésbé fontossá a tesztelési folyamatban. A Rest Assured.io keretrendszer nagyon leegyszerűsítette az alapvető java alapjainak használatát, így nagyon kívánatos megtanulni.

Miért van szükség a nyugalomra?

Képzeld el, hogy kinyitod a Google Térképen megtekintheti és megkeresheti a kívánt helyet. Azonnal láthatja a közeli éttermeket, a vezető utazási szolgáltatók ingázási lehetőségeit és számos lehetőséget egy kattintásnyira. Mindannyian tudjuk, hogy ezek nem... Google termékek, szóval hogyan Google Sikerül megjeleníteni őket? Ezen szolgáltatók elérhető API-jait használja. Ha ilyen jellegű beállítások tesztelésére kérnek fel, még a felhasználói felület felépítése vagy fejlesztése előtt, az API-k tesztelése rendkívül fontossá válik. Különböző adatkombinációkkal történő ismételt tesztelésük nagyon alkalmassá teszi az automatizálást.

Korábban a csapatok dinamikus nyelveket használtak, mint például Groovy és a Ruby-t ennek eléréséhez, ami kihívást jelentett. Ezért az API tesztelést a funkcionális tesztelők nem vizsgálták széles körben.

A Rest Assureddel azonban az API-k automatizált tesztelése és az egyszerű HTTPS-kérések felhasználóbarát testreszabással történő küldése egyszerűvé válik, ha valaki rendelkezik alapvető háttérrel. JavaHasznos az API tesztelés és az integrációs tesztelés megértéséhez. A Rest Assured erős bizalmat biztosít a backenddel kapcsolatban, míg a front-end tesztelők a felhasználói felületre és a kliensoldali műveletekre koncentrálhatnak. A Rest Assured nyílt forráskódú, és a metódusok és könyvtárak folyamatos hozzáadása nagyszerű választássá tette az API automatizálásához.

#1 LEGJOBB ÖSSZESÍTÉSBENTesztelje a sigmát
9.8/ 10
★ ★ ★ ★ ★
Ingyenes demó letöltése
PractiTest
9.5/ 10
★ ★ ★ ★ ★
Látogat PractiTest
Testiny
9.3/ 10
★ ★ ★ ★ ★
Látogat Testiny
LegmegfelelőbbTesztelés automatizálásaTesztkezelésKis és közepes minőségbiztosítási csapatok
Legfontosabb jellemzője✓Automatizált tesztek generálása másodpercek alatt✓Központosított tesztmenedzsment✓Manuális + automatizált tesztesetek
Integráció✓Jenkins, Slack, Jira✓Jira, Jenkins, Slack✓Jira, GitHub, GitLab
Ingyenes próbaverzióIngyenes bemutató14 napos ingyenes próbaIngyenes bemutató
Ingyenes demó letöltéseLátogat PractiTestLátogat Testiny

REST Assured vs. Postman: Főbb különbségek

Mindkettő REST Assuranced és Postman validálni a REST API-kat, mégis mindegyik a tesztelési életciklus más szakaszába illeszkedik. A megfelelő eszköz kiválasztása a csapat készségeitől, a projekt hatókörétől és az integrációs igényektől függ.

Aspect Biztosított pihenés Postman
típus Java kódalapú automatizálási könyvtár GUI-alapú API kliens szkriptelési támogatással
Legjobb használati eset Folyamatos integrációs folyamatok és regressziós csomagok Manuális böngészés és gyors API-ellenőrzések
Készségigény Mag Java szükséges tudás Minimális kódolás; felhasználások JavaSzkriptrészletek
Beépített reporting Integrálódik a TestNG, JUnit, és Allure Beépített futási összefoglalók a Newman CLI-n keresztül

Sok csapat használja Postman korai prototípushozping és váltson REST Assuredre az automatizált regresszióhoz, miután az API-t sikerült konfigurálni.tract stabilizálódik.

A Rest Assured.io beállítása ezzel Eclipse

A REST Assured beállítása három alapvető függőséget foglal magában: Java, egy IDE és Maven. Kövesse az alábbi lépéseket a későbbi építési hibák elkerülése érdekében.

1. lépés) Telepítés Java. Lásd erre útmutató

2. lépés: Töltse le az IDE-t a kezdéshez: fogyatkozás

3. lépés) Telepítse a Maven-t, és állítsa be az eclipse-t. Utal itt .

Nyugodtan állítsa be

  1. Hozz létre egy Maven projektet az integrált fejlesztői környezetedben. Mi IntelliJ-t használunk, de hasonló struktúrát kapsz bármelyik másik integrált fejlesztői környezetben.
  2. Nyisd meg a POM.xml fájlodat.

REST Assured Maven beállítás projektstruktúrája

REST Assured Maven munkaterület projektstruktúrája

Megnyugodhat.io: For Java verzió < 9 felhasználó:

Adja hozzá az alábbi függőséget a POM.xml fájlhoz:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Megnyugodhat.io: For Java 9-es vagy újabb verziójú felhasználók:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured-all</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Hibaelhárítás:

Ha hibákat lát, és nem biztos benne, hogy a függőségek megfelelően letöltődtek-e, kövesse az alábbi lépéseket:

  1. Maven build futtatása az összes függőség importálásához. A Maven beállításával kapcsolatos segítséget itt találja: Guru99.
  2. Ha a hibák továbbra is fennállnak, futtasson egy Maven tisztítást, majd telepítsen Maven-t. A buildnek hibák nélkül kell befejeződnie.
  3. Adja hozzá az alábbi importálásokat a Java osztályt, és győződjön meg arról, hogy nincsenek fordítási hibák.
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

Az első egyszerű Rest Assured szkript

Miután a függőségek a helyükön vannak, megírhatod az első szkriptedet. A keretrendszer viselkedésvezérelt fejlesztési (BDD) stílust követ, amely szinte angolul olvasható.

Syntax:

A Rest Assured.io szintaxisa a keretrendszer legolvashatóbb része, mivel nagyon BDD-szerű és érthető.

Given().
        param("x", "y").
        header("z", "w").
when().
Method().
Then().
        statusCode(XXX).
        body("x", "y", equalTo("z"));

Magyarázat:

Code Magyarázat
Adott() A „Given” kulcsszóval beállíthatod a hátteret. Itt adhatod meg a kérés fejléceit, a lekérdezési és elérési út paramétereit, a törzset és a sütiket. Ez opcionális, ha ezekre az elemekre nincs szükség a kérésben.
Amikor() A „mikor” kulcsszó jelöli a forgatókönyved előfeltételét. Például, ha „amikor” kapsz/közzétesz/felteszel valamit, akkor csinálj valami mást.
Módszer() Helyettesítsd be ezt bármelyik CRUD művelettel (get/post/put/delete).
Akkor() Az assert és a matcher feltételek ide kerülnek.

Most, hogy megvannak a beállítások és a szintaxis háttere, hozzuk létre az első egyszerű tesztünket. Nem baj, ha a struktúra újnak tűnik számodra, ahogy tovább kódolsz és értelmezed az egyes sorokat, belejössz majd a dologba.

Mit fogsz hozni?

Nyissa meg a böngészőt, és nyomja meg a - https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1. Győződjön meg róla, hogy az alábbiak szerint lát valamit.

Minta Rest Assured szkript API-válasz

REST Assured által rögzített minta API-válasz

Ha hibát kapsz a böngészőben, amikor megpróbálsz választ kapni a kérésre:

  1. Ellenőrizd, hogy HTTPS vagy HTTP protokollt használtál-e. Lehetséges, hogy a böngésződben vannak olyan beállítások, amelyek blokkolják a nem biztonságos webhelyeket.
  2. Ellenőrizd, hogy van-e proxy vagy tűzfal, ami blokkolja-e a böngésződet a weboldal megnyitásában.

*Megjegyzések – itt nem használtál fejléceket, törzset és sütit sem. Ez egy URL, és az API-ból szerzed be a tartalmat, ahelyett, hogy bármilyen meglévő tartalmat közzétennél vagy frissítenél. Ez egy GET hívássá teszi. Ne feledd ezt, hogy jobban megértsd az első tesztünket.

A teszted célja:

A szkript célja, hogy ugyanazt a kimenetet nyomtatja ki az IDE-konzolon, mint amit a böngészőben kapott a Nyugodtan megnyugodva.

Kódoljuk ezt az alábbi lépésekkel:

A válasz megszerzése Test

Step 1) Hozz létre egy „myFirstRestAssuredClass” nevű osztályt.

Step 2) Hozz létre egy „getResponseBody” nevű metódust.

Step 3) A korábban tanult given, when és then szerkezethez hasonlóan írd be az alábbi kódot:

adott(). -> Nincs szükség fejlécekre, nincs lekérdezés vagy elérési út paraméter.

amikor(). -> Nincs megadva konkrét feltétel.

kap('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> csak a URL ellátni kell.

then(). -> Nincs szükség konkrét állításokra.

log(). all() -> Miután az összes válasz lekérésre került, naplózza a választ, a fejléceket és lényegében mindent, amit a kérés visszaad.

public static void getResponseBody(){
   given().when().get("https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1").then().log()
  .all();

}

Most vegyük észre, hogy a URL hosszú és kevésbé olvasható. Alaposabban megvizsgálva, észreveheti, hogy 3 lekérdezési paramétert használ:

  1. Ügyfél-azonosító
  2. Jelszó
  3. Számlaszám

A Rest Assured segítségével minden részt (lekérdezés, elérési út, fejlécparaméter) külön-külön adhatunk át, így a kód olvashatóbb és könnyebben karbantartható. Ezenkívül szükség szerint paraméterezhetjük az adatokat egy külső fájlból.

A query param használatához visszatérünk a szintaxis definíciójához, és azt látjuk, hogy mindegyik az adott részeként kerül átadásra.

public static void getResponseBody(){

   given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log()
           .body();
}

**Megjegyzendő, hogy a „body” szót használtuk az „all” helyett; ez segít nekünk a példában.**traccsak a válasz törzse.

output:

A válasz állapotkódjának lekérése

A következő szkriptelendő módszer az állapotkód lekérése és egy érvényesítési művelet elvégzése.

Step 1) Hozz létre egy getResponseStatus() nevű metódust.

Step 2) Használja ugyanazt a kérési struktúrát, mint fent. Másolja és illessze be.

Step 3) A naplózás helyett használd a 'getStatus' függvényt.Code„A Rest Assured beépített metódusa az állapotkód értékének lekérésére.”

Step 4) Annak érdekében, hogy a státuszkódod 200 legyen, használd a következő kulcsszavakat: – assertThat().statusCode(várhatóCode).

**Megjegyzés – URL egy változó, amelyet az egyszerűség kedvéért használunk. URL a teljes API-kérést tárolja URL.

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

output:

Üzleti igény

Az automatizálás egyik alapszabálya, hogy az ellenőrző pontokat úgy kell elhelyeznünk, hogy a teszt csak akkor menjen tovább, ha minden szükséges feltétel teljesül. Az API tesztelés során a legalapvetőbb ellenőrzés az, hogy ellenőrizzük, hogy a kérés állapotkódja 2XX formátumban van-e.

A teljes kód eddig:

import java.util.ArrayList;
import static io.restassured.RestAssured.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class myFirstRestAssuredClass {

   final static String url="https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1";

   public static void main(String args[]) {

      getResponseBody();
     getResponseStatus();

; }

   //This will fetch the response body as is and log it. given and when are optional here
   public static void getResponseBody(){
       given().when().get(url).then().log()
      .all();

  given().queryParam("CUSTOMER_ID","68195")
               .queryParam("PASSWORD","1234!")
               .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log().body();
   }

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

}

*Jegyzet:

  1. A 200-as érték sikeres válasznak számít ebben a forgatókönyvben. Előfordulhat, hogy a kérés sikertelennek kell lennie, ilyenkor érdemes lehet a 4XX vagy az 5XX kódot használni. Próbálja meg érvénytelen paraméterek megadásával módosítani az állapotkódot, és ellenőrizze.
  2. Amikor egy feltételt érvényesítünk, nem lesz nyomtatás a konzolon, hacsak nem történik hiba.

Szkript a válasz különböző részeinek lekéréséhez

A válasz törzsén és állapotkódján túl a REST Assured láncolható ex-en keresztül fejléceket, válaszidőt és tartalomtípust is elérhetővé tesz.tractor metódusok. Az „ex” kulcsszótracA t' elengedhetetlen ezen konkrét részek lekéréséhez.

Fejléc

A Rest Assured egy nagyon egyszerű nyelv, és a fejlécek lekérése ugyanolyan egyszerű. A metódus neve headers(). Hasonlóan az előzőhöz, létrehozunk egy önálló módszert is ennek érdekében.

public static void getResponseHeaders(){
   System.out.println("The headers in the response "+
                   get(url).then().extract()
           .headers());
}

Kérjük, vegye figyelembe, hogy a 'given().when()' itt kimarad, és a kódsor a get()-től kezdődik. Ez azért van, mert a kérés elküldése és a válasz fogadása előtt nincs előfeltétel vagy ellenőrzés. Ilyen esetekben opcionális ugyanezt használni.

Kimenet:

Üzleti igény:

Gyakran előfordul, hogy a következő kéréshez engedélyezési tokent vagy munkamenet-sütit kell használni, és ezek az adatok többnyire a válasz fejléceként kerülnek visszaadásra.

Válaszidő

A válasz lekéréséhez szükséges idő eléréséhez a háttérrendszerből vagy más downstream rendszerekből a Rest Assured egy „timeIn” nevű metódust biztosít megfelelő timeUnit értékkel, amely lekéri a válasz visszaküldéséhez szükséges időt.

public static void getResponseTime(){
  System.out.println("The time taken to fetch the response "+get(url)
         .timeIn(TimeUnit.MILLISECONDS) + " milliseconds");
}

output:

Üzleti igény:

Az API-k tesztelésének egy nagyon fontos jellemzője a válaszidejük, amely az alkalmazás teljesítményét méri. A hívás időtartama hosszabb vagy rövidebb lehet az internet sebességétől, az API aktuális teljesítményétől, a szerver terhelésétől és egyéb, az időt befolyásoló tényezőktől függően.

Content-Type

A visszaadott válasz tartalomtípusát a „contentType()” metódussal kérdezheted le.

public static void getResponseContentType(){
   System.out.println("The content type of response "+
           get(url).then().extract()
              .contentType());
}

teljesítmény

Üzleti igény:

Időnként a tartalomtípus lekérése elengedhetetlen annak biztosításához, hogy ne legyenek biztonsági rés a kereszteredetű fenyegetésekkel szemben, és hogy megerősítsük, hogy az átadott tartalom megfelel az API szabványainak.

Egyedi JSON-elem lekérése

A megadott válasz alapján ki kell számolnod a teljes összeget. Ki kell keresned az összes összeget, és össze kell adnod őket.

Lépések:

Step 1) Az összeg mező egy „utasítások” kulcsú tömbben található, amely viszont az „eredmény” kulcsú listában szerepel.

Step 2) A Rest Assured egy mechanizmust biztosít az API-ban található értékek eléréséhez a „path” használatával.

Step 3) Az összegek eléréséhez vezető út a „result.statements.MOUNT”. Gondoljon rá úgy, mint az XPath-ra a Selenium.

Step 4) Kérd le egy gyűjtemény összes összegét, majd ismételd végig az összes értéket az összeg kiszámításához.

public static void getSpecificPartOfResponseBody(){

ArrayList<String> amounts = when().get(url).then().extract().path("result.statements.AMOUNT") ;
int sumOfAll=0;
for(String a:amounts){

    System.out.println("The amount value fetched is "+a);
    sumOfAll=sumOfAll+Integer.valueOf(a);
}
System.out.println("The total amount is "+sumOfAll);

}

Megjegyzés: Mivel az összeg érték karakterlánc adattípusú, ezért összegzéshez egész számmá alakítjuk.

output:

REST Assured tesztautomatizálás bevált gyakorlatai

Miután megértette az alapokat, a fegyelmezett minták alkalmazása révén a csomag megbízható maradhat az API-felület növekedésével párhuzamosan. Az alábbi gyakorlatok segítenek a csapatoknak elkerülni a bizonytalan teszteket és a karbantartási többletterhelést.

  1. Központosítsd a bázist URL: Tárolja az alap URI-t és a hitelesítési tokeneket egyetlen konfigurációs osztályban vagy tulajdonságfájlban. Ez elkerüli a duplikációt és leegyszerűsíti a környezetváltást.
  2. Használja a kérés-válasz specifikációkat: Újrafelhasználható RequestSpecBuilder és ResponseSpecBuilder objektumokat hozhat létre. Ezek csökkentik a sablonos tesztek használatát, ha sok teszt közös fejlécet vagy állítást használ.
  3. JSON séma validálása: Kombinálja a REST Assured-et a json-schema-validator modullal a con megerősítéséhez.tract integritás. A sémaellenőrzések még azelőtt kiszűrik a hibás változásokat, mielőtt azok elérnék a későbbi felhasználókat.
  4. Tesztadatok kiszervezése: Tárolja a hasznos adatokat JSON fájlokban, vagy használjon adatszolgáltatókat a következő helyről: TestNGA fixen kódolt adatok gyorsan elavulnak.
  5. Független tesztek futtatása: Minden tesztnek saját adatait kell beállítani és elemeznie. A sorrendfüggő csomagok kiszámíthatatlanul megbuknak a párhuzamos CI-futtatások során.
  6. Naplók szelektív rögzítése: Stabil csomagokban használd a log().ifError() függvényt, hibakeresés közben pedig a log().all() függvényt. A részletes naplók lelassítják a konfigurációelemzési folyamatokat és elfedik a valós problémákat.
  7. Csatlakoztassa a CI/CD-hez: REST Assured csomagok indítása Maven Surefire vagy Failsafe segítségével Jenkins, GitHub Actions vagy GitLab. Futtasson füstellenőrzéseket minden commit után, és teljes regressziót végezzen éjszaka.

Ezen szokások korai elsajátítása az API-automatizálást hosszú távú előnnyé, és nem törékeny szűk keresztmetszetekké alakítja.

GYIK

Igen. A modern MI-asszisztensek, mint például a ChatGPT és a GitHub Copilot, képesek REST Assured tesztvázlatokat készíteni API-specifikációkból. A mérnököknek továbbra is ellenőrizniük kell a generált kódot az assertions, az adatkezelés és a peremhelyzetek szempontjából az egyesítés előtt.

A mesterséges intelligencia által vezérelt eszközök elemzik a válaszmintákat, és önjavító lokátorokat vagy állításokat javasolnak. Jelzik a séma eltolódását, refaktorokat javasolnak, és automatikusan frissítik a tesztadatokat, ami csökkenti a manuális karbantartást, amikor az API-k gyakran fejlődnek.

A REST Assured egy Java CI-folyamatokban kódvezérelt automatizáláshoz készült könyvtár. Postman egy grafikus kliens manuális böngészéshez és gyors szkripteléshez. A csapatok gyakran kombinálják mindkettőt a tesztelési életciklus során.

A REST Assured REST és JSON formátumra optimalizált. Nyers XML hasznos adatokat tud küldeni SOAP-hoz, de dedikált eszközök, mint például SoapUI gazdagabb támogatást kínálnak a WSDL elemzéshez és a SOAP-specifikus állításokhoz.

A REST Assured természetes módon párosul a következőkkel: TestNG és a JUnit állításokhoz, életciklus-horgokhoz és jelentéskészítéshez. Az Allure, az Extent Reports és a Maven Surefire vizualizációt és CI-integrációt is biztosít.

Foglald össze ezt a bejegyzést a következőképpen: