8

मैंने कुछ समय पहले एक परीक्षण लिखा था जो मैंने एक कोड का परीक्षण किया जो मैंने अपने कोड और तृतीय पक्ष एपीआई के बीच लिखा था। परीक्षण सुनिश्चित करता है कि एकीकरण ठीक से काम करता है और हम अपेक्षित परिणामों को वापस प्राप्त करते हैं।निरंतर एकीकरण में किसी तृतीय-पक्ष API को कनेक्शन का परीक्षण कैसे करता है?

औपचारिक निर्माण आज विफल रहा क्योंकि परीक्षण को तृतीय पक्ष API से कनेक्ट करने का प्रयास करते समय 500 त्रुटि मिली।

क्या इस तरह की स्थिति का परीक्षण करने के लिए यह समझ में आता है?

+0

क्या आपका औपचारिक निर्माण इसके बिना पूरी तरह से काम करेगा? यदि नहीं, तो हाँ, इसका परीक्षण करें। सब कुछ परीक्षण करें। मर्फी असली (और पूर्णांक) है। और वह * कोड * प्यार करता है। –

उत्तर

8

मेरी राय में एकीकरण परीक्षण विफल होने के लिए ठीक है अगर तृतीय पक्ष (डीबी, webservice आदि) उपलब्ध नहीं है। यदि आप एकीकरण स्वयं और केवल सादा कार्यक्षमता का परीक्षण नहीं करना चाहते हैं तो आप अपने एपीआई के परिणाम का नकल कर सकते हैं और उनके खिलाफ परीक्षण कर सकते हैं। उस परिदृश्य में आपका परीक्षण अब तीसरे पक्ष की उपलब्धता के आधार पर नहीं है।

मैं आम तौर पर "एकीकरण" जैसे समूह विशेषता के साथ तृतीय पक्ष उपलब्धता के आधार पर इकाई परीक्षणों को चिह्नित करता हूं और उन्हें निरंतर एकीकरण प्रक्रिया से बाहर करता हूं। इसके बजाय मैंने उन्हें रात के निर्माण में भागने दिया। एकीकरण परीक्षण आमतौर पर समय में और whole point of continuous integration is to provide rapid feedback महंगा होते हैं।

2

नहीं, किसी तृतीय-पक्ष सेवा के नीचे होने पर आपके परीक्षण सूट में विफल होने के लिए यह सहायक नहीं है। लेकिन आप सेवा के साथ अपने एकीकरण की पूरी तरह से जांच करना चाहते हैं। निम्नलिखित रणनीति मेरे लिए अच्छी तरह से काम किया है:

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

    • सेवा वर्ग के

    • लिखें इकाई परीक्षण एक सेवा-नीचे त्रुटि तब होती है, लेकिन परीक्षण पास त्रुटि लॉग इन करें।

    • यदि कोई अन्य त्रुटि होती है, तो सामान्य रूप से विफल हो जाती है।

    इन परीक्षणों को लिखें ताकि वे लाइव सेवा के खिलाफ भाग सकें। इन परीक्षणों की एक छोटी संख्या होनी चाहिए, इसलिए उन्हें टेस्ट सूट रनटाइम के लिए कोई समस्या नहीं बनाना चाहिए।

  • एकीकरण परीक्षण समेत अन्य सभी परीक्षणों से सेवा कक्षा को स्टब या नकली करें। (यहां "एकीकरण परीक्षण" से मैं परीक्षणों के बारे में बात कर रहा हूं जो आपके स्वयं के कोड की सभी परतों का परीक्षण करते हैं, भले ही वे तीसरे पक्ष की सेवा के साथ बातचीत न करें।)

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

मार्टिन Buberl चलता है, यह एकीकरण परीक्षणों जहां सेवा वर्ग टोंटदार या बाहर मज़ाक उड़ाया नहीं है की एक अलग परीक्षण चलाने के लिए उपयोगी हो सकता है।ईमानदार होने के लिए, यह ऐसी चीज है जिस पर कई परियोजनाओं में चर्चा की गई है, लेकिन मुझे नहीं लगता कि यह कभी किया गया है। जब कोई तृतीय-पक्ष सेवा विफल हो जाती है, तो हम इसे परीक्षण त्रुटियों से पहले पता लगाने से पहले उत्पादन त्रुटियों (निगरानी या ग्राहक सहायता द्वारा रिपोर्ट) से हमेशा इसके बारे में पता लगाते हैं।

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