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.

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.
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
- 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.
- Nyisd meg a POM.xml fájlodat.
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:
- 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.
- 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.
- 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.
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:
- 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.
- 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:
- Ügyfél-azonosító
- Jelszó
- 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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.





