हर रोज, व्यावहारिक रूप से बोलते हुए, मुझे लगता है कि यह पूरी तरह से संदर्भ पर निर्भर करता है ।
एक मेड-लार्ज टीम में, उच्च / बहुत उच्च मानकों (थिंकिंग, मिलिट्री, लार्ज स्केल, हाई बजट या बिज़नेस क्रिटिकल सिस्टम) पर काम कर रहे हैं, तो मुझे लगता है कि स्पष्ट रूप से "डिबगिंग" "परीक्षण का एक परिणाम" होना चाहिए , और वे स्पष्ट रूप से हैं बहुत अलग चीजें । आदर्श रूप से परीक्षण डिबगिंग (एक मंचन वातावरण में) की ओर जाता है और उत्पादन में हमें या तो शून्य के करीब की आवश्यकता होती है।
परीक्षण दायरे में विस्तृत है, नियमित और बहुत औपचारिक है - जबकि डिबगिंग एक विशेष प्रक्रिया है जो कभी-कभी तब होती है जब किसी विशेष विफलता को ठीक करने की आवश्यकता होती है - जो स्पष्ट नहीं है और सिस्टम की कार्यप्रणाली और परिणामी आउटपुट की गहन जांच की आवश्यकता होती है।
यहाँ मेरे दिमाग में परीक्षण कुछ आवश्यक है, जबकि डिबगिंग एक विशिष्ट उपकरण है जिसकी आवश्यकता केवल तभी होती है जब विफलता का संकल्प अपारदर्शी होता है।
मैं पूरी तरह से बड़ी टीमों और प्रणालियों के लिए टीडीडी में स्पष्ट उपयोगिता को समझता हूं , बस "छोटी गाड़ी" होने का जोखिम नहीं उठा सकता। यह स्पष्ट रूप से जटिल (अक्सर "बैक-एंड") सिस्टम के लिए बहुत कुछ समझ में आता है या यदि आउटपुट की तुलना में कोड में जटिलता का उच्च अनुपात है। तब "परीक्षण" में विफल होने पर कब और क्यों सूचित करने का एक यथार्थवादी मौका है। सिस्टम जो बहुत जटिल काम करते हैं और या स्पष्ट रूप से औसत दर्जे के आउटपुट में परिणाम देते हैं, वे आमतौर पर आसानी से परीक्षण योग्य होते हैं, और इसलिए परीक्षण डिबगिंग से अलग है। इन मामलों में परीक्षण दृढ़ता से एक प्रक्रिया आधारित है, जो अपेक्षाओं और वास्तविक आउटपुट के मिलान की पुष्टि या अस्वीकार करने की औपचारिक विधि आधारित है। परीक्षण हर समय होता है, और कभी-कभी हमें डिबगिंग की आवश्यकता के बारे में सूचित करता है।
यह प्यारा होगा अगर यह एक सर्वव्यापी सत्य था, मुझे यह अच्छा लगेगा अगर मेरे देव चक्रों को स्पष्ट रूप से परिभाषित बाइनरी आउटपुट (लाल, हरा) द्वारा सीमांकित किया गया था, लेकिन ...
मेरे मामले में (जो कि विशेष रूप से विशेष रूप से काम कर रहा है - छोटे-मध्य आकार पर 98% सोलो, अंडर-फंडेड वेब आधारित, डेटा केंद्रित कॉरपोरेट एडमिन सिस्टम पर काम करना) मैं वास्तव में यह नहीं देख सकता कि टीडीडी संभवतः मेरी मदद कैसे कर सकता है। या बल्कि "डिबगिंग" और "परीक्षण" लगभग समान हैं।
मुख्य रूप से हालांकि शब्द "परीक्षण" का उपयोग टीडीडी की कार्यप्रणाली से निकटता / निकटता से संबंधित है।
मुझे पता है कि यह एक पूरी तरह से, पूरी तरह से संयुक्त राष्ट्र-Zeitgeist है "गैर आस्तिक, दूर, दूर", कहने के लिए नीच-शांत चीज। लेकिन मेरे संदर्भ के बारे में सोचकर, एक व्यावहारिक टोपी के साथ, मैं अभी भी अस्पष्ट रूप से नहीं, अपनी बेतहाशा कल्पना में देखता हूं कि कैसे TDD संभवतः मुझे अपने ग्राहकों को पैसे के लिए अधिक मूल्य देने में मदद कर सकता है।
या यों कहें, मैं आम धारणा से बहुत असहमत हूं कि "परीक्षण" एक औपचारिक कोड आधारित प्रक्रिया है।
मेरी मूल आपत्ति (मेरे विशेष * संदर्भ * में लागू ) यह है कि ...
अगर मैं उस कोड को लिखता हूं जो मज़बूती से काम करता है - तो फिर मैं कैसे नरक का कोड लिखने वाला हूँ जो परीक्षण करने के लिए मज़बूती से काम करता है, संभवतः उप मानक कोड।
मेरे लिए मैंने कभी कोई उदाहरण नहीं देखा और न ही यह तर्क दिया कि (मेरे विशेष संदर्भ में) ने मुझे एक परीक्षण लिखने के बारे में सोचने के लिए परेशान करने के लिए पर्याप्त रूप से उत्साहित किया , मैं अभी कुछ हंसी-विहीन परीक्षण कोड लिख सकता हूं, हो सकता है कि "मेरी रिपॉजिटरी एक उपयोगकर्ता को वापस कर दे।" नाम के साथ इकाई == एक्स, जब मैं इसे ठीक - और केवल - "?" के लिए पूछता हूं, लेकिन इस स्ट्रीमिंग को लिखने में शायद मेरे लिए अधिक उपयोगिता है, हो सकता है कि इंटरनेट-वास्तव में यह केवल-शुद्ध-मूर्ख-टोंटी है- आत्म-संतुष्टिदायक-बेतहाशा अवगत-रक्त-उबलते-उबलते-बेकार-मूर्खतापूर्ण कूड़ेदान, लेकिन मुझे सिर्फ शैतान के वकील की भूमिका निभाने की आवश्यकता महसूस होती है। (उम्मीद है कि किसी ने मुझे रोशनी दिखाई और मुझे परिवर्तित कर देगा, शायद यह मेरे ग्राहकों को पैसे के लिए बेहतर मूल्य देगा?)।
कभी-कभी "डिबगिंग" कभी-कभी "परीक्षण" के समान होता है। इससे मेरा वास्तव में तात्पर्य है कि अपने दैनिक कामकाजी जीवन में मैं अपना कम से कम एक तिहाई समय विभिन्न ब्राउज़रों में अपने सिस्टम के स्थानीय संस्करण के साथ खेलने में बिताता हूं, अपने काम को तोड़ने की कोशिश में कई अलग-अलग निराला चीजों की सख्त कोशिश करता हूं और फिर जांच करता हूं जिन कारणों से यह विफल हुआ और उन्हें सही किया।
मैं टीडीडी मंत्र "लाल / हरा / रिफ्लेक्टर" में स्पष्ट उपयोगिता से 100% सहमत हूं, लेकिन मेरे लिए (कम-मेड बजट, सोलो देव आरआईए भूमि में काम कर रहा है) मैं वास्तव में किसी से प्यार करने के लिए कृपया मुझे दिखाएगा कि मैं कैसे कर सकता हूं संभवतः , तार्किक रूप से और वास्तविक रूप से वास्तविक रूप से वास्तविक रूप से पूर्ण (और अनिवार्य रूप से केवल) मेरे प्रयासों के आउटपुट जो वास्तव में वास्तविक मानव बातचीत से बंधे हुए हैं, के साथ बातचीत करने से अधिक ( सिर्फ संभावित रूप से त्रुटिपूर्ण परीक्षण कोड के रूप में) लिखने से कोई अतिरिक्त मूल्य मिलता है ।
मेरे लिए जब डेवलपर्स "परीक्षण" के बारे में बात करते हैं तो यह आमतौर पर टीडीडी का अर्थ है।
मैं कोड करने की कोशिश करता हूं जैसे कि परीक्षण थे, मुझे लगता है कि सभी पैटर्न / अभ्यास और रुझान जो इस सभी परीक्षण केंद्रित विकास को प्रोत्साहित करते हैं, शानदार और सुंदर हैं, लेकिन मेरे लिए मेरी छोटी दुनिया "परीक्षण" में अधिक कोड नहीं लिख रहा है, वास्तव में वास्तविक दुनिया का परीक्षण इसे यथार्थवादी तरीके से करता है, और यह वस्तुतः डिबगिंग के समान है, या बल्कि यहां सक्रिय परिवर्तन "डीबगिंग" है जो मानव, आउटपुट केंद्रित गैर स्वचालित "परीक्षण" का प्रत्यक्ष परिणाम है। यह कुछ स्वचालित और औपचारिक के रूप में "परीक्षण" के आम तौर पर स्वीकार किए गए दृष्टिकोण के विपरीत है, और कुछ मानव और तदर्थ या असंरचित के रूप में "डिबगिंग" है।
यदि लक्ष्य वास्तव में पैसे / प्रयास के लिए मूल्य है, और आप वेब आधारित इंटरैक्टिव अनुप्रयोग बना रहे हैं, तो प्रयास का आउटपुट वेब पेज हैं और बहुत अनिवार्य रूप से वे मानव इनपुट पर कैसे प्रतिक्रिया करते हैं - इसलिए परीक्षण द्वारा "परीक्षण" सबसे अच्छा है वास्तविक मानवीय अंतःक्रिया के माध्यम से वे वेब पृष्ठ। जब यह इंटरैक्शन अप्रत्याशित या अवांछनीय आउटपुट की ओर जाता है, तो "डीबगिंग" होता है। डिबगिंग भी कार्यक्रम राज्य के वास्तविक समय निरीक्षण के विचार से निकटता से संबंधित है। परीक्षण आम तौर पर स्वचालन के साथ जुड़ा हुआ है जो मुझे लगता है कि अक्सर एक दुर्भाग्यपूर्ण संघ है।
यदि लक्ष्य वास्तव में प्रयास के लिए मूल्य है, और स्वचालित परीक्षण कुशल और अत्यधिक लाभदायक है, जबकि डिबगिंग या तो उस परीक्षण का एक आउटपुट है, या स्वचालित परीक्षण के लिए खराब विकल्प है, तो दुनिया में दूसरी सबसे अधिक देखी जाने वाली वेबसाइट क्यों है (फेसबुक) ) तो अक्सर स्पष्ट रूप से स्पष्ट (उपयोगकर्ताओं के लिए, लेकिन स्पष्ट रूप से परीक्षण टीम और परीक्षण कोड नहीं) कीड़े के साथ भरा?
हो सकता है कि इसकी वजह यह है कि वे हरे रंग की रोशनी को आश्वस्त कर रहे हैं और वास्तव में अपने काम के आउटपुट का उपयोग करना भूल रहे हैं?
क्या कई डेवलपर्स को लगता है कि परीक्षण कुछ ऐसा है जो आप कोड के साथ करते हैं, और डिबगिंग कुछ ऐसा है जो आप कभी-कभी आईडीई के साथ करते हैं क्योंकि एक आइकन लाल हो जाता है और आप काम नहीं कर सकते? मुझे लगता है कि इन शब्दों में उनके साथ जुड़े दुर्भाग्यपूर्ण मूल्य निर्णय हैं, जो आम तौर पर उम्मीदों और आउटपुट के बीच अंतराल को बंद करने के लिए हमें जो ध्यान केंद्रित करना चाहिए, उसके व्यावहारिक वास्तविकता को अस्पष्ट करते हैं।