पेशेवरों और टेस्ट संचालित विकास के विपक्ष

टेस्ट ड्रिवेन डेवलपमेंट (TDD) के पेशेवरों और विपक्ष क्या हैं?

टेस्ट ड्रिवेन डेवलपमेंट एक सॉफ्टवेयर डेवलपमेंट मेथोडोलॉजी है जिसके तहत आप लिखते हैं और Daud कोड लिखने से पहले परीक्षण का एक सेट।

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


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

  • इकाई परीक्षण करने का मतलब टीडीडी करना नहीं है। आप दूसरे के बिना पहले कर सकते हैं। वास्तव में, आप यूनिट परीक्षण (लेकिन ज्यादातर लोग करते हैं) के बिना टीडीडी कर सकते हैं, इस मामले में, लोग दूसरों के परीक्षण के साथ आम तौर पर इकाई परीक्षण के पूरक हैं। आपको जो भी सुनिश्चित करने की आवश्यकता है, वह स्वत: परीक्षण है, चाहे वे कुछ भी हों।
  • आप अपने कोड का परीक्षण करने के लिए, सफेद बॉक्स परीक्षण के लिए टीडीडी कर सकते हैं। लेकिन आप ब्लैक बॉक्स परीक्षण के लिए टीडीडी भी कर सकते हैं, जिसे अक्सर व्यवहार प्रेरित विकास कहा जाता है।

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


अब, टीडीडी के पेशेवरों और विपक्षों पर:



टेस्ट संचालित विकास के पेशेवरों

  • क्योंकि आप एक समय में छोटे परीक्षण लिख रहे हैं, यह आपके कोड को अधिक मॉड्यूलर बनाने के लिए बाध्य करता है (अन्यथा वे परीक्षण के लिए कठिन नहीं होंगे)। टीडीडी आपको अच्छे मॉड्यूलर डिजाइन के प्रमुख सिद्धांतों को सीखने, समझने और आंतरिक बनाने में मदद करता है।
  • टीडीडी अच्छी वास्तुकला को भी मजबूर करता है। अपनी कोड इकाई-परीक्षण योग्य बनाने के लिए, इसे ठीक से संशोधित करना चाहिए। पहले परीक्षणों को लिखना, विभिन्न वास्तु संबंधी समस्याएं पहले से सतह पर हैं।
  • आपके कोड को दस्तावेज़ों से बेहतर बनाया गया है (क्योंकि आप इसे हर समय चालू नहीं रखते हैं)।
  • कोड को बनाए रखने और रिफ्लेक्टर को आसान बनाता है। टीडीडी कार्यान्वयन प्रक्रिया के दौरान स्पष्टता प्रदान करने में मदद करता है और जब आप अभी-अभी लिखे गए कोड को रिफलेक्टर करना चाहते हैं तो सुरक्षा-नेट प्रदान करता है।
  • सहयोग को आसान और अधिक कुशल बनाता है, टीम के सदस्य एक-दूसरे के कोड को विश्वास के साथ संपादित कर सकते हैं क्योंकि परीक्षण उन्हें सूचित करेंगे यदि परिवर्तन अप्रत्याशित तरीके से कोड का व्यवहार कर रहे हैं।
  • क्योंकि TDD अनिवार्य रूप से कार्यान्वयन कोड लिखने से पहले आपको इकाई परीक्षण लिखने के लिए मजबूर करता है, कोड का फिर से भरना आसान और तेज हो जाता है। दो साल पहले लिखा गया रिफैक्टरिंग कोड है मुश्किल । यदि उस कोड को अच्छी इकाई परीक्षणों के सेट द्वारा बैकअप लिया जाता है, तो प्रक्रिया को बहुत आसान बना दिया जाता है।
  • दोषों को रोकने में मदद करता है - ठीक है, कम से कम शुरुआत में आपको डिजाइन या आवश्यकता के मुद्दों को खोजने में मदद करता है। टीडीडी डिजाइन समस्याओं के लिए प्रारंभिक चेतावनी प्रदान करता है (जब उन्हें ठीक करना आसान होता है)।
  • प्रोग्रामर वास्तव में उनके कोड को समझने में मदद करते हैं।
  • एक स्वचालित प्रतिगमन परीक्षण सूट बनाता है, मूल रूप से मुफ्त में। यानी आपको कार्यान्वयन कोड का परीक्षण करने के लिए इकाई परीक्षण लिखने के बाद समय बिताने की आवश्यकता नहीं है।
  • यह छोटे कदमों को प्रोत्साहित करता है और डिजाइन में सुधार करता है क्योंकि यह आपको सेटअप की सुविधा के लिए अनावश्यक निर्भरता में कटौती करता है।
  • यह आवश्यकताओं को स्पष्ट करने में मदद करता है क्योंकि आपको समवर्ती रूप से यह पता लगाना है कि आपको क्या इनपुट खिलाना है और आपको क्या उम्मीद है।
  • यूनिट परीक्षण विशेष रूप से एक सुरक्षा जाल के रूप में मूल्यवान हैं जब कोड को या तो नई सुविधाओं को बदलने या किसी मौजूदा बग को ठीक करने की आवश्यकता होती है। चूंकि सॉफ्टवेयर जीवन चक्र का रखरखाव 60 से 90% के बीच होता है, इसलिए यह कठिन हो जाता है कि इकाई परीक्षणों का एक अच्छा सेट बनाने के लिए समय लगने में कितना समय लगता है और यह परियोजना के जीवनकाल में बार-बार भुगतान कर सकता है।
  • लिखते समय परीक्षण भी आपको अपने इंटरफेस को परीक्षण किए जाने के लिए पर्याप्त रूप से साफ करने की कोशिश करने के लिए मजबूर करता है। जब तक आप कोड के एक निकाय पर काम नहीं करते, जब तक यह नहीं किया गया था, तब तक इसका लाभ देखना बहुत कठिन है, और किसी दिए गए टुकड़े पर व्यायाम करने और ध्यान केंद्रित करने का एकमात्र तरीका पूरे सिस्टम को चलाना और ब्रेक-पॉइंट सेट करना है। ।
  • 'मूर्ख' गलतियाँ लगभग तुरंत पकड़ी जाती हैं। यह डेवलपर्स को गलतियों को खोजने में मदद करता है जो हर किसी के समय को बर्बाद कर देगा यदि वे क्यूए में पाए गए थे


टेस्ट प्रेरित विकास की विपक्ष

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

दिलचस्प लेख