बाहरी एपीआई परीक्षण (ब्लैकबॉक्स) कैसे करें


14

मान लें कि आप किसी विक्रेता से एपीआई का उपयोग कर रहे हैं, यह सुनिश्चित करने के लिए कि उनका एपीआई उम्मीद के मुताबिक काम कर रहा है?

मेरी मुख्य चिंता यह है कि कभी-कभी विक्रेता अपने कोड में परिवर्तन को धक्का देते हैं और एपीआई को तोड़ते हैं, हम चाहते हैं कि उन्हें लगातार परीक्षण करने के लिए कुछ प्रकार के स्वचालित सॉफ़्टवेयर हों। इससे कैसे निपटें?


भाषा के आधार पर, ऐसे उपकरण हो सकते हैं जो मदद कर सकते हैं (मैं C # पुस्तकालयों / एपीआई के लिए Pex सोच रहा हूं)।
स्टीवन एवर्स

जवाबों:


10

संक्षिप्त उत्तर: आपको तीसरे पक्ष के विक्रेता एपीआई के लिए एक परीक्षण सूट की आवश्यकता है - इसलिए आपको एक को विकसित करना होगा।

किसी और से यह अपेक्षा न करें कि वह आपके लिए करे और स्वचालित रूप से सही परीक्षण उत्पन्न करने के लिए "मैजिक बुलेट" की अपेक्षा न करें।

कुछ चीजें जो आप अतिरिक्त रूप से आजमा सकते हैं:

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

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


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

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

हां, उन्होंने ऐसा नहीं कहा था। लेकिन अगर वह पूछता है कि "यह सुनिश्चित करने के लिए कि उनका एपीआई उम्मीद के मुताबिक काम कर रहा है" तो परीक्षण एकजुटता का उल्लेख नहीं करता है, "यह मुझे लगता है", कि वह उन्हें नहीं जानता है। स्वचालित एकीकरण परीक्षणों के लिए, वह उन्हें उच्च संभावना के साथ भी नहीं जानता है, उन्होंने केवल "कुछ प्रकार के स्वचालित सॉफ़्टवेयर" का उल्लेख किया है। आप उन लोगों की प्रतीक्षा कर रहे हैं जो आपके जैसे ही जानकार हैं, लेकिन इन विषयों में 99% प्रोग्रामर (मेरे सहित) बहुत कम जानते हैं। और 90% बहुत दूर तक कम है।
गंगानुस

0

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

(अस्वीकरण: यहां उपयोग किए गए उत्पाद नाम) यदि आप अपने एपीआई परीक्षणों को लिखने के लिए साबुनयूआई का उपयोग करते हैं, तो उन परीक्षणों को फिर से उपयोग किया जा सकता है ताकि यह सुनिश्चित हो सके कि एपीआई उम्मीद के मुताबिक काम करता है। यदि यह परीक्षण में विफल रहता है, तो आप अपने उपयोगकर्ताओं को कॉल करने और शिकायत करने से पहले सतर्क हो सकते हैं कि आपका ऐप काम नहीं करता है।


0

आपकी रुचि के क्षेत्र के लिए सीखने के परीक्षण को लागू करें (ऐसी विशेषताएं जो आप उपयोग करने की योजना बनाते हैं)। सीखना परीक्षण एकीकरण परीक्षण हैं जो डेवलपर द्वारा एपीआई के सार्वजनिक अनुबंध के खिलाफ लिखे गए हैं। एपीआई के लिए स्रोत कोड उपलब्ध होने पर भी परीक्षणों को आंतरिक कार्यान्वयन विवरण के खिलाफ नहीं लिखा जाना चाहिए। इस तरह के शिक्षण परीक्षण दो उद्देश्य प्रदान करते हैं -

  1. यह तृतीय-पक्ष API की आपकी समझ में नाटकीय रूप से सुधार करता है।
  2. परीक्षण यह सत्यापित करने में मदद करते हैं कि दावा किया गया नया संस्करण वास्तव में पिछड़ा संगत है या नहीं।

0

इस मुद्दे के लिए 2 दृष्टिकोण हैं ...

आपका ऐप वास्तविक उपयोगकर्ता ट्रैफ़िक के साथ उत्पादन में लाइव है:

यदि आपके पास उत्पादन में एक ऐप है जिसमें लाइव ट्रैफ़िक है और एक बाहरी एपीआई पर निर्भर करता है, तो आपके पास कोई विकल्प नहीं है लेकिन बारीकी से निगरानी करें और जितना संभव हो उतना तेज़ी से पता करने के लिए अच्छा है कि बाहरी एपीआई बिना सूचित किए बदलाव करता है।

आपको हमेशा इस बात का ध्यान रखना चाहिए कि:

  • समय के साथ आपी का परिवर्तन
  • एपीआई विक्रेता बग हो सकता है
  • एपीआई विक्रेता परीक्षण-किट में बग हो सकते हैं या पूरी तरह से उत्पादन एपीआई की कार्यक्षमता को पूरी तरह से कवर नहीं कर सकते हैं

आपका ऐप एक इंस्टालेशन है और इसमें योजनाबद्ध संस्करण / रिलीज़ हैं:

इस मामले में आपके पास विफल होने के लिए एक अनुग्रह अवधि है ... लाइव उपयोगकर्ता बाहरी एपीआई ब्रेकिंग परिवर्तनों के तुरंत प्रभावित नहीं होते हैं।

मेरी राय में यह एक अधिक आसान काम है। एक परीक्षण लिखें (पूर्ण एंड-टू-एंड टेस्ट) जो आपको लेनदेन के लिए वास्तविक लेनदेन / http / अनुरोध करता है जो बाहरी एपीआई को आमंत्रित करता है और जांचता है कि कोई विफलता नहीं हैं। कोई परीक्षण किट कोई नकली असली लेनदेन।

यह कार्य पूरा होने के बाद आप इसे प्रत्येक 24H, 1 मिनट आदि चलाने का विकल्प चुन सकते हैं ...

अच्छे आचरण:

  • सब कुछ स्वचालित
  • एक व्यक्ति है जिसे आप बाहरी एपीआई के विक्रेता से जल्दी से संपर्क कर सकते हैं
  • विक्रेता की हर बात पर आंख मूंदकर भरोसा न करें
  • तेजी से विफल - अगर आपकी सेवा बाहरी एपीआई पर बहुत अधिक निर्भर करती है तो अपनी सेवा को दुर्घटनाग्रस्त न करें। तेजी से असफल हो और उचित त्रुटि संदेश लौटाए

उपकरण:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.