REST Assured API टेस्टिंग ट्यूटोरियल

⚡ स्मार्ट सारांश

रेस्ट एश्योर्ड खुद को एक स्थापित कंपनी के रूप में स्थापित करता है। Javaयह एक ओपन-सोर्स लाइब्रेरी है जो REST API ऑटोमेशन टेस्टिंग को आसान बनाती है। यह फ्रेमवर्क क्वालिटी इंजीनियरों को सरल BDD-शैली सिंटैक्स और सहज Maven इंटीग्रेशन के साथ जटिल JSON रिस्पॉन्स, हेडर, स्टेटस कोड और रिस्पॉन्स टाइम को मान्य करने में सक्षम बनाता है।

  • ⚙️ Foundation सेटअप: कॉन्फ़िगर Java, Eclipseअपना पहला REST Assured टेस्ट स्क्रिप्ट लिखने से पहले Maven की निर्भरताओं की जांच कर लें।
  • 📐 वाक्य संरचना में निपुणता: API अनुरोधों को पठनीय और व्यावसायिक रूप से अनुकूल प्रारूप में व्यक्त करने के लिए Given-When-Then पैटर्न का उपयोग करें।
  • 🔍 दानेदार सत्यापन: Extracफ्लुएंट चेन के माध्यम से प्रतिक्रिया निकाय, स्थिति कोड, हेडर, सामग्री प्रकार और समय की जानकारी प्राप्त करना।
  • 🧩 पथ नेविगेशन: XPath के समान डॉट नोटेशन का उपयोग करके नेस्टेड JSON मानों को ट्रैवर्स करें। Selenium सटीक कथनों के लिए।
  • सीआई/सीडी एकीकरण: REST Assured को इसके साथ मिलाएं TestNG or JUnit API जांचों को सीधे स्वचालित बिल्ड पाइपलाइनों में एम्बेड करने के लिए।

REST एश्योर्ड ट्यूटोरियल

रेस्ट एश्योर्ड क्या है?

निश्चित होना आपको जावा लाइब्रेरी का उपयोग करके REST API का परीक्षण करने में सक्षम बनाता है और Maven के साथ अच्छी तरह से एकीकृत करता है। इसमें बहुत कुशल मिलान तकनीकें हैं, इसलिए आपके अपेक्षित परिणामों को पुष्ट करना भी बहुत आसान है। रेस्ट एश्योर्ड में अनुरोध और प्रतिक्रिया के लगभग हर हिस्से से डेटा प्राप्त करने के तरीके हैं, चाहे JSON संरचनाएँ कितनी भी जटिल क्यों न हों।

परीक्षण समुदाय के लिए, API स्वचालन परीक्षण अभी भी नया और विशिष्ट है। JSON की जटिलताएँ API परीक्षण को अनदेखा रखती हैं। लेकिन यह परीक्षण प्रक्रिया में इसे कम महत्वपूर्ण नहीं बनाता है। Rest Assured.io फ्रेमवर्क ने कोर जावा बेसिक्स का उपयोग करके इसे बहुत सरल बना दिया है, जिससे इसे सीखना बहुत ही वांछनीय चीज़ बन गया है।

निश्चिंतता की आवश्यकता क्यों है?

कल्पना कीजिए कि आप Google मैप्स खोलते हैं और उस जगह को खोजते हैं जहाँ आप जाना चाहते हैं। आपको तुरंत आस-पास के रेस्तरां, प्रमुख ट्रैवल कंपनियों के आने-जाने के विकल्प और कई अन्य विकल्प दिखाई देते हैं। हम सभी जानते हैं कि ये Google के उत्पाद नहीं हैं, तो Google इन्हें कैसे प्रदर्शित करता है? यह इन कंपनियों के उपलब्ध API का उपयोग करता है। अब, यदि आपको इस तरह के सेटअप का परीक्षण करने के लिए कहा जाता है, चाहे UI अभी बना हो या विकास के चरण में हो, तो API का परीक्षण करना अत्यंत महत्वपूर्ण हो जाता है। विभिन्न डेटा संयोजनों के साथ बार-बार इनका परीक्षण करना स्वचालन के लिए एक उपयुक्त उदाहरण है।

पहले, टीमें गतिशील भाषाओं का उपयोग करती थीं जैसे कि Groovy और इसके लिए रूबी का इस्तेमाल किया गया, जो चुनौतीपूर्ण था। इसलिए फंक्शनल टेस्टर्स द्वारा एपीआई टेस्टिंग का व्यापक रूप से उपयोग नहीं किया गया।

हालांकि, रेस्ट एश्योर्ड के साथ, एपीआई का ऑटोमेशन परीक्षण और उपयोगकर्ता के अनुकूल अनुकूलन के साथ सरल HTTPS अनुरोध भेजना आसान हो जाता है, बशर्ते किसी के पास बुनियादी जानकारी हो। Javaयह API टेस्टिंग और इंटीग्रेशन टेस्टिंग को समझने में मददगार है। रेस्ट एश्योर्ड बैकएंड पर मज़बूत भरोसा देता है, जबकि फ्रंट-एंड टेस्टर UI और क्लाइंट-साइड ऑपरेशंस पर ध्यान केंद्रित कर सकते हैं। रेस्ट एश्योर्ड ओपन सोर्स है, और इसमें लगातार नए मेथड और लाइब्रेरी जोड़े जाने से यह API ऑटोमेशन के लिए एक बेहतरीन विकल्प बन गया है।

निश्चिंत रहें बनाम Postman: मुख्य अंतर

निश्चिंत रहें और Postman REST API को मान्य करने के लिए, प्रत्येक टूल परीक्षण चक्र के विभिन्न चरणों में काम आता है। सही टूल का चयन आपकी टीम के कौशल, परियोजना के दायरे और एकीकरण की आवश्यकताओं पर निर्भर करता है।

पहलू निश्चिंत रहें Postman
प्रकार Java कोड आधारित स्वचालन के लिए लाइब्रेरी स्क्रिप्टिंग समर्थन के साथ GUI-आधारित API क्लाइंट
सबसे अच्छा उपयोग मामला निरंतर एकीकरण पाइपलाइन और रिग्रेशन सूट मैन्युअल अन्वेषण और त्वरित एपीआई जांच
कौशल की आवश्यकता मूल Java आवश्यक ज्ञान न्यूनतम कोडिंग; उपयोग करता है Javaस्क्रिप्ट के अंश
रिपोर्टिंग के साथ एकीकृत करता है TestNG, JUnitऔर एल्योर न्यूमैन CLI के माध्यम से अंतर्निहित रन सारांश

कई टीमें उपयोग करती हैं Postman प्रारंभिक प्रोटोटाइप के लिएping और API के विफल होने पर स्वचालित प्रतिगमन के लिए REST Assured पर स्विच करें।tract स्थिर हो जाता है।

Rest Assured.io को कैसे सेटअप करें? Eclipse

REST Assured को स्थापित करने में तीन मुख्य निर्भरताएँ शामिल हैं: Javaएक IDE और Maven का उपयोग करें। बाद में बिल्ड त्रुटियों से बचने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1) स्थापित करें Java. इसका संदर्भ लें गाइड

चरण 2) आरंभ करने के लिए IDE डाउनलोड करें: ग्रहण

चरण 3) मावेन स्थापित करें और अपना एक्लिप्स सेट अप करें। यहाँ उत्पन्न करें.

सेटअप निश्चिंत रहें

  1. अपने ऑपरेटिंग सिस्टम (IDE) में एक Maven प्रोजेक्ट बनाएं। हम IntelliJ का उपयोग कर रहे हैं, लेकिन आप जिस भी IDE का उपयोग कर रहे हों, उसमें आपको इसी तरह की संरचना मिलेगी।
  2. अपनी POM.xml फ़ाइल खोलें।

REST Assured Maven सेटअप के लिए प्रोजेक्ट संरचना

REST Assured Maven वर्कस्पेस के लिए प्रोजेक्ट संरचना

Rest Assured.io के लिए: Java संस्करण < 9 उपयोगकर्ता:

अपने POM.xml में नीचे दी गई निर्भरता जोड़ें:

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

Rest Assured.io के लिए: Java संस्करण 9 और उससे अधिक के उपयोगकर्ता:

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

समस्या निवारण:

यदि आपको कोई त्रुटि दिखाई देती है और आप सुनिश्चित नहीं हैं कि आवश्यक फ़ाइलें सही ढंग से डाउनलोड हुई हैं या नहीं, तो इन चरणों का पालन करें:

  1. सभी डिपेंडेंसी को इम्पोर्ट करने के लिए मेवन बिल्ड चलाएँ। मेवन सेटअप के बारे में सहायता आपको यहाँ मिलेगी। Guru99.
  2. यदि त्रुटियाँ बनी रहती हैं, तो Maven clean चलाएँ और फिर Maven install चलाएँ। बिल्ड बिना किसी त्रुटि के पूरा हो जाना चाहिए।
  3. नीचे दिए गए इंपोर्ट्स को अपने कोड में जोड़ें। Java क्लास की जांच करें और पुष्टि करें कि कोई कंपाइल त्रुटि नहीं है।
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

पहली सरल रेस्ट एश्योर्ड स्क्रिप्ट

सभी आवश्यक शर्तें पूरी हो जाने के बाद, अब आप अपनी पहली स्क्रिप्ट लिख सकते हैं। यह फ्रेमवर्क बिहेवियर-ड्रिवन डेवलपमेंट (बीडीडी) शैली का अनुसरण करता है, जो लगभग अंग्रेजी की तरह ही समझने योग्य है।

सिंटेक्स:

Rest Assured.io का सिंटैक्स फ्रेमवर्क का सबसे पठनीय हिस्सा है, क्योंकि यह बहुत हद तक BDD जैसा और समझने योग्य है।

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

स्पष्टीकरण:

Code व्याख्या
दिया गया() 'Given' कीवर्ड आपको बैकग्राउंड सेट करने की सुविधा देता है। यहाँ, आप रिक्वेस्ट हेडर, क्वेरी और पाथ पैरामीटर, बॉडी और कुकीज़ पास करते हैं। यदि रिक्वेस्ट में इन आइटमों की आवश्यकता नहीं है, तो यह विकल्प वैकल्पिक है।
कब() 'when' कीवर्ड आपके परिदृश्य के आधार को दर्शाता है। उदाहरण के लिए, 'when' जब आप कुछ प्राप्त/पोस्ट/डालते हैं, तो कुछ और करें।
तरीका() इसे किसी भी CRUD ऑपरेशन (get/post/put/delete) से बदलें।
तब() आपकी assert और matcher शर्तें यहाँ आएंगी।

अब जब आपको सेटअप और सिंटेक्स की कुछ बुनियादी जानकारी मिल गई है, तो चलिए अपना पहला सरल टेस्ट बनाते हैं। अगर आपको यह संरचना नई लगे तो कोई बात नहीं, जैसे-जैसे आप आगे कोड लिखेंगे और हर पंक्ति को समझेंगे, आपको इसकी आदत हो जाएगी।

आप क्या लाएंगे?

अपना ब्राउज़र खोलें और दबाएं – https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1सुनिश्चित करें कि आपको नीचे जैसा कुछ दिखाई दे।

रेस्ट एश्योर्ड स्क्रिप्ट एपीआई प्रतिक्रिया का नमूना

REST Assured द्वारा कैप्चर किया गया नमूना API रिस्पॉन्स

यदि अनुरोध का उत्तर प्राप्त करने का प्रयास करते समय ब्राउज़र पर कोई त्रुटि आती है:

  1. जाँच करें कि आपने HTTPS या HTTP का उपयोग किया है या नहीं। आपके ब्राउज़र में असुरक्षित वेबसाइटों को ब्लॉक करने वाली सेटिंग्स हो सकती हैं।
  2. जांच करें कि क्या कोई प्रॉक्सी या फ़ायरवॉल आपके ब्राउज़र को वेबसाइट खोलने से रोक रहा है।

*नोट आपने यहाँ किसी हेडर, बॉडी या कुकी का उपयोग नहीं किया है। यह एक URL था, और आप किसी मौजूदा सामग्री को पोस्ट या अपडेट करने के बजाय API से सामग्री प्राप्त कर रहे हैं। इसलिए यह एक GET कॉल है। हमारे पहले परीक्षण को बेहतर ढंग से समझने के लिए इसे याद रखें।

आपके परीक्षण का उद्देश्य:

स्क्रिप्ट का लक्ष्य आपके IDE कंसोल पर वही आउटपुट प्रिंट करना है जो आपको रेस्ट एश्योर्ड के माध्यम से ब्राउज़र पर प्राप्त हुआ था।

आइये इसे नीचे दिए गए चरणों के साथ कोड करें:

प्रतिक्रिया प्राप्त करना मुख्य भाग

चरण 1) “myFirstRestAssuredClass” नाम की एक क्लास बनाएं।

चरण 2) “getResponseBody” नामक एक विधि बनाएं।

चरण 3) पहले सीखी गई संरचना 'given', 'when' और 'then' के समान, नीचे दिए गए कोड को टाइप करें:

Given(). -> कोई हेडर आवश्यक नहीं, कोई क्वेरी या पथ पैरामीटर नहीं।

जब() -> कोई विशिष्ट शर्त निर्धारित नहीं है।

पाना('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> केवल URL ही प्रदान करना होगा।

then(). -> किसी विशिष्ट अभिकथन की आवश्यकता नहीं है।

log().all() -> एक बार जब सभी प्रतिक्रिया प्राप्त हो जाती है, तो प्रतिक्रिया, हेडर और अनिवार्य रूप से वह सब कुछ लॉग करें जो अनुरोध आपको लौटाता है।

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

}

अब ध्यान दीजिए कि इस्तेमाल किया गया URL लंबा और कम पठनीय है। गौर से देखने पर आपको पता चलेगा कि इसमें 3 क्वेरी पैरामीटर इस्तेमाल किए जा रहे हैं:

  1. ग्राहक आईडी
  2. पासवर्ड
  3. खाता नंबर

Rest Assured हमें प्रत्येक भाग (क्वेरी, पाथ, हेडर पैरामीटर) को अलग-अलग पास करने की सुविधा देता है, जिससे कोड अधिक पठनीय और रखरखाव में आसान हो जाता है। साथ ही, आवश्यकतानुसार हम बाहरी फ़ाइल से डेटा को पैरामीटराइज़ कर सकते हैं।

क्वेरी पैराम का उपयोग करने के लिए, हम सिंटैक्स की अपनी परिभाषा पर वापस जाते हैं और देखते हैं कि उनमें से सभी को दिए गए भाग के रूप में पारित किया गया है।

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

ध्यान दें कि हमने "सभी" के स्थान पर "शरीर" शब्द का प्रयोग किया है; इससे हमें समझने में आसानी होती है।tracकेवल प्रतिक्रिया का मुख्य भाग।

आउटपुट:

प्रतिक्रिया स्थिति कोड प्राप्त करना

अगला तरीका जिसे हम स्क्रिप्ट करेंगे, वह है स्टेटस कोड प्राप्त करना और उसे मान्य करने के लिए एक अभिकथन लगाना।

चरण 1) getResponseStatus() नामक एक विधि बनाएं।

चरण 2) ऊपर बताई गई अनुरोध संरचना का ही उपयोग करें। इसे कॉपी करके पेस्ट करें।

चरण 3) इसे लॉग करने के बजाय, 'getStatus' का उपयोग करें।Code'रेस्ट एश्योर्ड का अंतर्निहित तरीका जो स्टेटस कोड का मान प्राप्त करता है।'

चरण 4) यह पुष्टि करने के लिए कि आपका स्टेटस कोड 200 है, assertThat().status कीवर्ड का उपयोग करें।Code(अपेक्षितCode).

**ध्यान दें – सरलता के लिए URL एक वेरिएबल के रूप में उपयोग किया गया है। URL में संपूर्ण 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);
}

आउटपुट:

व्यावसायिक आवश्यकता

स्वचालन के बुनियादी नियमों में से एक यह है कि हमें चेकपॉइंट लगाने होंगे ताकि परीक्षण तभी आगे बढ़े जब सभी आवश्यक शर्तें पूरी हों। API परीक्षण में, सबसे बुनियादी सत्यापन यह जांचना है कि अनुरोध का स्टेटस कोड 2XX प्रारूप में है या नहीं।

अब तक का पूरा कोड:

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

}

* ध्यान दें:

  1. इस स्थिति में 200 एक सफल प्रतिक्रिया है। कभी-कभी, आपको अनुरोध को विफल करने की आवश्यकता हो सकती है, ऐसी स्थिति में आप 4XX या 5XX का उपयोग कर सकते हैं। अमान्य पैरामीटर देकर स्थिति कोड बदलने का प्रयास करें और जाँच करें।
  2. जब हम कोई शर्त लागू करते हैं, तो कंसोल पर तब तक कोई मुद्रण नहीं होगा जब तक कि कोई त्रुटि न हो।

प्रतिक्रिया के विभिन्न भागों को लाने के लिए स्क्रिप्ट

रिस्पॉन्स बॉडी और स्टेटस कोड के अलावा, REST Assured चेनेबल एक्सप्रेशन के माध्यम से हेडर, रिस्पॉन्स टाइम और कंटेंट टाइप भी प्रदर्शित करता है।tracटोर विधियाँ। कीवर्ड 'ex'tracइन विशिष्ट भागों को प्राप्त करने के लिए 't' आवश्यक है।

हैडर

रेस्ट एश्योर्ड एक बहुत ही सीधी भाषा है, और हेडर प्राप्त करना भी उतना ही सरल है। विधि का नाम है हेडर()। पहले की तरह, हम ऐसा करने के लिए एक स्टैंडअलोन विधि बनाएंगे।

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

कृपया ध्यान दें कि यहाँ 'given().when()' को छोड़ दिया गया है, और कोड की पंक्ति get() से शुरू होती है। ऐसा इसलिए है क्योंकि अनुरोध भेजने और प्रतिक्रिया प्राप्त करने से पहले कोई पूर्व शर्त या सत्यापन नहीं किया जाता है। ऐसे मामलों में, इनका उपयोग करना वैकल्पिक है।

आउटपुट:

व्यवसाय की आवश्यकता:

अक्सर, आपको बाद के अनुरोध के लिए प्राधिकरण टोकन या सत्र कुकी का उपयोग करने की आवश्यकता होगी, और ये विवरण ज्यादातर प्रतिक्रिया के हेडर के रूप में वापस किए जाते हैं।

अनुक्रिया काल

बैकएंड या अन्य डाउनस्ट्रीम प्रणालियों से प्रतिक्रिया प्राप्त करने के लिए आवश्यक समय प्राप्त करने के लिए, रेस्ट एश्योर्ड प्रतिक्रिया वापस करने में लगने वाले समय को प्राप्त करने के लिए उपयुक्त टाइम यूनिट के साथ 'टाइमइन' नामक विधि प्रदान करता है।

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

आउटपुट:

व्यवसाय की आवश्यकता:

APIs के परीक्षण का एक अत्यंत महत्वपूर्ण पहलू उनका रिस्पॉन्स टाइम है, जो एप्लिकेशन के प्रदर्शन को मापता है। आपके कॉल में लगने वाला समय आपकी इंटरनेट स्पीड, उस समय API के प्रदर्शन, सर्वर लोड और समय को प्रभावित करने वाले अन्य कारकों के आधार पर कम या ज्यादा हो सकता है।

सामग्री प्रकार

आप “contentType()” विधि का उपयोग करके लौटाए गए रिस्पॉन्स का कंटेंट टाइप प्राप्त कर सकते हैं।

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

उत्पादन

व्यवसाय की आवश्यकता:

कई बार, क्रॉस-ओरिजिन खतरों के लिए सुरक्षा खामियों को दूर करने और यह पुष्टि करने के लिए कि भेजी गई सामग्री एपीआई के मानकों के अनुसार है, सामग्री प्रकार प्राप्त करना आवश्यक होता है।

व्यक्तिगत JSON तत्व प्राप्त करें

दिए गए उत्तर के आधार पर, आपको कुल राशि की गणना करनी है। आपको प्रत्येक राशि को निकालकर उसका योग करना होगा।

चरण:

चरण 1) राशि वाला फ़ील्ड "statements" कुंजी वाले एक ऐरे के भीतर है, जो बदले में "result" कुंजी वाली सूची में है।

चरण 2) Rest Assured "path" का उपयोग करके API में मानों तक पहुंचने का एक तंत्र प्रदान करता है।

चरण 3) राशि तक पहुँचने का मार्ग “result.statements.AMOUNT” है। इसे XPath की तरह समझें। Selenium.

चरण 4) किसी संग्रह में मौजूद सभी राशियों को प्राप्त करें, फिर सभी मानों के माध्यम से लूप चलाकर उनका योगफल ज्ञात करें।

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

}

नोट: चूंकि राशि का मान स्ट्रिंग डेटा प्रकार का है, इसलिए हम इसे योग करने के लिए पूर्णांक में परिवर्तित करते हैं।

आउटपुट:

REST Assured टेस्ट ऑटोमेशन के लिए सर्वोत्तम अभ्यास

एक बार जब आप बुनियादी बातें समझ लेते हैं, तो अनुशासित पैटर्न लागू करने से एपीआई का दायरा बढ़ने पर भी आपका सूट विश्वसनीय बना रहता है। नीचे दिए गए तरीके टीमों को अस्थिर परीक्षणों और रखरखाव संबंधी अतिरिक्त लागत से बचने में मदद करते हैं।

  1. बेस यूआरएल को केंद्रीकृत करें: बेस यूआरआई और प्रमाणीकरण टोकन को एक ही कॉन्फ़िगरेशन क्लास या प्रॉपर्टीज़ फ़ाइल में स्टोर करें। इससे दोहराव से बचा जा सकता है और वातावरण बदलना आसान हो जाता है।
  2. अनुरोध और प्रतिक्रिया विनिर्देशों का उपयोग करें: पुनः प्रयोज्य RequestSpecBuilder और ResponseSpecBuilder ऑब्जेक्ट बनाएं। ये उन स्थितियों में अनावश्यक कोड को कम करते हैं जब कई परीक्षण समान हेडर या अभिकथन साझा करते हैं।
  3. JSON स्कीमा को मान्य करें: REST Assured को json-schema-validator मॉड्यूल के साथ मिलाकर पुष्टि करेंtracस्कीमा अखंडता। स्कीमा जांच से ऐसे बदलावों का पता चल जाता है जो बाद के उपभोक्ताओं तक पहुंचने से पहले ही गंभीर हो जाते हैं।
  4. परीक्षण डेटा को बाह्य रूप से प्रकट करें: पेलोड को JSON फ़ाइलों में स्टोर करें या डेटा प्रदाताओं का उपयोग करें TestNGहार्ड-कोडेड डेटा जल्दी ही पुराना हो जाता है।
  5. स्वतंत्र परीक्षण चलाएँ: प्रत्येक परीक्षण को अपना डेटा स्वयं स्थापित और नष्ट करना चाहिए। क्रम-निर्भर परीक्षण सूट समानांतर CI रन में अप्रत्याशित रूप से विफल हो जाते हैं।
  6. चुनिंदा लॉग कैप्चर करें: स्टेबल सूट में log().ifError() का उपयोग करें और डीबगिंग के दौरान log().all() का उपयोग करें। विस्तृत लॉग CI पाइपलाइन को धीमा कर देते हैं और वास्तविक समस्याओं को छिपा देते हैं।
  7. CI/CD से जुड़ें: Maven Surefire या Failsafe के माध्यम से REST Assured सूट को ट्रिगर करें JenkinsGitHub Actions या GitLab का उपयोग करें। प्रत्येक कमिट पर स्मोक चेक चलाएं और रात भर में पूर्ण रिग्रेशन परीक्षण करें।

इन आदतों को शुरुआत में ही अपनाने से एपीआई ऑटोमेशन एक नाजुक अड़चन के बजाय एक दीर्घकालिक संपत्ति बन जाता है।

अक्सर पूछे जाने वाले प्रश्न

जी हां। चैटजीपीटी और गिटहब कोपायलट जैसे आधुनिक एआई सहायक एपीआई विनिर्देशों से रेस्ट एश्योर्ड टेस्ट स्केफोल्ड तैयार कर सकते हैं। फिर भी, इंजीनियरों को मर्ज करने से पहले जेनरेट किए गए कोड की समीक्षा करके उसमें मौजूद त्रुटियों, डेटा हैंडलिंग और एज केस की जांच कर लेनी चाहिए।

एआई-आधारित उपकरण प्रतिक्रिया पैटर्न का विश्लेषण करते हैं और स्वतः ठीक होने वाले लोकेटर या अभिकथन सुझाते हैं। ये स्कीमा विचलन को चिह्नित करते हैं, रिफैक्टरिंग की अनुशंसा करते हैं और परीक्षण डेटा को स्वचालित रूप से अपडेट करते हैं, जिससे एपीआई के बार-बार विकसित होने पर मैन्युअल रखरखाव कम हो जाता है।

रेस्ट एश्योर्ड एक है Java सीआई पाइपलाइनों में कोड-आधारित स्वचालन के लिए निर्मित लाइब्रेरी। Postman यह मैन्युअल अन्वेषण और त्वरित स्क्रिप्टिंग के लिए एक GUI क्लाइंट है। टीमें अक्सर परीक्षण जीवनचक्र के दौरान इन दोनों का संयोजन करती हैं।

REST Assured REST और JSON के लिए अनुकूलित है। यह SOAP के लिए रॉ XML पेलोड भेज सकता है, लेकिन इसके लिए समर्पित टूल जैसे SoapUI WSDL पार्सिंग और SOAP-विशिष्ट अभिकथनों के लिए बेहतर समर्थन प्रदान करें।

REST Assured स्वाभाविक रूप से इसके साथ मेल खाता है TestNG और JUnit अभिकथन, लाइफसाइकिल हुक और रिपोर्टिंग के लिए। Allure, Extent Reports और Maven Surefire इसके ऊपर विज़ुअलाइज़ेशन और CI एकीकरण जोड़ते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: