rest api testing with cucumber using bdd approach
यह ट्यूटोरियल बीडीडी दृष्टिकोण का उपयोग करके ककड़ी के साथ रीस्ट एपीआई परीक्षण की व्याख्या करता है। यह सॉफ्टवेयर इंस्टॉलेशन, प्रोजेक्ट सेटअप, टेस्टस्क्रिप्ट एक्ज़ीक्यूशन और रिपोर्ट को कवर करता है।
इस लेख में, हम देखेंगे कि ककड़ी ढांचे के साथ बीडीडी शैली में आरईएसटी एपीआई परीक्षण के साथ शुरुआत कैसे करें।
विषय में गहराई से गोता लगाने से पहले, हमें इसमें शामिल महत्वपूर्ण अवधारणाओं को समझना चाहिए।
चलो शुरू करते हैं!!
आप क्या सीखेंगे:
- REST API में महत्वपूर्ण अवधारणाएँ
- ककड़ी कैसे काम करती है?
- विंडोज पर ककड़ी टेस्ट फ्रेमवर्क स्थापित करना
- निष्कर्ष
- अनुशंसित पाठ
REST API में महत्वपूर्ण अवधारणाएँ
आराम
यह एक सॉफ्टवेयर आर्किटेक्चरल स्टाइल है। का फुल फॉर्म है REST प्रतिनिधि राज्य अंतरण है । यह वेब सेवाओं को बनाने के लिए इस्तेमाल की जाने वाली बाधाओं का एक सेट परिभाषित करता है। REST स्थापत्य शैली के अनुरूप होने वाली वेब सेवाओं को RESTful वेब सेवाएँ कहा जाता है।
सी # साक्षात्कार प्रश्न और फ्रेशर्स के लिए उत्तर
अन्य एपीआई परीक्षण
REST API परीक्षण API का परीक्षण 4 प्रमुख विधियों अर्थात् POST, GET, PUT और DELETE का उपयोग करके कर रहा है।
अन्य टेम्पलेट
RestTemplate एक ओपन-सोर्स स्प्रिंग फ्रेमवर्क क्लास है जो HTTP तरीकों के लिए अतिभारित तरीके प्रदान करके HTTP आधारित आराम करने वाली वेब सेवाओं का परीक्षण करने का एक सुविधाजनक तरीका प्रदान करता है।
ध्यान दें : REST API परीक्षण अवधारणा के बारे में अधिक जानने के लिए, आप हमारे पुराने ट्यूटोरियल का संदर्भ ले सकते हैं the स्प्रिंग रिस्टेमप्लेट और टेस्टएनजी के साथ रीस्ट एपीआई परीक्षण 'जहां हमने JSON की अवधारणा के साथ मैन्युअल रूप से REST API परीक्षण करने के लिए कवर किया है।
BDD
BDD व्यवहार-प्रेरित विकास दृष्टिकोण है। यह सॉफ्टवेयर डेवलपमेंट तकनीकों में से एक है जो टेस्ट-ड्रिवेन डेवलपमेंट यानी टीडीडी स्टाइल से उभरा है।
BDD परीक्षण का सिद्धांत यह है कि परीक्षण मामलों को एक प्राकृतिक भाषा में लिखा जाता है जो गैर-प्रोग्रामर द्वारा भी आसानी से पढ़ा जा सकता है।
खीरा
ककड़ी एक उपकरण है जो व्यवहार-संचालित विकास का समर्थन करता है
ककड़ी कैसे काम करती है?
आइए देखते हैं ककड़ी कैसे काम करती है।
खीरे में फ़ीचर फाइल्स, स्टेप डेफिनिशन फाइल्स और रनर क्लास होते हैं।
फ़ीचर फ़ाइलें
फ़ीचर फ़ाइलें आपके व्यवसाय विश्लेषक या शायद आपके प्रायोजक द्वारा लिखी गई हैं। ये प्राकृतिक भाषा प्रारूप में लिखे गए हैं, जिनमें वर्णित विनिर्देश हैं और यह मान्य है कि विनिर्देशों के अनुसार अनुप्रयोग के कार्य।
इन विशिष्टताओं में कई परिदृश्य या उदाहरण दिए गए हैं। प्रत्येक परिदृश्य खीरे के माध्यम से काम करने के लिए कुछ चरणों की एक सूची है।
आइए एक परिदृश्य पर विचार करें जहां उपयोगकर्ता सिस्टम में लॉग इन करना चाहता है।
यह सत्यापित करने के लिए कि क्या यह विनिर्देशों के अनुसार काम कर रहा है, इस परिदृश्य का वर्णन करने की आवश्यकता है। यहां, विनिर्देशों के अनुसार वांछित परिणाम के साथ प्रदर्शन किए जाने वाले कदम हैं।
बस एक विचार प्राप्त करने के लिए, यह एक नमूना परिदृश्य कैसा दिखेगा:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
आप देख सकते हैं, प्रत्येक परिदृश्य खीरे के माध्यम से काम करने के लिए चरणों की एक सूची है। खीरे को परिदृश्यों को समझने के लिए, उन्हें कुछ बुनियादी वाक्यविन्यास नियमों का पालन करना चाहिए, जिन्हें कहा जाता है खीरा ।
स्टेप डेफिनिशन फाइल्स
चरण परिभाषा फ़ाइलें कार्यान्वयन कोड में फ़ीचर फ़ाइल में उल्लिखित प्रत्येक गेरकिन चरण को मैप करती हैं। यह ककड़ी को कदम से प्रदर्शन करने के लिए आवश्यक कार्रवाई को निष्पादित करने में सक्षम बनाता है।
ककड़ी फ्रेमवर्क जावा, .net, और रूबी जैसी स्टेप परिभाषाएँ लिखने के लिए कई प्रोग्रामिंग भाषाओं का समर्थन करता है।
ध्यान दें : लेख में ' स्प्रिंग रिस्टेमप्लेट और टेस्टएनजी के साथ रीस्ट एपीआई परीक्षण ', हमने स्प्रिंग टेम्पलेट के साथ TestNG टेस्ट प्रोजेक्ट विकसित किया है।
अब, हम उसी REST सेवा और RestTemplate के लिए टेस्ट फ्रेमवर्क विकसित करेंगे, लेकिन व्यवहार-चालित परीक्षण परीक्षण शैली के लिए ककड़ी का उपयोग करके।
चलो ककड़ी के साथ हमारे स्वचालन परीक्षण ढांचे की स्थापना के साथ शुरू करें!
विंडोज पर ककड़ी टेस्ट फ्रेमवर्क स्थापित करना
# 1) स्थापना
(मैं) हम कदम परिभाषा विकास के लिए जावा का उपयोग करने जा रहे हैं। तो, पहले JDK इंस्टॉलर को विंडोज़ से डाउनलोड करें आकाशवाणी और अपनी मशीन पर जावा स्थापित करें।
(ii) आईडीई (एकीकृत विकास पर्यावरण) : मैंने अपने स्वचालन टेस्ट सूट के विकास के लिए ग्रहण का उपयोग आईडीई के रूप में किया है। आप इससे डाउनलोड कर सकते हैं ग्रहण
(iii) ककड़ी के लिए ग्रहण प्लग-इन प्राप्त करें:
ग्रहण में इन चरणों का पालन करें:
- मदद का चयन करें -> मेनू विकल्प से नया सॉफ्टवेयर स्थापित करें।
- दर्ज 'ककड़ी ग्रहण' खोज पाठ बॉक्स में।
- पर क्लिक करें इंस्टॉल बटन।
ग्रहण में ककड़ी प्लग-इन स्थापना
- जब तक आप नहीं पहुँचते तब तक नेक्स्ट बटन पर क्लिक करते रहें लाइसेंस की समीक्षा करें स्क्रीन।
अंत में, लाइसेंस समझौते को स्वीकार करने के लिए चेकबॉक्स पर क्लिक करें और पर क्लिक करें समाप्त बटन। यह स्थापना को पूरा करेगा। अब, ग्रहण IDE को पुनरारंभ करें। प्रभाव में प्लग-इन इंस्टॉलेशन लेने के लिए यह आवश्यक है।
(iv) स्प्रिंग जार: जैसा कि हम RestTemplate वर्ग का उपयोग करने जा रहे हैं जो वसंत ढांचे के अंतर्गत आता है, आपको स्प्रिंग फ्रेमवर्क जार की आवश्यकता होती है। आप से वसंत जार डाउनलोड कर सकते हैं स्प्रिंग फ्रेमवर्क और इसे स्थानीय फ़ोल्डर में सहेजें। उदाहरण के लिए, सी: / प्रोजेक्टजार
(v) JSON-Simple जार: हमें JSON पार्सिंग करने की आवश्यकता है। इसलिए, हम हल्के JSON-simple API का उपयोग करेंगे। तो, JSON-simple-1.1.jar डाउनलोड करें और इसे सहेजें सी: / प्रोजेक्टजार
(vi) ककड़ी जार:
ककड़ी परियोजना को चलाने के लिए आपको निम्न ककड़ी के जार की आवश्यकता होगी:
- ककड़ी-कोर
- ककड़ी-जावा
- ककड़ी-जुनीत
- ककड़ी-जेवीएम-डिपो
- ककड़ी-रिपोर्टिंग
- खीरा
- JUnit
- मॉकिटो-ऑल
- कवरेज
- ककड़ी-HTML (html में रिपोर्ट के लिए)
आप pom.xml फ़ाइल का उपयोग करके इन फ़ाइलों को डाउनलोड कर सकते हैं। लेकिन, इन जार फ़ाइलों को डाउनलोड करने का सबसे सरल तरीका है सेंट्रल रिपोजिटरी और उन जार फ़ाइलों को स्थानीय फ़ोल्डर में सहेजें, उदाहरण के लिए, सी: / प्रोजेक्टजार
अब, इसके साथ, हमने सभी आवश्यक प्रतिष्ठानों को पूरा कर लिया है। तो, हम अपनी BDD टेस्ट ऑटोमेशन परियोजना बनाते हैं।
# 2) प्रोजेक्ट सेटअप
- फ़ाइल बनाएँ -> नया -> जावा प्रोजेक्ट -> इसे नाम दें - CRUD_Cucumber '
- अब, एक नया जावा पैकेज बनाएँ डेमो।
- प्रोजेक्ट का BuildPath कॉन्फ़िगर करें:
- जैसा कि आपने पहले भाग में देखा है, हमने ककड़ी प्लग-इन, डाउनलोड किए गए वसंत और JSON- सरल जार स्थापित किए हैं। इसलिए, हमारी परियोजना में उन उपभोग करने के लिए निर्माण पथ जोड़ने का समय है। उसके लिए, एक बनाएँ उदारीकरण फ़ोल्डर में CRUD_Cucumber 'फ़ोल्डर और अब C: / projectJar से सभी जार कॉपी करें lib / ककड़ी, lib / Spring फ़ोल्डर।
- ‘पर राइट क्लिक करें CRUD_Cucumber ' -> बिल्ड पथ -> बिल्ड पथ कॉन्फ़िगर करें।
- पर क्लिक करें पुस्तकालयों टैब।
- पर क्लिक करें जार जोड़ें बटन-> से सभी जार का चयन करें lib / ककड़ी फ़ोल्डर और lib / वसंत फ़ोल्डर। यह आपके प्रोजेक्ट बिल्ड पथ में सभी ककड़ी जार, स्प्रिंग जार और JSON-simple जार जोड़ देगा।
आपकी परियोजना संरचना ग्रहण पैकेज एक्सप्लोरर में निम्नानुसार प्रदर्शित की जाएगी।
टेस्ट प्रोजेक्ट का पैकेज स्ट्रक्चर
# 3) फ़ीचर फ़ाइल
अब, हम अपनी फीचर फाइल बनाते हैं DemoFeature.feature कर्मचारी सेवा पर प्रदर्शन CRUD संचालन के रूप में सुविधा है।
हमारे उदाहरण में, मैंने एक डमी http://dummy.restapiexample.com/api नमूना REST सेवा का उपयोग किया है।
यह फीचर फ़ाइल CRUD ऑपरेशन करने के लिए परिदृश्यों का वर्णन करता है यानी CRUD को कवर करने के लिए (Create-Read-Update-Delete)।
- आइए सबसे पहले फ़ीचर को परिभाषित करें, हमारे मामले में, यह CRUD के परीक्षण के तरीके हैं, जिन्हें निम्नानुसार वर्णित किया जा सकता है।
Feature: Test CRUD methods in Sample Employee REST API testing
- अब, इसमें अलग-अलग परिदृश्य हैं जैसे कि कर्मचारी रिकॉर्ड बनाएं, अपडेट करें, पढ़ें और हटाएं। तो POST परिदृश्य पर एक नजर:
Scenario: Add Employee record
- उस परीक्षण के लिए शर्त का वर्णन करें जो कर्मचारी सेवा का URL सेट कर रहा है।
Given I Set POST employee service api endpoint
- पोस्ट अनुरोध भेजने के वास्तविक परीक्षण चरण को निर्दिष्ट करें।
When I Set request HEADER And Send a POST HTTP request
- अब, प्रतिक्रिया निकाय के सत्यापन का वर्णन करें।
Then I receive valid Response
तो, हमारी सुविधा फ़ाइल में, परिदृश्य निम्नानुसार दिखेगा:
Scenario: Add Employee record Given I Set POST employee service api endpoint When I Set request HEADER And Send a POST HTTP request Then I receive valid Response
इसी तरह, आप शेष परिदृश्यों को नीचे दिखाए अनुसार लिख सकते हैं।
DemoFeature.feature
# 4) स्टेप्स डेफिनिशन इम्प्लीमेंटेशन
उपरोक्त परिदृश्यों में उपयोग किए जाने वाले फ़ीचर चरणों के लिए, आपको प्रोग्रामेटिक कार्यान्वयन लिखना होगा, इस मामले में, यह जावा है।
जावा में एक स्टेप डेफिनिशन एक विधि है जो एक अभिव्यक्ति है। यह अपने तरीके को एक या कई चरणों से जोड़ता है। इसलिए, जब ककड़ी फीचर फ़ाइल के परिदृश्य में वर्णित चरणों को निष्पादित करता है, तो यह पहली बार एक मिलान की तलाश करता है कदम की परिभाषा अंजाम देना।
उदाहरण के लिए, जब POST का उपयोग करके Add कर्मचारी के लिए चरण परिभाषा निम्नानुसार लिखी जा सकती है।
दिए गए कदम के लिए, कार्यान्वयन निम्नानुसार लिखा गया है:
@Given('^I Set POST employee service api endpoint$') public void setPostEndpoint(){ addURI = 'http://dummy.restapiexample.com/api/v1/create'; System.out.println('Add URL :'+addURI); }
इसी तरह, जब कदम के लिए, निम्नलिखित परिभाषा विधि है:
@When ('^Send a POST HTTP request$') public void sendPostRequest(){ doublename_id = Math.random(); emp_name = 'zozo_'+name_id;//Just to avoid Duplicate Name entry String jsonBody'{'name':''+emp_name+'','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntityentity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee restTemplate = newRestTemplate (); response = restTemplate.postForEntity(addURI, entity, String.class); }
अब, यहाँ सत्यापन चरण भाग है यानी तत्कालीन चरण कार्यान्वयन:
@Then ('^I receive valid Response$') Public void verifyPostResponse(){ responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.hasText(responseBody,employeeId); // Check if the status code is 201 Assert.isTrue(response.getStatusCode()==HttpStatus.OK); System.out.println('Employee is Added successfully employeeId:'+employeeId); }
ध्यान दें: यहाँ, हम अनुरोध भेजने के लिए RestTemplate विधि का उपयोग कर रहे हैं। यह method में प्रयुक्त विधि के समान है स्प्रिंग रिस्टेमप्लेट और टेस्टएनजी के साथ रीस्ट एपीआई परीक्षण ' । रेस्ट टेम्प्लेट विधियों के बारे में अधिक जानने के लिए, आप ट्यूटोरियल को देख सकते हैं।
इस प्रकार, आपकी चरण परिभाषा निम्नानुसार दिखाई देगी।
StepDefinition.java
कैसे एक makefile c ++ लिखने के लिए
आप शेष परिदृश्यों के लिए चरण परिभाषाओं को लागू कर सकते हैं अपडेट, पढ़ें, और कर्मचारी को उसी तरह हटा दें।
# 5) टेस्ट रनिंग
अब, हमने अपना परिदृश्य और चरण स्क्रिप्ट विकास कार्य पूरा कर लिया है, इसलिए अपने परीक्षण चलाएं। इसके लिए हमें एक JUnit धावक वर्ग लिखना होगा।
publicclassRunner { }
यहां, आपको वर्ग नाम के ऊपर निम्नलिखित एनोटेशन जोड़ने की आवश्यकता है:
@RunWith (Cucumber.class): ककड़ी के लिए एक परीक्षण धावक वर्ग के रूप में चलाने के लिए।
@CucumberOptions: यहां आप निष्पादन के दौरान देखने के लिए ककड़ी ढांचे के लिए सुविधाएँ फ़ाइल स्थान और चरण परिभाषा फ़ाइल स्थान निर्दिष्ट करते हैं।
features='' glue=''
लगाना: इसका उपयोग आउटपुट के रूप में उत्पन्न होने वाली रिपोर्ट के लिए विभिन्न स्वरूपण विकल्पों को निर्दिष्ट करने के लिए किया जाता है।
इसलिए, आपका धावक वर्ग इस तरह दिखेगा।
TestRunner.java
बस राइट-क्लिक करें TestRunner.java और विकल्प का चयन करें ‘ JUnit टेस्ट के रूप में चलाएं ' । यह निम्नानुसार परीक्षण निष्पादन परिणाम प्रदर्शित करेगा।
जूनट टैब आउटपुट
आपको कंसोल पर निम्न संदेश दिखाई देंगे।
कंसोल आउटपुट
# 6) रिपोर्ट
हमने कंसोल पर परिणाम देखा है। हालांकि, ककड़ी एक अधिक प्रस्तुत HTML प्रारूप में परीक्षण के परिणाम प्रदान करता है जिसे आपके हितधारकों के साथ साझा किया जा सकता है।
खुला हुआ लक्ष्य -> ककड़ी-रिपोर्ट ब्राउज़र में।
ध्यान दें : याद रखें जूनित धावक वर्ग CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
यहां प्लगइन वह विकल्प है जिसे हम फ़ोल्डर के साथ HTML प्रारूप रिपोर्ट के लिए निर्दिष्ट करते हैं।
target/cucumber-reports
अब लक्ष्य cucumber-रिपोर्ट index.html पृष्ठ खोलें। रिपोर्ट पृष्ठ एचटीएमएल पेज है जहां आप उन परिदृश्यों के साथ फ़ीचर नाम देख सकते हैं जिन्हें सफलतापूर्वक निष्पादित किया गया था।
तो, आपकी रिपोर्ट निम्नानुसार दिखाई देगी।
CucumberTest परिणाम Html प्रारूप में
निष्कर्ष
इस ट्यूटोरियल को समाप्त करने के लिए, हमें संक्षेप में बताएं कि हमने अब तक क्या सीखा है।
हमने बीडीडी ककड़ी रेस्ट एपीआई टेस्ट ऑटोमेशन फ्रेमवर्क स्थापित करने के लिए शुरुआत से सभी चरणों को देखा।
इस प्रक्रिया में हमने निम्नलिखित सीखा:
- परीक्षण स्वचालन के लिए, हमने जावा को प्रोग्रामिंग भाषा के रूप में चुना।
- हमने ककड़ी को बिहेवियर ड्रिवेन डेवलपमेंट टेस्ट तरीके से टेस्ट सूट बनाने के लिए टेस्ट फ्रेमवर्क के रूप में चुना।
- सर्वर पर वास्तविक HTTP अनुरोध भेजने के लिए, हमने स्प्रिंग फ्रेमवर्क RestTemplate वर्ग का उपभोग किया।
- इन एपीआई का उपभोग करने के लिए, हमने ककड़ी प्लग-इन की स्थापना की, पार्सर एपीआई के लिए ककड़ी निर्भरता जार फाइलें, स्प्रिंग जार और जोंसन-सरल जार डाउनलोड किया।
- हमने फ़ीचर फ़ाइल को प्ले इंग्लिश में परिदृश्यों का वर्णन करने के लिए बनाया है, स्टेप डेफ़िनिशन फ़ाइल को मैप करने के लिए स्टेप्स और JUnit रनर क्लास फ़ीचर फ़ाइल चलाने के लिए।
- अंत में, हमने टेस्ट रनर क्लास को अंजाम दिया और कंसोल पर परिणाम को और अधिक प्रस्तुत करने योग्य और पठनीय एचटीएमएल प्रारूप में देखा।
संक्षेप में, इस लेख में बताया गया है कि कैसे ककड़ी के साथ REST API टेस्ट ऑटोमेशन शुरू किया जाए। हमने सभी आवश्यक सॉफ़्टवेयर, प्रोजेक्ट सेटअप, टेस्टस्क्रिप्ट डेवलपमेंट से लेकर परीक्षण निष्पादन और उत्पन्न रिपोर्ट देखने तक की स्थापना से अपना परीक्षण स्वचालन ढांचा स्थापित किया।
यह किसी भी स्वचालन QA के लिए पर्याप्त है ताकि परीक्षण स्वचालन ढांचे के साथ शुरू किया जा सके। लेकिन अगर कोई विस्तार से समझना चाहता है कि ककड़ी आंतरिक रूप से कैसे काम करती है, घेरकिन भाषा कैसे काम करती है, तो यह पता लगाया जा सकता है खीरा।
मुझे आशा है कि आप ककड़ी के साथ बीडीडी स्टाइल में रीस्ट एपीआई के परीक्षण के साथ आरंभ करने के लिए तैयार हैं !!
अनुशंसित पाठ
- 2021 में 10 सर्वश्रेष्ठ एपीआई परीक्षण उपकरण (SOAP और REST API परीक्षण उपकरण)
- सर्वश्रेष्ठ सॉफ्टवेयर परीक्षण उपकरण 2021 (क्यूए टेस्ट स्वचालन उपकरण)
- स्प्रिंग रेस्टप्लेट और टेस्टएनजी के साथ रीस्ट एपीआई टेस्टिंग
- परीक्षण प्राइमर eBook डाउनलोड
- शीर्ष 20 सबसे महत्वपूर्ण एपीआई परीक्षण साक्षात्कार प्रश्न और उत्तर
- सास परीक्षण: चुनौतियां, उपकरण और परीक्षण दृष्टिकोण
- Katalon स्टूडियो के साथ एपीआई परीक्षण सरल बनाना
- ककड़ी उपकरण और सेलेनियम का उपयोग करके स्वचालन परीक्षण - सेलेनियम ट्यूटोरियल # 30