Tutorial de testare API REST Assured

โšก Rezumat inteligent

REST Assured se impune ca JavaBibliotecฤƒ open-source bazatฤƒ pe , care simplificฤƒ testarea automatฤƒ a API-urilor REST. Framework-ul permite inginerilor de calitate sฤƒ valideze rฤƒspunsuri JSON complexe, anteturi, coduri de stare ศ™i timpi de rฤƒspuns folosind o sintaxฤƒ curatฤƒ รฎn stil BDD, cu integrare perfectฤƒ cu Maven.

  • โš™๏ธ Foundation รŽnfiinศ›at: Configuraศ›i Java, Eclipseศ™i dependenศ›ele Maven รฎnainte de a scrie primul script de testare REST Assured.
  • ๐Ÿ“ Stฤƒpรขnirea sintaxei: Aplicฤƒ modelul Given-When-Then pentru a exprima cererile API รฎntr-un format uศ™or de citit ศ™i uศ™or de utilizat รฎn mediul de afaceri.
  • ๐Ÿ” Validare granularฤƒ: Extraccorpul rฤƒspunsului t, codurile de stare, anteturile, tipul de conศ›inut ศ™i temporizarea printr-un lanศ› fluent.
  • ๐Ÿงฉ Navigare pe cale: Parcurge valorile JSON imbricate folosind notaศ›ia punctatฤƒ similarฤƒ cu XPath รฎn Selenium pentru afirmaศ›ii precise.
  • ๐Ÿ›ก๏ธ Integrare CI/CD: Combinaศ›i REST Assured cu TestNG or JUnit pentru a รฎncorpora verificฤƒrile API direct รฎn conductele de compilare automate.

Tutorial REST Assured

Ce este Fii sigur?

Fiศ›i siguri vฤƒ permite sฤƒ testaศ›i API-urile REST folosind biblioteci java ศ™i se integreazฤƒ bine cu Maven. Are tehnici de potrivire foarte eficiente, aศ™a cฤƒ afirmarea rezultatelor aศ™teptate este, de asemenea, destul de simplฤƒ. Rest Assured are metode pentru a prelua date din aproape fiecare parte a cererii ศ™i a rฤƒspunsului, indiferent cรขt de complexe sunt structurile JSON.

Pentru comunitatea de testare, API Automation Testing este รฎncฤƒ nou ศ™i de niศ™ฤƒ. Complexitฤƒศ›ile JSON menศ›in testarea API-ului neexplorat. Dar asta nu รฎl face mai puศ›in important รฎn procesul de testare. Cadrul Rest Assured.io a fฤƒcut-o foarte simplu folosind elementele de bazฤƒ ale Java, ceea ce รฎl face un lucru foarte de dorit de รฎnvฤƒศ›at.

De ce ai nevoie de Rest-Assured?

Imagineazฤƒ-ศ›i cฤƒ รฎศ›i deschizi Google Vizualizaศ›i Hฤƒrศ›i ศ™i cฤƒutaศ›i un loc unde doriศ›i sฤƒ mergeศ›i. Vedeศ›i imediat restaurante รฎn apropiere, opศ›iuni de navetฤƒ de la furnizorii de servicii de cฤƒlฤƒtorie de top ศ™i multe opศ›iuni la รฎndemรขnฤƒ. ศ˜tim cu toศ›ii cฤƒ acestea nu sunt Google produse, deci cum funcศ›ioneazฤƒ Google reuศ™eศ™te sฤƒ le afiศ™eze? Foloseศ™te API-urile expuse ale acestor furnizori. Acum, dacฤƒ ศ›i se cere sฤƒ testezi acest tip de configuraศ›ie, chiar รฎnainte ca interfaศ›a cu utilizatorul sฤƒ fie construitฤƒ sau sฤƒ fie รฎn curs de dezvoltare, testarea API-urilor devine extrem de importantฤƒ. Testarea lor repetatฤƒ cu diferite combinaศ›ii de date o face un caz foarte potrivit pentru automatizare.

Anterior, echipele foloseau limbaje dinamice precum Groovy ศ™i Ruby pentru a realiza acest lucru, iar acest lucru a fost o provocare. Prin urmare, testarea API nu a fost exploratฤƒ pe scarฤƒ largฤƒ de cฤƒtre testerii funcศ›ionali.

Totuศ™i, cu Rest Assured, testarea automatizatฤƒ a API-urilor ศ™i trimiterea de cereri HTTPS simple cu personalizฤƒri uศ™or de utilizat devin simple dacฤƒ se au cunoศ™tinศ›e de bazฤƒ despre... JavaEste util pentru รฎnศ›elegerea testฤƒrii API ศ™i a testฤƒrii integrฤƒrii. Rest Assured oferฤƒ o รฎncredere puternicฤƒ รฎn backend, รฎn timp ce testerii front-end se pot concentra pe interfaศ›a cu utilizatorul ศ™i pe operaศ›iunile din partea clientului. Rest Assured este open source, iar adฤƒugarea constantฤƒ de metode ศ™i biblioteci l-a transformat รฎntr-o alegere excelentฤƒ pentru automatizarea API-urilor.

REST Assured vs. Postman: Diferenศ›ele cheie

Atรขt REST Assured, cรขt ศ™i Postman valideazฤƒ API-urile REST, รฎnsฤƒ fiecare se potriveศ™te unei etape diferite a ciclului de viaศ›ฤƒ al testฤƒrii. Selectarea instrumentului potrivit depinde de abilitฤƒศ›ile echipei, de domeniul de aplicare al proiectului ศ™i de nevoile de integrare.

Aspect Fiศ›i siguri Postman
Tip Java bibliotecฤƒ pentru automatizare bazatฤƒ pe cod Client API bazat pe interfaศ›ฤƒ graficฤƒ cu suport pentru scripting
Cel mai bun caz de utilizare Conducte de integrare continuฤƒ ศ™i suite de regresie Explorare manualฤƒ ศ™i verificฤƒri rapide ale API-ului
Cerinศ›ฤƒ de abilitฤƒศ›i Nucleu Java cunoศ™tinศ›e necesare Codare minimalฤƒ; utilizฤƒri JavaFragmente de script
Raportarea Se integreazฤƒ cu TestNG, JUnitศ™i Allure Rezumate de rulare รฎncorporate prin intermediul interfeศ›ei de comandฤƒ Newman

Multe echipe folosesc Postman pentru prototipuri timpuriiping ศ™i treceศ›i la REST Assured pentru regresie automatฤƒ odatฤƒ ce API-ul este contract se stabilizeazฤƒ.

Cum sฤƒ configuraศ›i Rest Assured.io cu Eclipse

Configurarea REST Assured implicฤƒ trei dependenศ›e principale: Java, un IDE ศ™i Maven. Urmaศ›i paศ™ii de mai jos pentru a evita erorile de compilare ulterioare.

Pasul 1) Instalaศ›i Java. Faceศ›i referire la aceasta ghida

Pasul 2) Descฤƒrcaศ›i un IDE pentru a รฎncepe: eclipsฤƒ

Pasul 3) Instalaศ›i Maven ศ™i configuraศ›i-vฤƒ eclipsa. Consultaศ›i aici.

Configurare Fiศ›i siguri

  1. Creaศ›i un proiect Maven รฎn IDE-ul dumneavoastrฤƒ. Noi folosim IntelliJ, dar veศ›i obศ›ine o structurฤƒ similarฤƒ pe orice IDE pe care รฎl utilizaศ›i.
  2. Deschideศ›i fiศ™ierul POM.xml.

Structura proiectului pentru configurarea REST Assured Maven

Structura proiectului pentru un spaศ›iu de lucru Maven REST Assured

For Rest Assured.io: Pentru Java versiunea < 9 utilizatori:

Adฤƒugaศ›i dependenศ›a de mai jos la POM.xml dvs.:

<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>

For Rest Assured.io: Pentru Java Utilizatori versiunea 9+:

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

Depanare:

รŽn cazul รฎn care observaศ›i erori ศ™i nu sunteศ›i sigur dacฤƒ dependenศ›ele au fost descฤƒrcate corect, urmaศ›i aceศ™ti paศ™i:

  1. Executaศ›i o compilare Maven pentru a importa toate dependenศ›ele. Veศ›i gฤƒsi ajutor pentru configurarea Maven pe Guru99.
  2. Dacฤƒ erorile persistฤƒ, executaศ›i o curฤƒศ›are Maven urmatฤƒ de o instalare Maven. Compilarea ar trebui sฤƒ se finalizeze fฤƒrฤƒ erori.
  3. Adฤƒugaศ›i importurile de mai jos รฎn Java clasa ศ™i confirmaศ›i cฤƒ nu existฤƒ erori de compilare.
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

Primul script simplu Rest Assured

Cu dependenศ›ele implementate, acum puteศ›i scrie primul script. Framework-ul urmeazฤƒ un stil de dezvoltare bazatฤƒ pe comportament (BDD) care se citeศ™te aproape ca limba englezฤƒ.

Sintaxฤƒ:

Sintaxa Rest Assured.io este cea mai uศ™or de citit parte a framework-ului, deoarece este foarte asemฤƒnฤƒtoare cu BDD ศ™i uศ™or de รฎnศ›eles.

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

Explicaลฃie:

Code Explicaศ›ie
Dat() Cuvรขntul cheie โ€žGivenโ€ vฤƒ permite sฤƒ setaศ›i un fundal. Aici, transmiteศ›i anteturile cererii, parametrii de interogare ศ™i cale, corpul cererii ศ™i cookie-urile. Acest lucru este opศ›ional dacฤƒ aceste elemente nu sunt necesare รฎn cerere.
Cรขnd() Cuvรขntul cheie โ€žcรขndโ€ marcheazฤƒ premisa scenariului tฤƒu. De exemplu, โ€žcรขndโ€ primeศ™ti/postezi/puni ceva, fฤƒ altceva.
Metodฤƒ() รŽnlocuiศ›i aceasta cu oricare dintre operaศ›iunile CRUD (get/post/put/delete).
Apoi() Condiศ›iile tale de afirmare ศ™i de potrivire se aflฤƒ aici.

Acum, cฤƒ ai configuraศ›ia ศ™i cรขteva cunoศ™tinศ›e despre sintaxฤƒ, hai sฤƒ creฤƒm primul nostru test simplu. Este รฎn regulฤƒ dacฤƒ structura ศ›i se pare nouฤƒ, pe mฤƒsurฤƒ ce codezi mai departe ศ™i interpretezi fiecare linie, te vei obiศ™nui cu ea.

Ce vei aduce?

Deschideศ›i browserul ศ™i apฤƒsaศ›i โ€“ https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1. Asiguraศ›i-vฤƒ cฤƒ vedeศ›i ceva ca mai jos.

Exemplu de rฤƒspuns API pentru scriptul Rest Assured

Exemplu de rฤƒspuns API capturat de REST Assured

รŽn cazul รฎn care primiศ›i o eroare รฎn browser atunci cรขnd รฎncercaศ›i sฤƒ obศ›ineศ›i un rฤƒspuns la cerere:

  1. Verificฤƒ dacฤƒ ai folosit HTTPS sau HTTP. Browserul tฤƒu ar putea avea setฤƒri care blocheazฤƒ site-urile web nesigure.
  2. Verificaศ›i dacฤƒ vreun proxy sau firewall blocheazฤƒ browserul dvs. sฤƒ deschidฤƒ site-ul web.

*notiศ›e โ€“ nu ai folosit niciun antet aici, niciun corp ศ™i niciun cookie. A fost un URLศ™i primiศ›i conศ›inut de la API รฎn loc sฤƒ postaศ›i sau sฤƒ actualizaศ›i conศ›inut existent. Aceasta รฎl face un apel GET. Reศ›ineศ›i acest lucru pentru a รฎnศ›elege mai bine primul nostru test.

Obiectivul testului dvs.:

Scopul scriptului este de a imprima aceeaศ™i ieศ™ire pe consola IDE ca ceea ce aศ›i primit รฎn browser prin Rest Assured.

Sฤƒ codificฤƒm acest lucru cu paศ™ii de mai jos:

Obศ›inerea rฤƒspunsului Body

Pas 1) Creaศ›i o clasฤƒ numitฤƒ โ€žmyFirstRestAssuredClassโ€.

Pas 2) Creaศ›i o metodฤƒ numitฤƒ โ€žgetResponseBodyโ€.

Pas 3) Similar structurii รฎnvฤƒศ›ate anterior pentru given, when ศ™i then, introduceศ›i codul de mai jos:

dat(). -> Nu sunt necesare antete, nici un parametru de interogare sau cale.

cรขnd(). -> Nicio condiศ›ie specificฤƒ configuratฤƒ.

obศ›ine('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> doar URL trebuie furnizat.

then(). -> Nu sunt necesare aserศ›iuni specifice.

log().all() -> Odatฤƒ ce toate rฤƒspunsurile sunt preluate, se รฎnregistreazฤƒ รฎn jurnal rฤƒspunsul, anteturile ศ™i, practic, tot ceea ce vฤƒ returneazฤƒ solicitarea.

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();

}

Acum observaศ›i cฤƒ URL โ€žusedโ€ este lung ศ™i mai puศ›in lizibil. Privind cu atenศ›ie, veศ›i observa cฤƒ sunt utilizaศ›i 3 parametri de interogare:

  1. Numฤƒr de รฎnregistrare client
  2. Parolฤƒ
  3. Cont_Nr

Rest Assured ne ajutฤƒ sฤƒ transmitem fiecare parte (interogare, cale, parametru antet) separat, fฤƒcรขnd codul mai lizibil ศ™i mai uศ™or de รฎntreศ›inut. De asemenea, putem parametriza datele dintr-un fiศ™ier extern, dupฤƒ cum este necesar.

Pentru a utiliza parametrul de interogare, ne รฎntoarcem la definiศ›ia noastrฤƒ a sintaxei ศ™i vedem cฤƒ toate sunt transmise ca parte a datei.

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();
}

**Reศ›ineศ›i cฤƒ am folosit โ€žcorpโ€ รฎn loc de โ€žtotโ€; acest lucru ne ajutฤƒ sฤƒ exprimฤƒmtracdoar corpul rฤƒspunsului.

ieศ™ire:

Obศ›inerea codului de stare a rฤƒspunsului

Urmฤƒtoarea metodฤƒ pe care o vom scrie รฎn script este sฤƒ obศ›inem codul de stare ศ™i sฤƒ plasฤƒm o aserศ›iune pentru a-l valida.

Pas 1) Creaศ›i o metodฤƒ numitฤƒ getResponseStatus().

Pas 2) Utilizaศ›i aceeaศ™i structurฤƒ de solicitare folositฤƒ mai sus. Copiaศ›i ศ™i lipiศ›i-l.

Pas 3) รŽn loc sฤƒ รฎl รฎnregistrezi, foloseศ™te โ€žgetStatusโ€Code' metodฤƒ รฎncorporatฤƒ a Rest Assured pentru a obศ›ine valoarea codului de stare.

Pas 4) Pentru a afirma cฤƒ codul dvs. de stare este 200, utilizaศ›i cuvintele cheie โ€“ assertThat().statusCode(aศ™teptatCode).

**Notฤƒ โ€“ URL este o variabilฤƒ utilizatฤƒ pentru simplitate. URL conศ›ine รฎntreaga cerere API 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);
}

ieศ™ire:

Nevoie de afaceri

Una dintre regulile de bazฤƒ ale automatizฤƒrii este cฤƒ trebuie sฤƒ punem puncte de control, astfel รฎncรขt testul sฤƒ continue numai dacฤƒ sunt รฎndeplinite toate condiศ›iile cerute. รŽn testarea API, cea mai simplฤƒ validare este verificarea dacฤƒ codul de stare al cererii este รฎn format 2XX.

Codul complet, pรขnฤƒ acum:

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);
}

}

*Notฤƒ:

  1. 200 este un rฤƒspuns reuศ™it pentru acest scenariu. Uneori, este posibil sฤƒ fie nevoie ca solicitarea sฤƒ eศ™ueze, caz รฎn care puteศ›i utiliza 4XX sau 5XX. รŽncercaศ›i sฤƒ modificaศ›i codul de stare furnizรขnd parametri nevalidi ศ™i verificaศ›i.
  2. Cรขnd afirmฤƒm o condiศ›ie, nu va exista nicio imprimare pe consolฤƒ decรขt dacฤƒ existฤƒ o eroare.

Script pentru a prelua diferite pฤƒrศ›i ale unui rฤƒspuns

Dincolo de corpul rฤƒspunsului ศ™i codul de stare, REST Assured expune ศ™i anteturile, timpul de rฤƒspuns ศ™i tipul de conศ›inut prin intermediul unor exemple รฎnlฤƒnศ›uibile.tracmetode tor. Cuvรขntul cheie โ€žextract' este esenศ›ial pentru preluarea acestor pฤƒrศ›i specifice.

Antet

Rest Assured este un limbaj foarte simplu, iar preluarea antetelor este la fel de simplฤƒ. Numele metodei este headers(). Ca ศ™i รฎnainte, vom crea o metodฤƒ independentฤƒ pentru a face acelaศ™i lucru.

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

Reศ›ineศ›i cฤƒ โ€žgiven().when()โ€ este omisฤƒ aici, iar linia de cod รฎncepe de la get(). Acest lucru se datoreazฤƒ faptului cฤƒ nu existฤƒ nicio precondiศ›ie sau verificare efectuatฤƒ รฎnainte de a accesa cererea ศ™i a primi un rฤƒspuns. รŽn astfel de cazuri, este opศ›ional sฤƒ o utilizaศ›i.

ieลŸire:

Nevoie de afaceri:

Destul de des, ar trebui sฤƒ utilizaศ›i token-ul de autorizare sau un cookie de sesiune pentru solicitarea ulterioarฤƒ, iar aceste detalii sunt returnate รฎn mare parte ca anteturi ale rฤƒspunsului.

Timp De Raspuns

Pentru a obศ›ine timpul necesar pentru a prelua rฤƒspunsul de la backend sau alte sisteme din aval, Rest Assured oferฤƒ o metodฤƒ numitฤƒ โ€žtimeInโ€ cu o unitate de timp adecvatฤƒ pentru a obศ›ine timpul necesar pentru a returna rฤƒspunsul.

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

ieศ™ire:

Nevoie de afaceri:

O caracteristicฤƒ foarte importantฤƒ a testฤƒrii API-urilor este timpul lor de rฤƒspuns, care mฤƒsoarฤƒ performanศ›a aplicaศ›iei. Timpul necesar apelului poate fi mai mare sau mai mic, รฎn funcศ›ie de viteza conexiunii la internet, performanศ›a API-ului la momentul respectiv, รฎncฤƒrcarea serverului ศ™i alศ›i factori care influenศ›eazฤƒ timpul.

Content-Type

Puteศ›i obศ›ine tipul de conศ›inut al rฤƒspunsului returnat folosind metoda โ€žcontentType()โ€.

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

producศ›ie

Nevoie de afaceri:

Uneori, obศ›inerea tipului de conศ›inut este esenศ›ialฤƒ pentru a asigura cฤƒ nu existฤƒ lacune de securitate pentru ameninศ›ฤƒri de tip cross-source ศ™i pentru a confirma cฤƒ respectivul conศ›inut este conform standardelor API.

Preluaศ›i elementul JSON individual

Pe baza rฤƒspunsului dat, ศ›i se cere sฤƒ calculezi suma totalฤƒ. Trebuie sฤƒ aduci fiecare sumฤƒ ศ™i sฤƒ o aduni.

Paศ™i:

Pas 1) Cรขmpul โ€žamountโ€ se aflฤƒ รฎntr-o matrice cu cheia โ€žstatementsโ€, care la rรขndul ei se aflฤƒ รฎn lista cu cheia โ€žresultโ€.

Pas 2) Rest Assured oferฤƒ un mecanism pentru a ajunge la valorile din API folosind โ€žcaleโ€.

Pas 3) Calea pentru a ajunge la sume este โ€žresult.statements.AMOUNTโ€. Gรขndiศ›i-vฤƒ la ea ca la XPath รฎn Selenium.

Pas 4) Preia toate sumele dintr-o colecศ›ie, apoi parcurge toate valorile pentru a calcula suma.

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);

}

Notฤƒ: Deoarece valoarea amount este un tip de date ศ™ir de caractere, o convertim รฎntr-un numฤƒr รฎntreg pentru รฎnsumare.

ieศ™ire:

Cele mai bune practici pentru automatizarea testelor REST Assured

Odatฤƒ ce รฎnศ›elegeศ›i elementele de bazฤƒ, aplicarea unor modele disciplinate menศ›ine suita fiabilฤƒ pe mฤƒsurฤƒ ce suprafaศ›a API creศ™te. Practicile de mai jos ajutฤƒ echipele sฤƒ evite testele instabile ศ™i cheltuielile suplimentare de รฎntreศ›inere.

  1. Centralizaศ›i baza URL: Stocaศ›i URI-ul de bazฤƒ ศ™i token-urile de autentificare รฎntr-o singurฤƒ clasฤƒ de configurare sau fiศ™ier de proprietฤƒศ›i. Acest lucru evitฤƒ duplicarea ศ™i simplificฤƒ schimbarea mediului.
  2. Utilizaศ›i specificaศ›iile de solicitare ศ™i rฤƒspuns: Construieศ™te obiecte RequestSpecBuilder ศ™i ResponseSpecBuilder reutilizabile. Acestea reduc suprasolicitarea atunci cรขnd mai multe teste au anteturi sau aserศ›iuni comune.
  3. Validarea schemei JSON: Combinaศ›i REST Assured cu modulul json-schema-validator pentru a confirma contracIntegritatea. Verificฤƒrile schemei detecteazฤƒ modificฤƒrile incompatibile รฎnainte ca acestea sฤƒ ajungฤƒ la consumatorii din aval.
  4. Externalizarea datelor de testare: Stocaศ›i sarcini utile รฎn fiศ™iere JSON sau utilizaศ›i furnizori de date de la TestNGDatele codificate fix devin rapid รฎnvechite.
  5. Executaศ›i teste independente: Fiecare test ar trebui sฤƒ configureze ศ™i sฤƒ elimine propriile date. Suitele dependente de ordine eศ™ueazฤƒ imprevizibil รฎn rulฤƒrile paralele ale CI.
  6. Capturaศ›i jurnalele selectiv: Foloseศ™te log().ifError() รฎn suitele stabile ศ™i log().all() รฎn timpul depanฤƒrii. Jurnalele detaliate รฎncetinesc conductele CI ศ™i ascund problemele reale.
  7. Conectaศ›i la CI/CD: Declanศ™aศ›i suitele REST Assured prin Maven Surefire sau Failsafe รฎn Jenkins, Acศ›iuni GitHub sau GitLab. Rulaศ›i verificฤƒri de tip โ€žsmoke checkโ€ pentru fiecare commit ศ™i regresie completฤƒ peste noapte.

Adoptarea timpurie a acestor obiceiuri transformฤƒ automatizarea API-urilor รฎntr-un avantaj pe termen lung, mai degrabฤƒ decรขt รฎntr-un blocaj fragil.

รŽntrebฤƒri frecvente

Da. Asistenศ›ii moderni de inteligenศ›ฤƒ artificialฤƒ, cum ar fi ChatGPT ศ™i GitHub Copilot, pot crea schele de testare REST Assured din specificaศ›iile API. Inginerii ar trebui sฤƒ revizuiascฤƒ รฎn continuare codul generat pentru aserศ›iuni, gestionarea datelor ศ™i cazuri limitฤƒ รฎnainte de fuzionare.

Instrumentele bazate pe inteligenศ›ฤƒ artificialฤƒ analizeazฤƒ tiparele de rฤƒspuns ศ™i sugereazฤƒ localizatori sau aserศ›iuni cu auto-reparare. Acestea semnaleazฤƒ abaterile de la schemฤƒ, recomandฤƒ refactorizฤƒri ศ™i actualizeazฤƒ automat datele de testare, ceea ce reduce รฎntreศ›inerea manualฤƒ atunci cรขnd API-urile evolueazฤƒ frecvent.

REST Assured este o Java bibliotecฤƒ construitฤƒ pentru automatizare bazatฤƒ pe cod รฎn conductele CI. Postman este un client GUI pentru explorare manualฤƒ ศ™i scriptare rapidฤƒ. Echipele combinฤƒ adesea ambele pe parcursul ciclului de viaศ›ฤƒ al testฤƒrii.

REST Assured este optimizat pentru REST ศ™i JSON. Poate trimite sarcini utile XML brute pentru SOAP, dar instrumente dedicate precum SoapUI oferฤƒ suport mai bogat pentru parsarea WSDL ศ™i aserศ›iunile specifice SOAP.

REST Assured se combinฤƒ natural cu TestNG ศ™i JUnit pentru aserศ›iuni, hook-uri pentru ciclul de viaศ›ฤƒ ศ™i raportare. Allure, Extent Reports ศ™i Maven Surefire adaugฤƒ vizualizare ศ™i integrare CI.

Rezumaศ›i aceastฤƒ postare cu: