उत्पाद रिलीज में तेजी लाने और स्थिर करने के लिए परीक्षण का आयोजन कैसे करें। भाग 2

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

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



कार्यों और दोषों के निर्माण और स्वीकृति का प्रारूप


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

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

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

उदाहरण के लिए, "नाम उपयोगकर्ता को यह समझ में नहीं आता है कि" उपयोगकर्ता यह नहीं समझ पाता है कि खरीद दर का चयन करते समय होने वाली त्रुटियों को कैसे नियंत्रित किया जाता है। " कार्य विवरण में शामिल हैं:

  • ऐसा मामला जहां आप त्रुटि को पुन: उत्पन्न कर सकते हैं;
  • वास्तविक और अपेक्षित परिणाम;
  • डेवलपर्स को ठीक करने के लिए स्पष्ट निर्देशों के साथ बैकएंड और फ्रंटेंड के लिए उपशीर्षक। "बैकएंड: इस एपीआई के लिए, फ्रंटेंड को संबंधित उत्तर दें" + विकल्पों में से एक मैट्रिक्स दिखा रहा है कि प्रत्येक संभावित स्थितियों में क्या उत्तर होना चाहिए। "फ्रंटेंड: इस एपीआई के लिए, पीछे से प्रतिक्रिया के आधार पर, संबंधित त्रुटि पाठ जारी करें" + मैट्रिक्स ऑफ ऑप्शंस।

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

इसी नियम को प्राप्त किया जाता है :

  1. एक कार्यात्मक समस्या का वर्णन, त्रुटि को पुन: पेश करने के लिए एक मामला और इतिहास के लिंक के साथ एक कार्य बनाएं, जिसके सत्यापन के दौरान एक दोष पाया गया था।
  2. . : , , API , use case . , , API, , , , , , .

हमने अपने उत्पाद पर एसी (स्वीकृति मानदंड) बनाने से भी इनकार कर दिया, क्योंकि नियोजन स्तर पर हम न केवल इस बात पर चर्चा करते हैं कि हम क्या विकसित कर रहे हैं और परीक्षण कर रहे हैं, बल्कि कैसे।

इसने क्या दिया? इस दृष्टिकोण ने हमें किसी भी समय यह समझने की अनुमति दी कि उपयोगकर्ता की ओर से कार्यक्षमता में क्या खराबी थी, किस चरण में दोष पर काम करना और, पीछे और सामने के भार पर निर्भर करता है, उप-प्रकारों को अलग-अलग तरीकों से एक ही दोष के लिए प्राथमिकता दें।

नतीजतन, विकास की शुरुआत से पहले भी, पूरी टीम समझती है कि प्रत्येक कार्य का कौन सा हिस्सा इसे व्यक्तिगत रूप से स्पर्श करेगा, और अंत में, प्रत्येक कार्य में जानकारी शामिल है: यह कैसे विकसित किया गया था, इसका परीक्षण कैसे किया गया था, क्या इस पर प्रलेखन था, और यह भी कि विकास प्रक्रिया के दौरान इसमें क्या सुधार हुआ था।

यह दृष्टिकोण केवल हमारे उत्पाद पर उपयोग किया जाता है, क्योंकि यह हमारे लिए सबसे सुविधाजनक निकला। X5 बिग डेटा निदेशालय के अन्य उत्पाद अपनी योजनाओं का उपयोग करते हैं: उदाहरण के लिए, एसी के साथ उपयोगकर्ता कहानियां।

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

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

यह सवाल भी उठ सकता है कि क्या हमने अपने उत्पाद में जो नियम स्थापित किए हैं, वे विभाग में एक समान परीक्षण और विकास मानकों के गठन में हस्तक्षेप नहीं करते हैं। वास्तव में नहीं: विभाग के सामान्य नियम यह निर्धारित करते हैं कि विकास के एक निश्चित चरण में कार्य क्या होना चाहिए, और हम इन आवश्यकताओं का अनुपालन करते हैं, हम केवल पूर्व चरणों में कार्य करते हैं।

परीक्षण के क्षण


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

इसलिए, हम प्रत्येक कार्य को अलग-अलग परीक्षण करने के लिए सहमत हुए, लेकिन एक परीक्षण पीठ पर। पहले तो हम एक साथ कई कार्य करना चाहते थे, लेकिन ऊपर मैंने आपको पहले ही बता दिया था कि इस विचार से क्या जोखिम है। एक बार में बहुत तेज। यह एक ज्ञात प्रभाव है: समानांतर कार्यों की संख्या को कम करना धीमा नहीं होता है, बल्कि प्रक्रिया को तेज करता है। उदाहरण के लिए, कंबन में, WIP सीमा (WIP कार्य प्रगति पर है) के रूप में एक ऐसी चीज है, जो प्रत्येक भूमिका द्वारा एक साथ हल किए जा सकने वाले कार्यों की संख्या को सीमित करती है।

नतीजतन, हमने पांच बिंदु स्थापित किए जहां परीक्षक सक्रिय रूप से विकास प्रक्रिया में शामिल हैं:

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

शुरुआत में, जब हमारे पास हर 2 सप्ताह में रिलीज होती थी, तो काम की योजना इस तरह दिखती थी:



यह बन गया है (सप्ताह में एक बार रिलीज):



बैकएंड की बातचीत के नियम - परीक्षण - फ्रंटेंड कनेक्शन


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

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

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

दोषपूर्ण मरम्मत में तेजी लाएं


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

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

पहले, ऐसी स्थितियों में, हम तुरंत डेवलपर्स के पास गए और उनसे कार्यों की प्राथमिकता बदलने के लिए कहा, लेकिन इसने उन्हें विचलित कर दिया। इसलिए, हम सहमत हुए कि हम केवल निश्चित समय पर संपर्क करेंगे - कोड फ्रीज होने के बाद, दिन में 5 बार तक। इसने क्या दिया? हमने अचानक कॉल करके डेवलपर्स की उत्पादकता को कम करना बंद कर दिया, डाउनटाइम से छुटकारा पा लिया, और विश्लेषक के कार्यों के माध्यम से काम करने का समय बढ़ा दिया।

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

ये उपाय, देव, रिलीज़ और ठेस पर कोड को रोल करने के एकीकृत तर्क के साथ अनुमति देते हैंदोषों के सुधार की अवधि को 3 दिन से घटाकर 3-4 घंटे करें।

परिणाम


हमारे खरीद स्वचालन उत्पाद के काम के 9 महीनों में, हमने दैनिक रोलिंग आउट की संभावना के साथ रिलीज के चक्र को 2.5 सप्ताह से 1 सप्ताह तक छोटा कर दिया, जिससे रिलीज की स्थिरता में काफी वृद्धि हुई।

किया बदल गया:

  1. हमें विकास के बाद दोषों को ठीक करने की आवश्यकता से छुटकारा मिल गया, क्योंकि हम इस काम को अधिकतम करने के लिए तैयार करने के चरण में ले गए।
  2. 3 दिनों से 3-4 घंटे तक दोषों के सुधार की अवधि कम करें।
  3. हमें "कमांड पर" रिलीज़ करने का अवसर मिला। अब हम किसी भी दिन पैक कर सकते हैं, कार्यों को पूरा कर सकते हैं, और शाम तक सब कुछ तैयार हो जाएगा और डिबग किया जाएगा।
  4. उन्होंने प्रक्रिया में सभी प्रतिभागियों के लिए प्रक्रियाओं की पारदर्शिता को बढ़ाया: अब टीम के सभी डेवलपर्स और परीक्षक समझते हैं कि इस समय क्या हो रहा है, कौन से कार्यों में व्यस्त हैं, त्रुटियों को विकसित करने और ठीक करने के लिए कितना समय चाहिए।

बोनस: टीम में तनाव के स्तर को कम करना संभव है (मुझे उम्मीद है), और टीम के समन्वित कार्य (डिलीवरी के लिए धन्यवाद) के लिए धन्यवाद, मैं आसानी से दूरस्थ जा सकता हूं :-)

इन सुधारों को लागू करना, हमने कई नियमों का पालन किया:

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

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

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

All Articles