क्यूए बनाम पुनरावृत्तियों की दुविधा


17

मेरी कंपनी में, हम सफलतापूर्वक चुस्त प्रथाओं के साथ काम कर रहे हैं - लेकिन पुनरावृत्तियों का उपयोग किए बिना। मुख्य कारण यह है कि हम क्यूए में एक पुनरावृत्ति चक्र में फिट होने का एक साफ तरीका नहीं खोज सकते हैं।

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

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

यह आम तौर पर प्रति सप्ताह लगभग दो से तीन उम्मीदवारों को जारी करता है। फिक्स लिखने का समय आम तौर पर परीक्षण के प्रयासों से बहुत कम होता है। तो डेवलपर्स को व्यस्त रखने के लिए, वे N + 1 को रिलीज़ करने पर काम करते हैं जबकि QA N पर काम करता है।

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

मुझे लगता है कि यह अनिवार्य रूप से निम्नलिखित अवांछित परिणामों में से एक की ओर जाता है:

(ए) डेवलपर्स एक चलना के अंत में निष्क्रिय हैं क्योंकि क्यूए को एक रिलीज के उम्मीदवार को सत्यापित करने के लिए समय चाहिए और बग फिक्सिंग कार्य पूरी तरह से देवों को व्यस्त नहीं रख रहा है।

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

(C) कीड़े को अगले पुनरावृत्ति पर ले जाया जाता है। स्टैक एक्सचेंज पर भी इसकी सिफारिश की जाती है। मुझे नहीं लगता कि यह कोई समाधान है। इसका मूल रूप से मतलब है कि हमें कभी भी एक सत्यापित निर्माण नहीं मिल रहा है क्योंकि जब भी बग फिक्स किए जाते हैं, तो एक ही शाखा में नए, असत्यापित कमिट जोड़े जाते हैं।

क्या इस दुविधा से निकलने का कोई रास्ता है?


4
क्यूए को इतना लंबा समय क्यों लगता है? क्या आपके स्वचालित परीक्षण प्रतिगमन को नहीं पकड़ रहे हैं?
पीएसआर

2
@psr: इकाई स्तर से ऊपर यह दुर्लभ है कि सब कुछ स्वचालित हो सकता है। AIUI, उनकी QA टीम एकीकरण और स्वीकृति स्तर पर परीक्षण कर रही है। और स्वचालित परीक्षण सब कुछ नहीं पा सकते हैं, खासकर जब समय एक भूमिका निभाना शुरू करता है।
बार्ट वैन इनगेन शानौ

जवाबों:


9

हम क्यूए को एक निश्चित बिल्ड (रिलीज़ उम्मीदवार) के सत्यापन का एक अतिरिक्त बिट के रूप में समझते हैं, इससे पहले कि यह ग्राहक को तैनात किया जाए।

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

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


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

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

आप कैसे सुझाव देते हैं कि क्यूए को भविष्य के संस्करण का परीक्षण करने का समय मिलता है, जब वे रिलीज उम्मीदवार का परीक्षण करने और दरवाजे से बाहर निकलने के लिए दबाव में हैं?
पीडीआर

1
@pdr: QA को अनौपचारिक परीक्षणों को नहीं बल्कि खुद को विकास टीम के रूप में चलाने के लिए। वे मुख्य रूप से आपके आत्मविश्वास के स्तर को बढ़ाने के लिए हैं जो आप वैसे भी गुणवत्ता सॉफ़्टवेयर वितरित कर रहे हैं।
बार्ट वैन इनगेन शानौ

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

11

अधिकांश वास्तविक जीवन स्थितियों के लिए चुस्त क्यूए / यूएटी या जो कुछ भी कहा जाता है, वितरण पर रुक जाता है।

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

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

इन परिस्थितियों में बग फिक्स को छोड़कर प्रत्येक तिमाही में एक से अधिक रिलीज की परिकल्पना करना असंभव है।

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


5

परीक्षण को अंतिम रूप देने के लिए आपके पुनरावृत्ति के बाद QA को अतिरिक्त समय देने के लिए बहुत ही अल्पकालिक समाधान है। अर्थात। यदि आपके पास दो सप्ताह की यात्रा है, तो til सप्ताह जारी न करें 3. QA के पास अगले पुनरावृत्ति की ओर परीक्षण करने के लिए कुछ भी नहीं होने जा रहा है, वैसे भी इसके पहले सप्ताह के दौरान।

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

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

Jez Humble की सतत डिलीवरी की एक प्रति खरीदें , इसे पढ़ें, कवर-टू-कवर, इसे टीम के चारों ओर से गुजारें। सभी को प्रेरित करें। फिर उस सब कुछ को लागू करें जो आप इससे कर सकते हैं।

निर्माण प्रक्रिया को जितना हो सके उतना कम करें। एक इकाई-परीक्षण नीति को लागू करें और हर बिल्ड पर चलने वालों को प्राप्त करें। परिनियोजन प्रक्रिया को आपके द्वारा देखी गई सबसे घटिया चीज़ बनाएं। तीन क्लिक? पर्याप्त नहीं।

एक बार जब आप यह सब कर लेते हैं, तो कभी-कभार प्रतिगमन बग के माध्यम से यह बहुत मायने नहीं रखता। तुम जानते हो क्यों? कारण यह है कि आप (वैकल्पिक रूप से) रोल बैक करने में सक्षम होंगे, इसे ठीक करें, फिर से तैनात करें, इससे पहले कि व्यवसाय टुकड़े टुकड़े हो जाए। वास्तव में नाइट चौकीदार आपके लिए रोलबैक करने में सक्षम होगा, प्रक्रिया इतनी सरल होगी।

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

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

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

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


2

पुनरावृत्तियों का उपयोग किए बिना, यह कोई समस्या नहीं है क्योंकि हम रिलीज एन और एन + 1 के लिए काम को ओवरलैप कर सकते हैं।

इस तरह से एक समस्या प्रतीत होती है कि आपने यह कैसे तय किया कि वास्तव में क्या बनता है work for release N

कुछ अजीब कारण के लिए (मैं केवल अनुमान लगा सकता हूं कि कुछ विशेष व्यंजनों की कुछ गलतफहमी है) आपने किसी तरह तय किया कि चुस्त दृष्टिकोण सभी क्यूए टीम प्रयासों को पुनरावृत्ति में शामिल करने का आदेश देता है

  • अगर वास्तव में ऐसा होता है, तो मुझे लगता है कि अब हम जो देख रहे हैं, उससे फुर्तीली लोकप्रियता भी कम नहीं होगी। मैं कई परियोजनाओं की कल्पना नहीं कर सकता हूं जो क्यूए परीक्षण चक्रों के साथ देव टीम पुनरावृत्तियों के अनिवार्य "जीवित" हो सकते हैं।

नीचे चपलता पर थोड़ा और अधिक है , लेकिन पहले, चलो सुलझाना work for release N...


देखिए, विकास टीम के पास इस तरह से काम को परिभाषित करने के लिए कोई सम्मोहक कारण नहीं है। इसके विपरीत, आपके विवरण से यह स्पष्ट है कि अखंड "काम की इकाई" के बजाय, ऐसी कई इकाइयां हैं, जिनमें मील के पत्थर हैं जो महसूस करना आसान है ...

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

ध्यान दें कि जिस तरह से आप परिभाषित करते हैं work for release Nवह क्यूए काम प्रवाह द्वारा मजबूर नहीं है। आप जिन चीजों का वर्णन करते हैं, उनसे लगता है कि उनका अपना (और बहुत ही उचित) शेड्यूल है।

ऊपर दिए गए, आपके मामले में कार्य इकाइयों को परिभाषित करने का अधिक यथार्थवादी तरीका निम्नानुसार हो सकता है:

  1. विकास की गतिविधियाँ उस समय तक निर्मित होती हैं जब निर्माण QA को पास कर दिया जाता है
    Release Candidate N
  2. पहले क्यूए परीक्षण चक्र से संबंधित विकास गतिविधियां
    Release Candidate N patch 1
  3. दूसरी क्यूए परीक्षण चक्र से संबंधित विकास गतिविधियां
    Release Candidate N patch 2
  4. आदि, अंतिम निर्माण तक

ऊपर आपकी कार्य इकाइयाँ हैं, भले ही आप चुस्त हों या जो भी हो।

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


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

Agile के साथ अनुकूलता की समझ से ऊपर मौलिक रूप से गलत लगता है और इसीलिए ...

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

उस दृष्टिकोण से, विशेष रूप से "निश्चित" वर्कफ़्लो के साथ चिपके हुए हैं और यह अनदेखा करते हैं कि यह सुविधाजनक है या नहीं, बस एजाइल की भावना का विरोधाभासी है। Slavishly निम्नलिखित प्रथाओं के लिए "प्रक्रिया" सुराग निंदा में इतना अर्थपूर्ण आधा arsed चंचल घोषणा पत्र "... हम नियंत्रण करने के लिए कैसे उन व्यक्तियों (हम 'शब्द का संसाधन' पसंद करते हैं) सहभागिता अनिवार्य प्रक्रियाओं और टूल उपलब्ध हैं"


नीचे दिए गए एक अन्य प्रश्न के उत्तर में आप इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं । "Shippable रिलीज़" पर नोट पर एक नज़र डालें, यह पीछे की तरह दिखता है, फिर ओपी को इसी तरह से भ्रमित किया गया है:

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

मेरे लिए, एगाइल के सबसे महत्वपूर्ण हिस्सों में से एक प्रत्येक स्प्रिंट के अंत में एक shippable रिलीज है। इसका मतलब है कि कई चीजें। पहले, परीक्षण का एक स्तर यह सुनिश्चित करने के लिए किया जाना चाहिए कि कोई शोस्टॉपिंग बग न हो अगर आपको लगता है कि आप ग्राहक को बिल्ड जारी कर सकते हैं ...

Shippable रिलीज मैं देख रहा हूँ। हम्म। हममम। अपने फुर्तीले कॉकटेल मेंएक शॉट या दो लीन कोजोड़ने पर विचार करें। मेरा मतलब है, अगर यह ग्राहक / बाजार की जरूरत नहीं है तो इसका मतलब केवल (परीक्षण) संसाधनों की बर्बादी होगी।

एक के लिए मैं सिर्फ कुछ के रूप में स्प्रिंट के अंत रिलीज के उपचार में कुछ भी नहीं आपराधिक देख चौकी कि संतुष्ट टीम।

  • dev: हाँ, जो किसी को परीक्षकों को पास करने के लिए काफी अच्छा लगता है; क्यूए: हाँ, अगर किसी को मामले के लिए पर्याप्त रूप से अच्छा लगता है अगर आगे shippable- परीक्षण की आवश्यकता होती है - जैसे सामान। टीम (देव + क्यूए) संतुष्ट है, बस।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.