विस्तृत और दिखने में आकर्षक टेस्ट रिपोर्ट सॉफ्टवेयर परीक्षकों के लिए टेस्ट के नतीजों को समझने और सूचित निर्णय लेने के लिए महत्वपूर्ण हैं। विस्तार पर सावधानीपूर्वक ध्यान देने के साथ, सोशल डिस्कवरी ग्रुप की टीम एल्योर रिपोर्ट्स की मदद से आकर्षक टेस्ट रिपोर्ट तैयार करती है - ओपन-सोर्स पावरहाउस जिसमें सभी उत्तर मौजूद थे। फिर भी, हमने एक खामी का पता लगाया: सुरक्षा। लिंक वाला कोई भी व्यक्ति अंदर झांक सकता था, और सबसिस्टम में इसकी अनुकूलता की कमी थी। इस लेख में, SDG परीक्षण टीम बताती है कि कैसे उन्होंने एक उचित एल्योर डॉकर बनाकर और स्टोरेज स्कीम को संशोधित करके एल्योर रिपोर्ट सुरक्षा समस्याओं को हल करने में कामयाबी हासिल की।
SDG विकास वातावरण Microsoft उत्पादों पर आधारित है, जिसमें CI/CD प्रक्रियाओं को निष्पादित करने के लिए Azure DevOps का उपयोग किया जाता है। CI पाइपलाइन के माध्यम से, स्वचालित परीक्षणों का भंडार बनाया जाता है, इसके बाद परीक्षण चलाने के लिए परीक्षकों की प्राथमिकताओं के आधार पर कई CD पाइपलाइनों के माध्यम से वर्गीकरण किया जाता है।
आइये इस योजना पर विचार करें जैसा कि इसे मूल रूप से स्थापित किया गया था:
इस सेटअप में, CD पाइपलाइन दो Allure रिपोर्टों के लिए जनरेटर के रूप में भी कार्य करती है: एक Slack सूचनाओं के लिए, जो परीक्षकों को चरणों और परीक्षण श्रेणियों को निर्दिष्ट करने के लिए सुविधाजनक रूप से पठनीय लिंक प्रदान करती है, और दूसरी Allure रिपोर्ट को Azure DevOps में निर्यात करने के लिए।
यह Azure DevOps में एक एक्सटेंशन की स्थापना के माध्यम से प्राप्त किया जाता है, जो Azure संग्रहण खाते में स्थिर वेबसाइटों के लिए $web कंटेनर में रिपोर्ट बनाने और उसके बाद अपलोड करने में सक्षम बनाता है। अनाम पहुँच की सक्षम कॉन्फ़िगरेशन रिपोर्ट को एक लिंक के माध्यम से प्रदर्शित करने की अनुमति देती है।
अतिरिक्त सुविधा के लिए, बिल्ड पाइपलाइन में एल्योर रिपोर्ट प्रदर्शित करने के लिए एक अतिरिक्त प्लगइन का भी उपयोग किया गया था।
यद्यपि यह योजना कार्यात्मक है, फिर भी इसमें कुछ कमियां हैं:
सबसे पहले, इस विधि में सुरक्षा की कमी है क्योंकि एल्योर रिपोर्ट लिंक वाले किसी भी व्यक्ति के लिए सुलभ हैं। परीक्षण के आधार पर, रिपोर्ट में सेवाओं, उनकी कमजोरियों और किसी भी अन्य संवेदनशील डेटा के बारे में गोपनीय जानकारी हो सकती है जिसे सार्वजनिक पहुँच से प्रतिबंधित किया जाना चाहिए। Azure संग्रहण खाते में सक्षम "अनाम पहुँच" ध्वज के कारण सामान्य पहुँच प्रदान की जाती है, जो किसी को भी पते तक पहुँच प्रदान करती है। इस फ़ंक्शन को अक्षम करने से अनधिकृत व्यक्तियों के लिए फ़ाइलों तक बाहरी पहुँच बंद हो जाएगी, लेकिन यह Azure DevOps पृष्ठ पर रिपोर्ट को अप्राप्य भी बना देगा।
दूसरा, यह विधि सभी सबसिस्टम में सार्वभौमिक रूप से लागू नहीं है। यदि हम CD पाइपलाइन में जॉब की सूची की जांच करते हैं, तो हम देखेंगे कि मूल जॉब "azcopy" का उपयोग स्टोरेज अकाउंट में रिपोर्ट को कॉपी करने के लिए किया जाता है। यह जॉब केवल Windows पर एजेंटों के साथ उपलब्ध है, और Linux का उपयोग करते समय, यह एक त्रुटि देता है।
तीसरा, परीक्षण इतिहास और रुझान देखने में असुविधा होती है। रिपोर्ट का एकमात्र उपलब्ध इतिहास स्लैक नोटिफिकेशन के माध्यम से सुलभ है, जो विशिष्ट परीक्षणों को खोजने के लिए सुविधाजनक तरीका नहीं है।
उपर्युक्त सभी कारकों ने इस निष्कर्ष पर पहुंचाया कि मौजूदा प्रणाली में संशोधन की आवश्यकता है। इसलिए, इस समस्या के कई समाधानों पर विचार किया गया:
एक एकीकृत .html फ़ाइल बनाने के लिए एक विधि बनाना जो संपूर्ण एल्योर रिपोर्ट परियोजना को एक दस्तावेज़ में संयोजित करेगी।
रिपोर्ट देखने के लिए प्रमाणीकरण प्रदान करने वाली तृतीय-पक्ष सेवाओं का उपयोग करना।
रिपोर्ट देखने के लिए स्वयं के प्रमाणीकरण के साथ पूर्व-निर्मित छवि की खोज करना।
अब, आइए इनमें से प्रत्येक बिंदु पर अधिक विस्तार से चर्चा करें।
जैसा कि पहले बताया गया है, स्टोरेज अकाउंट में "अनाम एक्सेस" फ़ंक्शन को अक्षम करने से अनधिकृत उपयोगकर्ताओं के लिए लिंक के माध्यम से फ़ाइलों तक पहुँच प्रतिबंधित हो जाती है। बाहर से विशिष्ट व्यक्तियों को पहुँच प्रदान करने के लिए, Azure स्वयं कई संभावित विकल्प प्रदान करता है - इनमें SAS टोकन प्रदान करना और एक्सेस नीतियों को कॉन्फ़िगर करना शामिल है। हालाँकि, एल्योर रिपोर्ट बनाने की प्रकृति के कारण, विशेष रूप से index.html फ़ाइल, जो प्रोजेक्ट संरचना में मौजूदा जावास्क्रिप्ट स्क्रिप्ट को संदर्भित करती है:
रिपोर्ट खोलते समय, पृष्ठ खाली हो जाता है, क्योंकि ब्लॉब स्टोरेज के भीतर फ़ाइलों के बीच पहुंच प्रतिबंधित होती है।
एक एकल .html फ़ाइल बनाने के लिए, हमने एक खोज की
यह भी ध्यान देने योग्य है कि Azure IP श्वेतसूचीकरण प्रदान करता है, जो उन व्यक्तियों को फ़िल्टर करने की अनुमति देता है जिन्हें पहुँच की आवश्यकता होती है। हालाँकि, चूँकि पहुँच की आवश्यकता वाली टीम के पास स्थिर IP पता नहीं है, इसलिए यह विधि उपयुक्त नहीं थी।
यह देखते हुए कि विकास वातावरण में परीक्षण एकत्र करने के लिए एल्योर एक लोकप्रिय अभ्यास है, ऑनलाइन सशुल्क सेवाएँ उपलब्ध हैं। उदाहरण के लिए, https://qameta.io/ सेवा उपयोगकर्ता के अनुकूल वेब इंटरफ़ेस में एल्योर रिपोर्ट का भंडारण और निर्माण प्रदान करती है। हालाँकि, ऐसी सेवाएँ आमतौर पर सशुल्क होती हैं, और आवश्यक कार्यक्षमता न्यूनतम होती है। इसलिए, हमने इस कार्यान्वयन विकल्प को अंतिम उपाय के रूप में माना।
हमने जो विकल्प चुना वह था एल्योर-डॉकर सर्विस डॉकर इमेज ( https://github.com/fescobar/allure-docker-service ) जिसमें यूजर इंटरफेस पैनल ( https://github.com/fescobar/allure-docker-service-ui ) को प्रमाणीकरण के साथ एकीकृत करने की क्षमता है। सेवा के साथ संचार HTTP/HTTPS के माध्यम से कॉन्फ़िगर किया गया है, और छवि स्वयं API अनुरोधों के माध्यम से कार्यक्षमता का समर्थन करती है।
आइये इस समाधान के कुछ लाभों पर प्रकाश डालें:
सुरक्षा: डेटा संचरण SSL और TLS तंत्र का उपयोग करके एन्क्रिप्ट किया जाता है, और छवि अंतर्निहित उपयोगकर्ताओं "एडमिन" और "व्यूअर" को लॉगिन क्रेडेंशियल प्रदान करती है, जिन्हें संशोधित किया जा सकता है और उपयोगकर्ताओं को उनकी आवश्यकताओं के आधार पर प्रदान किया जा सकता है।
सुविधा: यह सेवा अपने स्वयं के विज़ुअल इंटरफ़ेस के साथ आती है जो एल्योर रिपोर्ट के साथ काम करने के लिए विभिन्न कार्यात्मकताएं प्रदान करती है।
कार्यक्षमता: API अनुरोधों की बदौलत, Azure DevOps की ओर से रिलीज़ पाइपलाइनों के साथ दिलचस्प संयोजन तैयार किए जा सकते हैं। उदाहरण के लिए, एक रिपोर्ट तैयार करना, उसे अपलोड करना और फिर एक ही चरण में कैश साफ़ करना।
निष्कर्ष में, हमारी रिलीज़ पाइपलाइन इस प्रकार दिखती है:
यह ध्यान देने योग्य है कि हम Azure DevOps एक्सटेंशन से दूर नहीं गए, जो Allure रिपोर्ट अपलोड करने की अनुमति देता है, क्योंकि उस समय तक, हम पहले से ही अपने स्वयं के एजेंटों में परिवर्तित हो चुके थे और "अपनी स्वयं की" मशीनों पर सब कुछ काम करने के विचार का पालन कर रहे थे।
भंडारण के संबंध में, हमने Azure भंडारण खातों में लिखने, विशेष रूप से azcopy उपयोगिता का उपयोग करके फ़ाइल शेयर, ब्लॉब और ब्लॉब में अपलोड करने का प्रयोग किया।
परिणाम काफी भिन्न थे। फ़ाइल शेयर az स्टोरेज फ़ाइल अपलोड-बैच के लिए कमांड का उपयोग करते समय, हमारे परीक्षण के लिए लेखन गति एक घंटे से अधिक थी:
az storage blob upload-batch कमांड के साथ ब्लॉब स्टोरेज का उपयोग करने पर, प्रदर्शन में छह गुना सुधार हुआ, इसमें लगभग 11 मिनट लगे:
सबसे तेज़ परिणाम azcopy टूल द्वारा प्राप्त किया गया:
रिलीज पाइपलाइन में azcopy के अंतर्निहित एकीकरण का उपयोग करते समय, यह Linux मशीनों के साथ असंगत है। हालाँकि, Azure CLI जॉब का उपयोग करके और एजेंट पर इस उपयोगिता को स्थापित करके, कमांड को आत्मविश्वास से नियोजित किया जा सकता है:
azcopy कॉपी 'स्रोत' 'गंतव्य' --recursive=सत्य
नेट की गहराई से एल्योर डॉकर छवि की खोज के लिए धन्यवाद, हम रिपोर्ट की स्टोरेज और डिस्प्ले स्कीम को संशोधित करने में सक्षम थे। डेटा एक्सेस अब पासवर्ड से सुरक्षित है, और रिपोर्ट निर्माण और प्रसंस्करण तेज़ बना हुआ है। इसके अलावा, उपयोगकर्ताओं (परीक्षकों) के दृष्टिकोण से, परिवर्तन न्यूनतम हैं। क्लस्टर में एक अलग एजेंट के लिए धन्यवाद, समाधान अन्य कार्यक्रमों से स्वतंत्र रूप से संचालित होता है, और अन्य विकास प्रक्रियाओं को प्रभावित नहीं कर सकता है। इस समाधान की लागत-प्रभावशीलता एक अलग स्व-होस्टेड एजेंट ($ 15, बशर्ते कि यह अलग हो) के बराबर है, जो मौजूदा विकल्पों की तुलना में बहुत सस्ता है। उदाहरण के लिए, पहले माना जाने वाला qameta.io, जहां एक उपयोगकर्ता के लिए कीमत $ 30 / महीना है।
यह लेख सोशल डिस्कवरी ग्रुप के मिडिल डेवऑप्स इंजीनियर दिमित्रिज गुसारोव्स द्वारा लिखा गया है।
सोशल डिस्कवरी ग्रुप (SDG) एक वैश्विक प्रौद्योगिकी कंपनी है जो डेटिंग, सोशल और मनोरंजन के चौराहे पर सोशल डिस्कवरी ऐप बनाती है। कंपनी के पोर्टफोलियो में AI, गेम मैकेनिक्स और वीडियो स्ट्रीमिंग पर ध्यान देने वाले 70 प्लेटफ़ॉर्म शामिल हैं। SDG उत्पादों का उपयोग 150 देशों में 500+ मिलियन लोग करते हैं।