ªà¥à¤°à¥‡à¤®à¤®à¤¾ धोका खाà¤à¤•à¤¾ हरेक जोडी लाई रà¥à¤µà¤¾à¤‰
विषयसूची:
हम सर्विस ओरिएंटेड आर्किटेक्चर सिद्धांतों को प्राथमिकता देते हैं श्लोक में । इसका मतलब है कि हमारे पास स्पष्ट रूप से परिभाषित जिम्मेदारियों के साथ छोटे, बनाए रखने योग्य घटक हैं। वे एक दूसरे के साथ संवाद करते हैं (ज्यादातर), प्रतिनिधि राज्य स्थानांतरण, या आरईएसटी, एपीआई के माध्यम से।
यह लचीलापन प्रदान करता है और एक महत्वपूर्ण पहलू के अपवाद के साथ हमें अच्छी तरह से सेवा प्रदान की है: परीक्षण। परीक्षण करते समय, किसी को बचना चाहिए:
- एक ही मशीन पर चलने वाली बाहरी सेवाओं पर निर्भरता।
- धीमी गति से परीक्षण।
क्योंकि अनुप्रयोग स्वाभाविक रूप से बाहरी सेवाओं पर निर्भर करते हैं, इसलिए उन आश्रितों के लिए परीक्षण रणनीति बनाना महत्वपूर्ण है।
हमने हाल ही में बाईपास का उपयोग शुरू किया है और मैं बताऊंगा कि हम वहां कैसे पहुंचे और विशेष रूप से हम इसका उपयोग कैसे कर रहे हैं।
भूतकाल
नकली तरीके और इस तरह से कुछ उदाहरण डेटा लौटाएं:
यह था (और मुझे विश्वास है कि अभी भी है) रूबी / रेल की दुनिया में "जाने का रास्ता"। दुर्भाग्य से, जोस वालिम द्वारा यहां बताए गए इस बुरे व्यवहार को सबसे अच्छा समझा गया।
हमने तब एक्सवीसीआर का उपयोग करना शुरू किया, जो एक महान पुस्तकालय है, लेकिन इसमें मोक्स / स्टब्स के समान कमियां हैं: यह आलस्य को प्रोत्साहित करता है और उन चिंताओं के अलगाव को बढ़ावा नहीं देता है जो अच्छी तरह से परिभाषित एपीआई के लिए महत्वपूर्ण हैं। ExVCR एक "रिकॉर्ड" और "प्लेबैक" वास्तविक-लाइव डेटा को सक्षम करता है। इसे एकीकृत करना बहुत आसान है (आपके परीक्षण में कुछ पंक्तियाँ और बाकी सभी चीजों का ध्यान रखा जाता है)। लेकिन आदर्श रूप से आपको परीक्षणों में बाहरी निर्भरता के बारे में सोचना होगा, न कि उन्हें बाहर निकालना। यह तब भी परिदृश्यों के लिए एक व्यवहार्य विकल्प हो सकता है जब समापन बिंदु व्यवहार को न्यूनतम ओवरहेड के साथ परीक्षण किया जाना चाहिए (हम इसका उपयोग अमेज़ॅन की एडब्ल्यूएस सेवाओं जैसे एस 3 के परीक्षण कॉल के लिए करते हैं)।
एडेप्टर दर्ज करें
एडेप्टर बहुत अच्छा काम करते हैं और एपीआई अनुबंधों और स्पष्ट रूप से परिभाषित संचार सीमाओं के आसपास विचार-विमर्श को बढ़ावा देते हैं। हम अभी भी इस दृष्टिकोण का उपयोग करते हैं, खासकर जब एडेप्टर अधिक जटिल होता है (जैसे JSON-RPC सॉकेट)।
यह एक अनुकूलक कैसे दिख सकता है:
लेकिन सरल HTTP एंडपॉइंट्स के लिए, एडेप्टर बहुत काम की तरह लगते हैं और एक बड़ी खामी है: वे पुस्तकालयों को छोड़ देते हैं जो वे परीक्षण समीकरण से बाहर का उपभोग करते हैं। यदि HTTP या JSON लाइब्रेरी में कुछ भी बदलता है, तो परीक्षण इसे पकड़ नहीं पाते हैं। उत्पादन-आलोचनात्मक कोड की मात्रा जो इस दृष्टिकोण से पूरी नहीं होती है, अस्वीकार्य है।
वर्तमान और भविष्य
बाईपास हमें उन परीक्षणों में एक बहुत ही सरल वेब सर्वर शुरू करने की अनुमति देता है जो हमारे द्वारा उपयोग की जाने वाली बाहरी सेवाओं का अनुकरण करते हैं।
अब, हम HTTP लाइब्रेरी, JSON एन्कोडिंग / डिकोडिंग लाइब्रेरी और प्रमाणीकरण तंत्र सहित पूरे स्टैक का परीक्षण कर सकते हैं। बाईपास README अच्छी तरह से लिखा गया है, इसलिए मैं कार्यान्वयन विवरणों को छोड़ दूंगा। हालाँकि, हम थोड़ा बदलाव करते हैं कि परीक्षणों को संक्षिप्त और पठनीय रखने के लिए हम इसका उपयोग कैसे करते हैं:
सबसे पहले, हम कभी-कभी फेसबुक को कॉल करना चाहते हैं जब परीक्षण पूर्ण एकीकरण सूट के रूप में चलाए जाते हैं। हम यह सुनिश्चित करने के लिए अनियमित रूप से फेसबुक एपीआई अभी भी हमारी उम्मीदों के अनुसार कार्य करते हैं। जोड़ा जा रहा है
- एकीकरण को समाप्त करें
सेवा मेरे
मिक्स टेस्ट
एपीआई का अनुकरण नहीं करता है, बल्कि, बाहरी सेवा को कॉल करता है (लाइनें 5, 7)।
जब हम बाहरी सेवाओं के अनुरोधों का अनुकरण करते हैं, तो हम स्पष्ट होते हैं ताकि प्रत्येक परीक्षा में बायपास का उपयोग हो
@tag facebook_bypass
(पंक्ति 7)।
अंततः
handle_fb
फ़ंक्शन (लाइनें 30-39) कहा जा रहा है (यह देखते हुए कि
request_path
मेल खाता है)। मुझे फंक्शन हेड में मैचिंग पसंद है क्योंकि यह स्पष्ट करता है कि हम किस पथ पर प्रतिक्रिया कर रहे हैं और हमें अलग-अलग रास्तों के लिए अलग-अलग फ़ंक्शन परिभाषित करने की अनुमति देता है।
इसलिए बायपास केवल टैग किए गए परीक्षणों पर चलता है
@ टाग: बाईपास
और जब हम अपना एकीकरण सूट नहीं चला रहे हैं। बायपास स्थापित करते समय एक और बात हम टैग को एक पेज आईडी (लाइनें 8, 20) पास करने की अनुमति देते हैं। तो यहां बताया गया है कि बाईपास का उपयोग करने वाला एक परीक्षण अपनी सभी महिमा में दिखता है:
जैसा कि आप देख सकते हैं,
facebook_bypass
टैग यह स्पष्ट करता है कि हम एपीआई का अनुकरण कर रहे हैं (जब तक कि हम एकीकरण मोड में नहीं हैं)। यह हमें सिम्युलेटेड एपीआई के बारे में जानकारी देने की अनुमति देता है, और विभिन्न परीक्षणों के लिए एक ही बाईपास कॉन्फिगर का पुन: उपयोग करना बहुत आसान है।
मुझे उम्मीद है कि यह आपको बाहरी एपीआई का परीक्षण करने में मदद करेगा। आप ट्विटर पर मुझे पा सकते हैं (नीचे देखें) यदि आपके कोई और प्रश्न हैं।
UCLA बताते हैं कि कैसे हम अपशिष्ट को वीडियो में मुस्कुराते हुए Poos के साथ ईंधन में बदलते हैं
कैलिफोर्निया विश्वविद्यालय द्वारा आज जारी एक मुस्कुराते हुए पू इमोजी की विशेषता वाला वीडियो हमें याद दिलाता है कि मानव अपशिष्ट में ऊर्जा है। Poop-as-biofuels का विचार कुछ वर्षों से चारों ओर तैर रहा है - सबसे विशेष रूप से ब्रिटेन में, जहां तथाकथित बायो-बस में ब्रिस्टल के आसपास मलमूत्र और पुटर पर लोड होता है। यदि तुम चाहो...
यहाँ iPhones हैं Apple पैच नहीं होगा, यहां तक कि एफबीआई ने कहा कि वे "कमजोर" हैं
एफबीआई और ऐप्पल के बीच सामंजस्यपूर्ण कार्य संबंध नहीं है। सैन बर्नार्डिनो शूटर के iPhone 5c को अनलॉक करने के लिए भारी बहस, बेहद सार्वजनिक, महीने भर चलने वाली अदालती लड़ाई सरकार में समाप्त हो गई और फोन में सेंध लगाने के लिए एक मिस्ट्री हैकर (हालाँकि एफबीआई यह नहीं कहेगा), और अभी भी बहुत कुछ हैं मो ...
3 बड़े बदलाव जो आ सकते हैं यदि Oracle Google के साथ अपने एपीआई मुकदमे को जीतता है
जिन शॉट्स को आप अभी सुन रहे हैं, वे Google बनाम ओरेकल, राउंड टू की शुरुआत का संकेत देते हैं। मूल रूप से, टेक दिग्गज ओरेकल भी बड़े टेक दिग्गज Google पर पागल है, यह दावा करते हुए कि बाद वाले ने अपने जावा सॉफ्टवेयर का उपयोग पहली बार बिना पूछे ही किया था। यह गुस्सा बड़े पैमाने पर मुकदमा का रूप ले रहा है। Google कह रहा है कि मैं ...