हमारी विकास टीम GitFlow शाखाओं की रणनीति का उपयोग कर रही है और यह बहुत अच्छा रहा है!
हाल ही में हमने अपने सॉफ़्टवेयर की गुणवत्ता में सुधार करने के लिए एक दंपति परीक्षकों की भर्ती की। विचार यह है कि प्रत्येक फीचर को एक परीक्षक द्वारा परीक्षण / क्यूए किया जाना चाहिए।
अतीत में, डेवलपर्स अलग-अलग फीचर शाखाओं पर सुविधाओं पर काम करते हैं और develop
जब किया जाता है तो उन्हें वापस शाखा में विलय कर देते हैं । डेवलपर उस feature
शाखा में स्वयं अपने काम का परीक्षण करेगा । अब परीक्षकों के साथ, हम यह प्रश्न पूछना शुरू करते हैं
परीक्षक को किस शाखा पर नई सुविधाओं का परीक्षण करना चाहिए?
जाहिर है, दो विकल्प हैं:
- व्यक्तिगत सुविधा शाखा पर
- पर
develop
शाखा
विकसित शाखा पर परीक्षण
प्रारंभ में, हमने माना कि यह सुनिश्चित करने का तरीका है क्योंकि:
- यह सुविधा
develop
शुरू होने के बाद से शाखा में विलय होने वाली अन्य सभी विशेषताओं के साथ परीक्षण किया जाता है । - किसी भी टकराव का पता पहले की तुलना में लगाया जा सकता है
- यह परीक्षक के काम को आसान बनाता है, वह हर समय केवल एक शाखा (
develop
) के साथ काम कर रहा है । उसे डेवलपर से यह पूछने की जरूरत नहीं है कि कौन सी शाखा किस सुविधा के लिए है (फीचर शाखाएं व्यक्तिगत शाखाएं हैं जो संबंधित डेवलपर्स द्वारा विशेष रूप से और स्वतंत्र रूप से प्रबंधित की जाती हैं)
इसके साथ सबसे बड़ी समस्या है:
develop
शाखा कीड़े के साथ प्रदूषित कर रहा है।जब परीक्षक को बग या संघर्ष का पता चलता है, तो वह उन्हें डेवलपर को वापस रिपोर्ट करता है, जो विकसित शाखा पर समस्या को ठीक करता है (फीचर शाखा को एक बार विलय कर दिया गया था), और बाद में अधिक सुधार की आवश्यकता हो सकती है। मल्टीपल लेटरेंस कमिट या मर्ज होता है (यदि कोई ब्रांच
develop
बग्स को ठीक करने के लिए फिर से ब्रांच से रिक्रिएट की जाती है) तो ब्रांच से फीचर को रोलdevelop
करना मुश्किल हो जाता है।develop
अलग-अलग समय पर शाखा में विलय होने और तय होने की कई विशेषताएं हैं । यह एक बड़ा मुद्दा बनाता है जब हमdevelop
शाखा में कुछ विशेषताओं के साथ एक रिलीज बनाना चाहते हैं
फ़ीचर शाखा पर परीक्षण
इसलिए हमने फिर से सोचा और फैसला किया कि हमें फीचर शाखाओं पर सुविधाओं का परीक्षण करना चाहिए। परीक्षण करने से पहले, हम develop
शाखा से फीचर शाखा में परिवर्तन (शाखा के साथ पकड़ develop
) को मर्ज करते हैं । यह अच्छा है:
- आप अभी भी मुख्यधारा में अन्य सुविधाओं के साथ इस सुविधा का परीक्षण करते हैं
- आगे विकास (जैसे बग फिक्स, संघर्ष को हल करना)
develop
शाखा को प्रदूषित नहीं करेगा ; - जब तक यह पूरी तरह से परीक्षण और अनुमोदित नहीं हो जाता, तब तक आप आसानी से फ़ीचर जारी न करने का निर्णय ले सकते हैं;
हालांकि, कुछ कमियां हैं
- परीक्षक को कोड का विलय करना पड़ता है, और यदि कोई संघर्ष (बहुत संभावना) है, तो उसे डेवलपर से मदद मांगनी होगी। हमारे परीक्षक परीक्षण में विशेषज्ञ हैं और कोडिंग करने में सक्षम नहीं हैं।
- एक और नई सुविधा के अस्तित्व के बिना एक विशेषता का परीक्षण किया जा सकता है। उदाहरण फ़ीचर ए और बी दोनों एक ही समय में परीक्षण के अधीन हैं, दो विशेषताएं एक दूसरे से अनजान हैं क्योंकि दोनों में से किसी को भी
develop
शाखा में विलय नहीं किया गया है । इसका मतलब है कि आपकोdevelop
शाखा के खिलाफ फिर से परीक्षण करना होगा जब दोनों विशेषताओं को वैसे भी विकसित शाखा में विलय कर दिया जाएगा। और आपको भविष्य में इसका परीक्षण करना याद रखना होगा। - यदि फ़ीचर ए और बी दोनों का परीक्षण और अनुमोदन किया जाता है, लेकिन जब एक विलय की पहचान की जाती है, तो दोनों विशेषताओं के लिए डेवलपर्स के दोनों का मानना है कि यह उनकी खुद की गलती / नौकरी नहीं है क्योंकि उनकी सुविधा शाखा परीक्षण से पहले है। संचार में एक अतिरिक्त ओवरहेड है, और कभी-कभी जो कोई भी संघर्ष को हल करता है वह निराश होता है।
ऊपर हमारी कहानी है। सीमित संसाधन के साथ, मैं हर जगह हर चीज के परीक्षण से बचना चाहूंगा। हम अभी भी इससे निपटने के लिए बेहतर तरीके की तलाश कर रहे हैं। मैं यह सुनना पसंद करूंगा कि अन्य टीमें इस तरह की परिस्थितियों को कैसे संभालती हैं।