2012-08-27 17 views
69

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

+1

आप [vREST] (http://vrest.io/) को आज़मा सकते हैं। इसमें दोनों इकाई परीक्षण और मोजे हैं। – Jangid

+1

जेएमटर आरईएसटी एपीआई परीक्षण के लिए सबसे अच्छा उपकरण है - जेएमटर का उपयोग कर एक आरईएसटी एपीआई का परीक्षण करने के लिए कुछ विस्तृत चरणों की तलाश करने वाले लोगों के लिए यह टिप्पणी जोड़ना। http://www.testautomationguru.com/how-to-test-rest-api-using-jmeter/ – vins

+0

कुछ भी नहीं है FRISBY - आरईएसटी एपीआई परीक्षण के लिए बस सही और सबसे शक्तिशाली उपकरण –

उत्तर

2

मैंने कार्यात्मक और स्वचालित परीक्षण के लिए SOAP UI का उपयोग किया। एसओएपी यूआई आपको एक बटन के क्लिक पर परीक्षण चलाने की अनुमति देता है। टेड यंग द्वारा निर्मित spring controllers testing पृष्ठ भी है। मैंने इस आलेख का उपयोग हमारे आवेदन में रेस्ट यूनिट परीक्षण बनाने के लिए किया था।

32

मेरे काम पर हमने हाल ही में जावा में लिखे गए कुछ परीक्षण सूटों को एक साथ रखे कुछ परीक्षण किए गए एपीआई का परीक्षण करने के लिए रखा है। हमारी सेवाएं उन अन्य विश्वसनीय एपीआई का आह्वान कर सकती हैं जिन पर वे निर्भर हैं। हम इसे दो सूट में विभाजित करते हैं।


  • सुइट 1 - किसी भी सहकर्मी सेवाओं एपीआई restito का उपयोग कर पर निर्भर करता है अलगाव
    • मॉक में प्रत्येक सेवा का परीक्षण। अन्य विकल्पों में rest-driver, wiremock और betamax शामिल हैं।
    • सेवा हम परीक्षण कर रहे हैं टेस्ट और mocks सभी एक ही JVM
    • में चलाने के घाट
    • में

मैं निश्चित रूप से सिफारिश करेंगे यह कर सेवा की शुरूआत। यह हमारे लिए वास्तव में अच्छा काम किया है। मुख्य फायदे हैं:

  • पीयर सेवाओं का मज़ाक उड़ाया जाता है, इसलिए आपको कोई जटिल डेटा सेटअप करने की आवश्यकता नहीं है। प्रत्येक परीक्षण से पहले आप आसानी से रेस्टिटो का उपयोग यह परिभाषित करने के लिए करते हैं कि आप सहकर्मी सेवाओं को कैसे व्यवहार करना चाहते हैं, जैसे कि आप मॉकिटो के साथ यूनिट परीक्षणों में कक्षाओं के साथ करेंगे।
  • यदि आप बुलाए गए तो आप नकली सहकर्मी सेवाओं से पूछ सकते हैं। आप असली सहकर्मी सेवाओं के साथ आसानी से इन asserts नहीं कर सकते हैं।
  • सुइट सुपर तेज है क्योंकि मॉक सेवाएं पूर्व-डिब्बाबंद इन-मेमोरी प्रतिक्रियाएं प्रदान करती हैं। तो हम सूट के बिना उम्र बढ़ने के बिना अच्छा कवरेज प्राप्त कर सकते हैं।
  • सुइट विश्वसनीय और दोहराने योग्य है क्योंकि यह अपने स्वयं के जेवीएम में अलग है, इसलिए सूट चल रहा है और परीक्षण विफल होने के कारण एक साझा वातावरण के साथ मिलकर अन्य सूट/लोगों के बारे में चिंता करने की आवश्यकता नहीं है।

  • सुइट 2 - पूर्ण समाप्ति समाप्त करने के लिए
    • सुइट कई मशीनों
    • एपीआई वातावरण में बिलाव पर तैनात
    • सहकर्मी सेवाएं हैं भर में तैनात एक पूर्ण वातावरण के खिलाफ चलाता है असली 'लाइव के रूप में' पूर्ण तैनाती

इस सूट के लिए हमें सहकर्मी सेवाओं में डेटा सेट करने की आवश्यकता है जिसका अर्थ है कि आम तौर पर परीक्षणों को लिखने में अधिक समय लगता है। जितना संभव हो हम पीईआर सेवाओं में डेटा स्थापित करने के लिए आरईएसटी क्लाइंट का उपयोग करते हैं।

इस सूट में टेस्ट आमतौर पर लिखने में अधिक समय लेते हैं, इसलिए हमने अपने अधिकांश कवरेज को सुइट 1 में रखा है। ऐसा कहा जा रहा है कि इस सूट में अभी भी स्पष्ट मूल्य है क्योंकि सुइट 1 में हमारे मैक्स असली की तरह व्यवहार नहीं कर रहे हैं सेवाएं।


0

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

+0

लिंक टूटा हुआ प्रतीत होता है । – Rao

1

मैंने आराम से सेवा के परीक्षण के लिए एक जेवी डीएसएल, आरईएसटी आश्वासन के आधार पर कई स्वचालन मामलों को लागू किया। https://code.google.com/p/rest-assured/

वाक्यविन्यास आसान है, यह जेसन और एक्सएमएल का समर्थन करता है। https://code.google.com/p/rest-assured/wiki/Usage

इससे पहले, मैंने SOAPUI को आजमाया और मुफ्त संस्करण के साथ कुछ समस्याएं थीं। इसके अलावा मामले एक्सएमएल फाइलों में हैं जो विस्तार और पुन: उपयोग करना मुश्किल है, बस मुझे

1

एपीआई के लिए स्वचालित परीक्षण करने की समस्याओं में से एक यह है कि कई उपकरणों के लिए आपको एपीआई सर्वर को चलाने और चलाने की आवश्यकता होती है अपने परीक्षण सूट चलाने से पहले। यह यूनिट परीक्षण ढांचा बनाने का एक वास्तविक लाभ हो सकता है जो पूरी तरह से स्वचालित परीक्षण वातावरण में एपीआई चलाने और पूछताछ करने में सक्षम है।

एक विकल्प जो नोड.जेएस/एक्सप्रेस के साथ लागू एपीआई के लिए अच्छा है स्वचालित परीक्षण के लिए मोचा का उपयोग करना है। इकाई परीक्षणों के अतिरिक्त, एपीआई के खिलाफ कार्यात्मक परीक्षण लिखना आसान है, अलग-अलग परीक्षण सूट में अलग हो गया है। आप स्थानीय परीक्षण वातावरण में स्वचालित रूप से एपीआई सर्वर शुरू कर सकते हैं और एक स्थानीय परीक्षण डेटाबेस स्थापित कर सकते हैं। मेक, एनपीएम, और एक बिल्ड सर्वर का उपयोग करके, आप "मेक टेस्ट" लक्ष्य और एक वृद्धिशील बिल्ड बना सकते हैं जो आपके संग्रह में कोड के एक टुकड़े को हर बार पूरा टेस्ट सूट चलाएगा। वास्तव में भयानक डेवलपर के लिए, यह एक अच्छा HTML कोड-कवरेज रिपोर्ट भी उत्पन्न करेगा जो आपको दिखाता है कि आपके कोड बेस के कौन से हिस्से परीक्षण द्वारा कवर किए गए हैं या नहीं। यदि यह दिलचस्प लगता है, तो यहां एक blog post है जो सभी तकनीकी विवरण प्रदान करता है।

यदि आप नोड का उपयोग नहीं कर रहे हैं, तो भाषा के लिए जो भी डिफैक्टो यूनिट परीक्षण ढांचा है (जुनीट, ककड़ी/कैपिबरा, आदि) - स्थानीय परीक्षण वातावरण में सर्वर को कताई करने और HTTP चलाने के लिए इसके समर्थन को देखें प्रश्नों। यदि यह एक बड़ी परियोजना है, तो स्वचालित एपीआई परीक्षण और लगातार एकीकरण काम करने का प्रयास बहुत जल्दी भुगतान करेगा।

उम्मीद है कि मदद करता है।

24

फ़्रिस्बी नोड.जेएस और जैस्मीन पर निर्मित एक आरईएसटी एपीआई परीक्षण ढांचा है जो परीक्षण एपीआई एंडपॉइंट्स को आसान, तेज़ और मजेदार बनाता है। http://frisbyjs.com

उदाहरण:

var frisby = require('../lib/frisby'); 

var URL = 'http://localhost:3000/'; 
var URL_AUTH = 'http://username:[email protected]:3000/'; 

frisby.globalSetup({ // globalSetup is for ALL requests 
    request: { 
    headers: { 'X-Auth-Token': 'fa8426a0-8eaf-4d22-8e13-7c1b16a9370c' } 
    } 
}); 

frisby.create('GET user johndoe') 
    .get(URL + '/users/3.json') 
    .expectStatus(200) 
    .expectJSONTypes({ 
    id: Number, 
    username: String, 
    is_admin: Boolean 
    }) 
    .expectJSON({ 
    id: 3, 
    username: 'johndoe', 
    is_admin: false 
    }) 
    // 'afterJSON' automatically parses response body as JSON and passes it as an argument 
    .afterJSON(function(user) { 
    // You can use any normal jasmine-style assertions here 
    expect(1+1).toEqual(2); 

    // Use data from previous result in next test 
    frisby.create('Update user') 
     .put(URL_AUTH + '/users/' + user.id + '.json', {tags: ['jasmine', 'bdd']}) 
     .expectStatus(200) 
    .toss(); 
    }) 
.toss(); 
+1

मैंने हाल ही में फ्रिसबी की खोज की है। मैंने इसका आनंद लिया। तथ्य यह है कि यह जैस्मीन पर आधारित है, बॉक्स के ठीक बाहर बहुत लचीलापन देता है। – DMart

+0

मैंने इस लेख को वोट दिया, मैंने इसे अपने दैनिक काम में इस्तेमाल किया और अब इसके सभी फ्रिज फेंक रहे हैं। मैंने अपने ब्लॉग पर इसके बारे में साझा किया है: http://www.cubicrace.com/2016/04/frisby-rest-api-automation-framework.html –

+2

फ़्रिस्बी मर चुका है https://github.com/vlucas/frisby/मुद्दों/347 –

18

मैं अपने सहकर्मियों में से एक के साथ सहयोग किया इस कारण के लिए PyRestTest ढांचा शुरू करने के लिए: https://github.com/svanoort/pyresttest

यद्यपि आप अजगर में परीक्षण के साथ काम कर सकते हैं, सामान्य परीक्षण प्रारूप वाईएएमएल में है। एक बुनियादी बाकी अनुप्रयोग के लिए

नमूना टेस्ट स्वीट - पुष्टि करता है कि एपीआई सही ढंग से जवाब, जाँच HTTP स्थिति कोड है, हालांकि आप इसे के रूप में अच्छी प्रतिक्रिया निकायों की जांच कर सकते हैं:

--- 
- config: 
    - testset: "Tests using test app" 

- test: # create entity 
    - name: "Basic get" 
    - url: "/api/person/" 
- test: # create entity 
    - name: "Get single person" 
    - url: "/api/person/1/" 
- test: # create entity 
    - name: "Get single person" 
    - url: "/api/person/1/" 
    - method: 'DELETE' 
- test: # create entity by PUT 
    - name: "Create/update person" 
    - url: "/api/person/1/" 
    - method: "PUT" 
    - body: '{"first_name": "Gaius","id": 1,"last_name": "Baltar","login": "gbaltar"}' 
    - headers: {'Content-Type': 'application/json'} 
- test: # create entity by POST 
    - name: "Create person" 
    - url: "/api/person/" 
    - method: "POST" 
    - body: '{"first_name": "Willim","last_name": "Adama","login": "theadmiral"}' 
    - headers: {Content-Type: application/json} 
+0

यह एक शानदार टूल है। यह इतना शक्तिशाली है, और यह स्थापित करना आसान है। यह टेम्पलेट्स और चर का समर्थन करता है जिनका उपयोग आपके परीक्षण मामलों में किया जा सकता है। – HSchmale

+0

धन्यवाद, @HSchmale - मुझे खुशी है कि आपको PyRestTest सहायक मिल रहा है, और मुझे हमेशा संतुष्ट उपयोगकर्ताओं से सुनना अच्छा लगता है (विशेष रूप से चूंकि यह एक अवैतनिक श्रम या प्यार है) – BobMcGee

+0

प्रमाणीकरण के साथ, आप प्रत्येक परीक्षा में नीचे जोड़ते हैं नीचे दिए गए शीर्षकों के साथ http://github.com/svanoort/pyresttest/blob/master/quickstart.md से पुनः प्राप्त किया गया; - auth_username: "foobar" - auth_password: "secret" - expected_status: [200] – agfe2

2

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

रनस्कोप का नि: शुल्क स्तर प्रति माह 10K अनुरोधों का समर्थन करता है।

अस्वीकरण: मैं रनस्कोप के लिए एक डेवलपर वकील हूं।

0

मैंने अपना खुद का आरईएसटी एपीआई परीक्षण ढांचा बनाने के लिए टेस्टएनजी और अपाचे HTTP कक्षाओं का उपयोग किया है, मैंने सेलेनियम में दो साल तक काम करने के बाद इस अवधारणा को विकसित किया है।

सब कुछ समान है, सिवाय इसके कि आपको सेलेनियम कक्षाओं के बजाय अपाचे HTTP कक्षाओं का उपयोग करना चाहिए।

कोशिश करें, यह वास्तव में प्यारा और अच्छा है, आपके पास अपनी पूरी संभावनाओं के लिए अपने परीक्षण ढांचे को अनुकूलित करने की पूरी शक्ति है।

+1

क्या आप कोड साझा कर सकते हैं? –

+0

क्या आप उस कोड के लिए लिंक साझा कर सकते हैं। यह –

+0

बहुत मदद करेगा http://automationextra.blogspot.in/2015/03/hello.html?showComment=1461297709643#c8799014094214852814 –

संबंधित मुद्दे