क्या एकीकरण परीक्षण को निरंतर एकीकरण (CI) में शामिल किया जाना चाहिए?


11

मान लें कि हम एक वेब एप्लिकेशन विकसित कर रहे हैं, और हडसन ठेठ नौकरियां जैसे संकलन, इकाई परीक्षण और स्थिर कोड विश्लेषण करता है।

लेकिन मुश्किल हिस्सा यह है: हडसन deploys और शुरू होता है एक बार पिछले काम किया है, एकीकरण परीक्षण करने के लिए आवेदन सर्वर

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

क्या आपको लगता है कि एकीकरण परीक्षण को जारी एकीकरण (CI) में शामिल किया जाना चाहिए? क्या इसे मैन्युअल रूप से किया जा सकता है? या एकीकरण परीक्षण को सरल करें?


2
आपकी समस्या परीक्षणों की गुणवत्ता में है, सीआई भाग में नहीं। एकीकरण परीक्षण में यह अभी भी निर्भरता को खत्म करने के लिए एक अच्छा अभ्यास है।
ल्यूक फ्रेंकेन

जवाबों:


8

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


4
लेकिन कंटीन्यू वहां भी है। यदि एकीकरण परीक्षण मिनट या घंटे ले रहे हैं, तो यह निरंतर नहीं है।
U2EF1

@ U2EF1 ने तब असतत एकीकरण सर्वर स्थापित किया।
कायनात

1
@Kayaman आपकी टिप्पणी "असतत एकीकरण सर्वर" के लिए इंटरनेट पर एकमात्र परिणाम है। क्या आप स्पष्ट कर सकते हैं कि आपका क्या मतलब है?
Stijn

3

क्या आपको लगता है कि एकीकरण परीक्षण को जारी एकीकरण (CI) में शामिल किया जाना चाहिए?

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

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


3

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

मार्टिन फाउलर तेजी से तैनात करने के लिए पूर्ण निर्माण प्रक्रिया को स्वचालित करने के तरीके के रूप में निरंतर वितरण के बारे में बात कर रहे थे। इसके लिए डिवेलपर्स को कंटिन्यूअस इंटीग्रेशन प्रोसेस द्वारा तेजी से फीडबैक प्राप्त करना होता है। इसलिए वह चरणों को परिभाषित करता है कि निर्माण के माध्यम से जाना चाहिए :

  1. एक कमिट बिल्ड
  2. पूरी तरह से परीक्षण
  3. तैनाती

डेवलपर्स के लिए तेजी से प्रतिक्रिया के कारण, कमिटमेंट बिल्ड में 10 मिनट से अधिक का समय नहीं होना चाहिए।

यहां बताया गया है कि मैं चीजों को कैसे देखता हूं: पहले चरण में, नवीनतम प्रतिबद्धता प्राप्त करें और इसे बनाएं। यदि यह सफल होता है, तो आप यह पता लगाने के लिए अपने यूनिट परीक्षण चलाते हैं कि क्या आपके वर्ग / वर्ग समूह परिभाषित और अपेक्षित रूप से काम कर रहे हैं।

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

आपके द्वारा यह सुनिश्चित करने के बाद कि इकाइयाँ काम कर रही हैं और आवश्यकतानुसार बातचीत कर रही हैं, आप आमतौर पर टेस्ट कवरेज के बारे में पता लगाना चाहते हैं (बस एक छोटे सबसिस्टम का परीक्षण आमतौर पर पर्याप्त नहीं है) और परीक्षण किए गए कलाकृतियों को कार्यात्मक परीक्षण / क्यूए / तैनाती के लिए उपलब्ध कराएं ( पढ़ें: पूरी तरह से परीक्षण) अगर आपको लगता है कि आप परीक्षण अपने कार्यक्रम के लिए पर्याप्त कवर करते हैं। बस, आप एक परीक्षण वातावरण का प्रावधान करते हैं जो आपके द्वारा लक्षित उत्पादन वातावरण को प्रतिबिंबित करता है और परीक्षण चलाता है जिसमें एक वास्तविक डेटाबेस, वास्तविक फ़ाइलें, वास्तविक नेटवर्क peer, आदि शामिल होते हैं।

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

यदि बाद के चरणों को आपके कार्यक्रम के साथ कोई समस्या मिलती है (जैसे जब आपका डेटाबेस एक निश्चित मूल्य देता है, तो आपका नेटवर्क कनेक्शन रुक जाएगा) आपको इन परीक्षणों को एकीकरण परीक्षणों में बाहर निकालने की कोशिश करनी चाहिए। कमिट बिल्ड, QA की तुलना में अधिक तेज़ है;)

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