क्यूए पेशेवर के रूप में, उत्पाद परीक्षण के लिए एक नया उपयोगकर्ता बनाना एक साधारण कार्य की तरह लग सकता है - बस पंजीकरण फॉर्म भरें और आप जाने के लिए तैयार हैं। हालांकि, क्या होगा यदि आपको एक वर्ष के लंबे संदेश इतिहास वाले उपयोगकर्ता का परीक्षण करने की आवश्यकता है, या मूल्यांकन करें कि वीडियो सेवा सुविधा किसी विशेष ए / बी परीक्षण समूह के लिए कैसे काम करती है? उपयोगकर्ताओं को मैन्युअल रूप से बनाते समय ये स्थितियां जल्दी से थकाऊ और समय लेने वाली हो सकती हैं।
इस लेख में, हम एक ऐसे टूल को विकसित करने की अपनी यात्रा को साझा करेंगे जो उस प्रक्रिया को पूरी तरह से स्वचालित करता है। चलो गोता लगाएँ!
हमारे उपयोगकर्ता प्रबंधन उपकरण का परिचय
सोशल डिस्कवरी ग्रुप में, हम ऑनलाइन सेवाएं प्रदान करते हैं जो दुनिया भर के लोगों को जोड़ती हैं। हमारे उत्पाद उपयोगकर्ताओं को चैट और वीडियो के माध्यम से संवाद करने और मीडिया सामग्री साझा करने में सक्षम बनाते हैं। जैसे-जैसे हमारे उत्पाद विकसित होते गए, हमें तेजी से जटिल परीक्षण परिदृश्यों का सामना करना पड़ा। उदाहरण के लिए, हमें एक समाप्त सदस्यता के साथ उपयोगकर्ता की प्रोफ़ाइल की जांच करने या 30 से अधिक प्रविष्टियों वाली संपर्क सूची की कार्यक्षमता का विश्लेषण करने की आवश्यकता थी।
एक "इतिहास-समृद्ध" उपयोगकर्ता उत्पन्न करने के लिए, हमें कई एपीआई प्रश्नों को निष्पादित करना था, रैबिटएमक्यू को संदेश भेजना और एसक्यूएल स्क्रिप्ट चलाना था। चूंकि ये कदम पहले से ही हमारे स्वचालित परीक्षणों में शामिल किए गए थे, मैन्युअल क्यूए टीम ने हमें आवश्यक उपयोगकर्ता बनाने के लिए अक्सर एक स्वचालित परीक्षण करने के लिए कहा। समय के साथ, एकल उपयोगकर्ता के निर्माण में परीक्षण की तुलना में अधिक समय लगने लगा। इसलिए, हमने उपयोगकर्ता निर्माण प्रक्रिया को स्वतंत्र रूप से संभालने के लिए किसी भी कर्मचारी को सशक्त बनाने का तरीका खोजने का निर्णय लिया।
हमारा परीक्षण स्वचालन C# में लिखा गया है। हम स्वचालित परीक्षणों में अपने एप्लिकेशन संसाधनों के लिए एपीआई कॉल का सक्रिय रूप से उपयोग करते हैं। उदाहरण के लिए, हम ग्राहक पंजीकरण के लिए निम्नलिखित विधि का उपयोग करते हैं:
var client = new Client(); RegisterClient(client, param1, param2, param3);
हमारे ढांचे का विश्लेषण करने के बाद, हमने निष्कर्ष निकाला कि परीक्षण के लिए आवश्यक उपयोगकर्ता बनाने का सबसे आसान समाधान हमारे तरीकों का उपयोग करके ASP.NET वेब फॉर्म एप्लिकेशन विकसित करना होगा। हमने एक ऐसी वेबसाइट की परिकल्पना की है जिसका उपयोग QA परीक्षक आवश्यक उपयोगकर्ताओं को आसानी से बनाने के लिए कर सकते हैं।
यहाँ हमने क्या किया:
सबसे पहले, हमने उपयोगकर्ता निर्माण के लिए एक पेज जोड़ा। परीक्षक अतिरिक्त मापदंडों का चयन कर सकते हैं और उपयोगकर्ता को उनकी प्राथमिकताओं के अनुसार कॉन्फ़िगर कर सकते हैं - या तो एक नए उपयोगकर्ता के रूप में या चैट के लंबे इतिहास के साथ।
यहाँ प्रक्रिया कैसी दिखती है:
यहाँ पृष्ठ के लिए कोड है, जिसमें आउटपुट तत्व शामिल है।
<%@ Page Language = "C#" AutoEventWireup = "true" CodeBehind = "WebForm1.aspx.cs"
Inherits = "Habrl.Pages.Registration.RegistrationForm1" %> <!DOCTYPE html> <html xmlns = "http://www.w3.org/1999/xhtml" > <head runat = "server" > <title></title> </head> <body> <form id = "registration" runat = "server" > <div> <div> <label>Client type:</label> <asp:DropDownList ID = "clientType" runat = "server" AutoPostBack = "true"
CssClass = "select" OnSelectedIndexChanged = "clientType_OnSelectedIndexChanged" > <asp:ListItem value = "regularClient" Selected = "True" >Regular client</asp:ListItem> <asp:ListItem value = "clientWithChatHistory" >Client with chat history</asp:ListItem> <asp:ListItem value = "inactiveClient" >Inactive Client</asp:ListItem> </asp:DropDownList> </div> <div id = "usersCountDiv" runat = "server" > <label>How much clients we should register:</label> <asp:TextBox ID = "clientsCount" runat = "server" CssClass = "input"
Text = "1" ></asp:TextBox> <div class = "errorMsg" > <asp:RequiredFieldValidator Display = "Dynamic" runat = "server"
ControlToValidate = "usersCount" ErrorMessage = "Define clients count!" ></asp:RequiredFieldValidator> <asp:RangeValidator Display = "Dynamic" runat = "server"
ControlToValidate = "clientsCount" Type = "Integer" MinimumValue = "1" MaximumValue = "30"
ErrorMessage = "We can create from 1 till 30 clients at once!" ></asp:RangeValidator> </div> </div> <div> <asp:Button CssClass = "MyButton separateButton" ID = "SubmitButton" runat = "server"
text = "Register" OnClick = "OnRegisterButtonClick" ></asp:Button> </div> </div> </form> <div runat = "server" id = "result" ></div> </body> </html>
यहाँ तर्क कार्यान्वयन है:
public partial class RegistrationForm : System . Web . UI . Page
{ int _clientsCount; string _clientType; protected void Page_Load ( object sender, EventArgs e )
{ _clientsCount = int.Parse(clientsCount.Text); _clientType = clientType.SelectedValue; } protected void OnRegisterButtonClick ( object sender, EventArgs e )
{ var clients = new ConcurrentBag<Client>(); Parallel.For( 0 , _clientsCount, _ =>
{ var client = new Client(); RegisterClient(client, _clientType); clients.Add(client); }); result.InnerHtml = GenerateTableViewForClientsEnumerable(clients); } }
पंजीकरण करने पर, हमें निम्न तालिका प्राप्त होती है:
UMT में उपयोग की जाने वाली RegisterClient विधि हमारे ऑटोटेस्ट में उपयोग की जाने वाली विधि के समान है। इसका मतलब यह है कि जब भी हम अपने उत्पादों में नई कार्यक्षमता पेश करते हैं, तो हमारे ऑटोटेस्ट स्वचालित रूप से अपडेट हो जाते हैं, और वे परिवर्तन UMT में भी दिखाई देते हैं। UMT अनिवार्य रूप से हमारे अनुबंधों पर एक फ्रंट-एंड कार्यान्वयन के रूप में कार्य करता है, जो अंतर्निहित ऑटोटेस्ट कोड प्रदान करता है।
UMT के लिए धन्यवाद, पूरी टीम अब आसानी से हमारे कई परीक्षण वातावरणों में से किसी भी क्लिक के साथ आवश्यक उपयोगकर्ता प्रोफ़ाइल बना सकती है। मैनुअल क्यूए टीम स्वचालन टीम से किसी भी भागीदारी की आवश्यकता के बिना स्वतंत्र रूप से सबसे जटिल उपयोगकर्ता प्रोफाइल भी उत्पन्न कर सकती है। हमारे आश्चर्य के लिए, विकास दल ने भी अपने उद्देश्यों के लिए UMT का लाभ उठाना शुरू कर दिया है।
विकास और सुधार
हमारे द्वारा UMT जारी करने के बाद, हमें नई सुविधाओं के लिए अनुरोध प्राप्त होने लगे। हमने उपयोगकर्ता प्रबंधन (ऑनलाइन स्थिति अनुकरण और संदेश सहित) और भुगतान प्रबंधन के लिए पेज जोड़े हैं। बाद में, मोबाइल टीम ने एक चिंता के साथ हमसे संपर्क किया: मोबाइल उपकरणों पर UMT उपयोगकर्ता बनाने के लिए ईमेल और पासवर्ड विवरण दर्ज करने में बहुत समय और प्रयास लगता है। जवाब में, हमने यूएमटी में एक छोटी लेकिन उपयोगी सुविधा जोड़ी - लॉगिन लिंक और मोबाइल एप्लिकेशन के लिए डीप लिंक के साथ क्यूआर कोड बनाना।
जैसा कि हमने UMT का विकास जारी रखा, हमने दो प्रमुख रीडिज़ाइन किए और साइट पर एक पेड़ जैसा मेनू जोड़ा। नतीजतन, मूल उपयोगकर्ता पंजीकरण पृष्ठ महत्वपूर्ण परिवर्तन से गुजरा है और अब पूरी तरह से अलग दिखता है।
UMT के साढ़े पांच साल के अस्तित्व के दौरान, हमने उत्पाद परीक्षण की सुविधा के अपने मूल उद्देश्य से कहीं अधिक उपकरण का विस्तार किया। हमने DevOps गतिविधियों को स्वचालित करने के लिए अनुभाग जोड़े, जैसे सेवाओं और सर्वरों को पुनरारंभ करना, परीक्षण वातावरण को कॉन्फ़िगर करना, साफ़ करना और लिंक करना, और सांख्यिकीय जानकारी प्रदान करना, साथ ही ज्ञान का आधार और बहुत कुछ। अगले भाग में, मैं इनमें से कुछ विशेषताओं पर करीब से नज़र डालूँगा।
प्राधिकार
कुछ समय बाद, हमने कुछ कर्मचारियों (उदाहरण के लिए, जो परिवीक्षा पर हैं) के लिए यूएमटी तक पहुंच को प्रतिबंधित करने का निर्णय लिया। ऐसा करने के लिए, हमने एक डेटाबेस और भूमिकाओं और उपयोगकर्ताओं के साथ एक तालिका जोड़ी, डोमेन प्रमाणीकरण लागू किया, और अनुमतियाँ सौंपी। इस प्रणाली के साथ, हम उपयोगकर्ता सत्र की पहचान कर सकते हैं और उपयोगकर्ता को उनके अधिकारों के आधार पर विशिष्ट कार्यक्षमता तक पहुंच प्रदान कर सकते हैं। हमारी कंपनी द्वारा Google सेवाओं के उपयोग को देखते हुए, हमने UMT में Google प्राधिकरण भी जोड़ा है।
सेवाएं और परीक्षण वातावरण
चूंकि UMT टीम के बीच एक लोकप्रिय टूल बन गया है, इसलिए हमारी QA टीम Ansible जैसे विभिन्न स्क्रिप्ट और टूल पर निर्भर रहने के बजाय UMT के माध्यम से सेवाओं और टेस्ट बेड का प्रबंधन करना चाहती थी। हमने डॉकर और विंडोज सेवाओं, आईआईएस और वेब नोड्स को फिर से शुरू करने और उन सेवाओं के कॉन्फ़िगरेशन को संपादित करने की क्षमता जोड़ी है। हमने इन सेवाओं को कॉन्फ़िगर करने और परीक्षण बेड में उनकी तुलना करने के लिए एक सुविधा भी शामिल की है।
टेस्टरेल और जेनकींस
टेस्ट ऑटोमेशन हमारे काम का एक महत्वपूर्ण हिस्सा है, और किसी भी समय हमारे पास अक्सर दस से अधिक टेस्ट रन होते हैं। हालांकि, जेनकींस में कई अन्य के बीच एक विशेष रन का पता लगाना या कतार में इसकी स्थिति की जांच करना चुनौतीपूर्ण हो सकता है। इस समस्या का समाधान करने के लिए, हमने यूएमटी में एक पृष्ठ विकसित किया है जो सभी मौजूदा रन और कतार में मौजूद लोगों पर डेटा प्रदर्शित करता है। यह पेज रनिंग जॉब्स के बारे में जानकारी एकत्र करने के लिए हमारे सभी जेनकींस इंस्टेंसेस का चुनाव करता है, जिसे बाद में आसान संदर्भ के लिए तालिकाओं में प्रस्तुत किया जाता है।
इसके अतिरिक्त, UMT TestRail में सक्षम TestRuns के साथ TestPlans बनाने के लिए एक अलग पृष्ठ प्रदान करता है। कुछ ही क्लिक के साथ, उपयोगकर्ता परीक्षण परिदृश्यों के साथ कई बुनियादी टेस्टप्लान में से चुन सकते हैं।
UMT विफल ऑटोटेस्ट को पार्स करने या असामान्य उपयोगकर्ता व्यवहार की जांच करने के लिए भी उपयोगी साबित हुआ है। पहले, इन कार्यों के लिए मैन्युअल रूप से फिडलर को एपीआई प्रश्नों के लिए खोलना या SQL प्रश्नों को निष्पादित करने के लिए डेटाबेस से कनेक्ट करना आवश्यक था। हालांकि, यूएमटी के साथ, समर्पित पेज टेस्ट बेड में बनाए गए उपयोगकर्ताओं पर व्यापक तकनीकी जानकारी प्रदान करते हैं, जिससे समस्या-समाधान तेजी से और अधिक कुशल हो जाता है।
आज, UMT एक पूर्ण विकसित परियोजना है जो विकसित होती रहती है क्योंकि परीक्षण स्वचालन विभाग को कार्यक्षमता जोड़ने या बग को ठीक करने के लिए नए कार्य मिलते हैं। स्प्रिंट में प्राथमिकता वाले कार्य शामिल हैं। UMT हमारे कर्मचारियों के लिए एक आवश्यक उपकरण बना हुआ है, एक ही स्थान पर कई नियमित गतिविधियों को एकत्रित करके उनका समय और प्रयास बचाता है। अब नोट्स लेने, फ़िडलर या पोस्टमैन के लिए एपीआई प्रश्नों को सहेजने या डेटाबेस रूटीन करने के लिए SQL स्टूडियो खोलने की आवश्यकता नहीं है। तो अगर आपकी कंपनी को इसी तरह की चुनौतियों का सामना करना पड़ता है, तो अब आप जानते हैं कि क्या करना है।
सोशल डिस्कवरी ग्रुप में टीम लीड क्यूए ऑटोमेशन, पावेल यासोनौ द्वारा लिखित