कंटेनर आधारित एकीकरण परीक्षण

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



चलो ककड़ी , प्रोट्रैक्टर और सेलेनियम का उपयोग करके बीडीडी-परीक्षण ( व्यवहार-संचालित विकास ) बनाते हैं और उन्हें ज़लेनियम का उपयोग करके ओपनशिफ्ट प्लेटफ़ॉर्म पर चलाते हैं।

बीडीडी परीक्षण


एकीकरण परीक्षण विकसित करने में, BDD व्यवसाय विश्लेषकों (BAs) को केवल प्रोग्रामर ही नहीं, एकीकरण परीक्षणों की परिभाषाएँ बनाने की अनुमति देता है। बीडीडी के लिए धन्यवाद, विकास प्रक्रिया को व्यवस्थित किया जा सकता है ताकि एक ही समय में एकीकरण आवश्यकताओं की कार्यात्मक आवश्यकताएं और परिभाषाएं तैयार हों, और साथ ही वे व्यापार विश्लेषकों द्वारा बनाई गई हों।

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



और यहां बताया गया है कि बीडीडी का उपयोग करते समय यह कैसा दिखता है:



इसके अलावा, इस नई योजना में, प्रत्येक पुनरावृत्ति में आमतौर पर कम समय लगता है।

व्यापार विश्लेषक एकीकरण परीक्षणों के लिए परिभाषाएँ बना सकते हैं क्योंकि BDD इन परीक्षणों का वर्णन सरल और समझने योग्य घेरकिन भाषा में करता है जिनके मुख्य कीवर्ड दिए गए हैं, जब, और फिर। घेरकिन भाषा में प्रत्येक कथन इन शब्दों में से एक से शुरू होना चाहिए।

उदाहरण के लिए:

उपयोगकर्ता को लॉगिन पेज पर नेविगेट करने के लिए (बशर्ते कि उपयोगकर्ता ने लॉगिन पृष्ठ तक पहुंच प्राप्त की हो)

जब उपयोगकर्ता उपयोगकर्ता नाम और पासवर्ड दर्ज करता है

जब उपयोगकर्ता नाम और पासवर्ड सही हो

तब सिस्टम उन्हें लॉग इन करता है (फिर सिस्टम उसे लॉग इन करने की अनुमति देता है)

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

टेस्टिंग टेक्नोलॉजी स्टैक


चलो AngularJS कार्यान्वयन में एक उदाहरण के रूप में TodoMVC वेब एप्लिकेशन का उपयोग करके परीक्षण प्रक्रिया पर एक नज़र डालते हैं । AngularJS सिंगल-पेज एप्लिकेशन (एसपीए) बनाने के लिए एक लोकप्रिय ढांचा है।

चूंकि AngularJS जावास्क्रिप्ट है, इसलिए हम जावास्क्रिप्ट में Cumcumber.js , ककड़ी बाइंडिंग का उपयोग करेंगे।

किसी ब्राउज़र में उपयोगकर्ता के काम का अनुकरण करने के लिए, हम सेलेनियम का उपयोग करेंगे। सेलेनियम एक ऐसी प्रक्रिया है जो एक ब्राउज़र लॉन्च कर सकती है और एपीआई के माध्यम से प्राप्त कमांड पर उपयोगकर्ताओं द्वारा वापस क्रिया कर सकती है।

अंत में, हम एंगुलरजेएस में लिखे गए एसपीए अनुप्रयोगों के अनुकरण की बारीकियों को ध्यान में रखने के लिए प्रोट्रैक्टर का उपयोग करेंगे। प्रोट्रैक्टर इस अपेक्षा का ध्यान रखेगा कि पृष्ठ के भीतर विचार सही तरीके से लोड हों।

तो, हमारे परीक्षण स्टैक निम्नानुसार है:



इस आरेख में प्रस्तुत प्रक्रिया इस प्रकार वर्णित है:

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

एक गैर-कंटेनरीकृत बुनियादी ढांचे में ऐसे ढेर को तैनात करना आसान नहीं है। और न केवल बड़ी संख्या में प्रक्रियाओं और चौखटे का उपयोग करने के कारण, बल्कि इसलिए भी क्योंकि बिना मॉनिटर के सर्वर पर ब्राउज़र को लॉन्च करना हमेशा मुश्किल रहा है। सौभाग्य से, एक कंटेनरीकृत दुनिया में, यह सब स्वचालित हो सकता है।

एकीकरण परीक्षण फार्म


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

यदि आप लगातार प्रत्येक परीक्षण कॉन्फ़िगरेशन के लिए एक स्टैक तैनात करते हैं और उस पर संबंधित परीक्षण चलाते हैं, तो यह समय और संसाधनों के मामले में बहुत महंगा है।

आदर्श रूप से, मैं समानांतर में परीक्षण चलाना चाहूंगा।

सेलेनियम-ग्रिड हमें इसमें मदद कर सकता है - एक समाधान जिसमें सेलेनियम हब अनुरोध ब्रोकर और एक या अधिक नोड्स शामिल हैं, जिस पर ये अनुरोध निष्पादित होते हैं।



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

सेलेनियम-ग्रिड क्लस्टर को स्थापित करना और प्रबंधित करना काफी मुश्किल है, और इतना है कि संबंधित सेवाओं की पेशकश करने वाली कंपनियां बाजार पर भी दिखाई दी हैं। विशेष रूप से, SauceLabs और BrowserStack मुख्य खिलाड़ियों में से हैं।

कंटेनर आधारित एकीकरण परीक्षण


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

प्रौद्योगिकी का यह क्षेत्र अभी भी गठन के प्रारंभिक चरण में है, हालांकि, एक होनहार ओपन सोर्स प्रोजेक्ट - ज़लेनियम - जो कुछ भी ज़रूरत है, प्रदान करता है।

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

यदि आप सब कुछ एक साथ करते हैं, तो तकनीकी स्टैक निम्नानुसार है:



आरेख में प्रत्येक अंडाकार कुबेरनेट्स में एक अलग फली है। परीक्षण खिलाड़ी और एमुलेटर की फली अल्पकालिक होती है और परीक्षण के अंत में नष्ट हो जाती है।

CI / CD पाइपलाइन के भीतर एकीकरण परीक्षण करना


आइए जेनकिन्स में एक सरल पाइपलाइन बनाएं, यह दिखाने के लिए कि इस प्रकार के एकीकरण परीक्षण को रिलीज प्रबंधन प्रक्रिया के बाकी हिस्सों में कैसे एकीकृत किया जाए। यह इस तरह दिखता है:



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

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

और यह परीक्षणों के परिणामों पर एक रिपोर्ट का उदाहरण है (ध्यान दें कि परीक्षण दो ब्राउज़रों पर चलाए गए थे):



निष्कर्ष


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

यहां तक ​​कि कंटेनर-उन्मुख एकीकरण परीक्षण के आयोजन के लिए परिपक्व उपकरणों की अनुपस्थिति में, कंटेनर प्लेटफार्मों पर आधारित एकीकरण परीक्षण पहले से ही आज किए जा सकते हैं और कंटेनर दृष्टिकोण का लाभ उठा सकते हैं।

यदि आप कंटेनरीकृत एप्लिकेशन विकसित कर रहे हैं, तो CI / CD पाइपलाइन के भीतर इस दृष्टिकोण का उपयोग करने का प्रयास करें और देखें कि क्या यह एकीकरण परीक्षण को आसान बनाने में मदद करता है।

इस लेख का नमूना कोड GitHub वेबसाइट पर redhat-cop / कंटेनर-पाइपलाइनलाइन पर पाया जा सकता है।

Source: https://habr.com/ru/post/hi420385/


All Articles