मैं यह बहुत ही सवाल पूछना चाहता था, यह देखने के लिए कि वास्तव में कितनी कंपनियां टीडीडी का अभ्यास कर रही थीं।
11 वर्षों में, मैं पेशेवर रूप से केवल पिछले दो संगठनों को TDD के बारे में जानता था (जो कि लगभग 5 साल के दिमाग तक फैला था, उस समय से पहले TDD उतना लोकप्रिय नहीं था जितना आज है)। मैं टीडीएस के लिए मेरी बिक्री पिच में खुदाई करने से पहले आपका पीछा करने और आपके सवाल का जवाब दूंगा :)
पिछली कंपनी में मैंने (मानविकी और विज्ञान संग्रहों के ऑनलाइन अकादमिक प्रकाशक) के लिए काम किया था, हमें पता था कि हमें टीडीडी का अभ्यास करने की जरूरत है लेकिन हम कभी भी वहां नहीं पहुंचे। हमारे बचाव में हमारे पास 250k कोड आधार था, इसलिए उस आकार के एक अस्थिर कोड आधार पर परीक्षणों को जोड़ने से यह असंभव लग रहा था (मुझे लगता है कि अब दोषी टाइपिंग!)। यहां तक कि हममें से सर्वश्रेष्ठ भी गलतियां करते हैं ।
जो भी TDD की एक छोटी राशि के साथ किया जाता है, वह जानता है कि भूरे रंग के अनट्रैस्टेबल कोड के लिए दर्दनाक रेट्रोफिटिंग टेस्ट कैसे हो सकते हैं ... प्राथमिक कारण निहित निर्भरताएं हैं (आप सभी लीवर को कोड से परिणाम प्राप्त करने के लिए नहीं खींच सकते - आप नकली नहीं कर सकते परिदृश्य) और एकल जिम्मेदारी सिद्धांत का उल्लंघन (परीक्षण जटिल हैं, विवादित हैं, बहुत अधिक सेटअप की आवश्यकता है और समझना मुश्किल है )।
हमने किसी भी रिलीज़ से पहले प्लेटफ़ॉर्म का परीक्षण करने के लिए अपनी क्यूए टीम (एक, शायद दो लोगों से लेकर आधा दर्जन या अधिक) की अस्थायी रूप से वृद्धि की । आर्थिक रूप से यह काफी महंगा समय था और आर्थिक रूप से, कुछ रिलीज को 'परीक्षण' पूरा करने में तीन महीने लगेंगे। तब भी हमें पता था कि हम मुद्दों के साथ शिपिंग कर रहे हैं, वे सिर्फ 'ब्लॉकर्स' या 'क्रिटिकल' नहीं थे, सिर्फ 'उच्च प्राथमिकता' वाले थे।
यदि आपके पास एक वर्ष का व्यावसायिक अनुभव है, तो आप सराहना करेंगे कि प्रत्येक कंपनी महत्वपूर्ण कार्यों का दावा करती है, और फिर उससे ऊपर एक उच्च प्राथमिकता स्तर का आविष्कार करती है, और सबसे अधिक संभावना यह है कि ऊपर भी - विशेष रूप से तब जब कोई ऊपर वाला किसी फीचर / बग को ठीक कर रहा हो। मैंने खुद को पीछे कर लिया ...
मुझे खुशी है कि मैं अपनी वर्तमान कंपनी (दूरसंचार, वेब और मोबाइल ऐप डेवलपमेंट हाउस) में टीडीडी का अभ्यास कर रहा हूं, जेनकिंस सीआई के साथ मिलकर अन्य स्थिर विश्लेषण रिपोर्ट (टेस्ट सूट पास पास करने के बाद सबसे उपयोगी होने वाला कोड कवरेज) दे रहा हूं । जिन परियोजनाओं पर मैंने TDD का उपयोग किया है, वे एक भुगतान प्रणाली और ग्रिड कंप्यूटिंग प्रणाली हैं।
बिक्री पिच ...
यह अक्सर गैर-तकनीकी टीम के सदस्यों के लिए स्वचालित परीक्षण को सही ठहराते हुए एक कठिन संघर्ष हो सकता है। परीक्षण लिखने से विकास प्रक्रिया में और अधिक काम होता है लेकिन ... अब जब आप परीक्षण में निवेश करेंगे, तो आप बाद में रखरखाव के प्रयास में बचत करेंगे। तुम सच में सिर्फ समय उधार ले रहे हो । उत्पाद जितना लंबा होगा, आप उतनी बड़ी बचत करेंगे - और यह आपको बड़े पुनर्लेखन से बचने में मदद करेगा ।
पहले परीक्षण का मतलब है कि आप पहले अपने इरादे को कोडित कर रहे हैं, और फिर अपने कोड की पुष्टि करके उस इरादे को पूरा करते हैं। यह आपके कोड को केवल वही करने के लिए फ़ोकस और डिस्टिल करता है जो और अभीष्ट नहीं है (कोई ब्लोट नहीं पढ़ें)। यह एक ही समय में एक निष्पादन योग्य विनिर्देश और प्रलेखन है (यदि आपका परीक्षण अच्छी तरह से लिखा गया है, और परीक्षण आपके सिस्टम कोड के रूप में पठनीय / साफ होना चाहिए, यदि अधिक नहीं!)।
गैर-प्रोग्रामर के पास (अक्सर) यह अंतर्दृष्टि नहीं होती है और इसलिए टीडीडी उनके लिए बहुत अधिक मूल्य नहीं रखता है, और इसे पहले रिलीज की तारीख के लिए डिस्पोजेबल शॉर्टकट के रूप में देखा जाता है।
प्रोग्रामिंग हमारा डोमेन है, और मेरे दिमाग में यह पेशेवर के रूप में हमारी जिम्मेदारी है , टीडीडी जैसे सर्वोत्तम अभ्यास पर सलाह देना। परियोजना प्रबंधकों को यह तय करने के लिए नहीं कि यह विकास के समय को कम करने के लिए किया गया है, यह उनके अधिकार क्षेत्र से बाहर है । उसी तरह वे आपको यह नहीं बताते कि किस फ्रेमवर्क, कैशिंग सॉल्यूशन या सर्च एल्गोरिथ्म का उपयोग करना है, वे आपको यह नहीं बताएंगे कि क्या आपको स्वचालित परीक्षण को नियोजित करना चाहिए।
में मेरी राय सॉफ्टवेयर विकास उद्योग (पूरे पर), वर्तमान में टूट गया है तथ्य यह है कि आपके सॉफ़्टवेयर के लिए परीक्षण कर रहा आदर्श नहीं है।
अन्य उद्योगों में यह चित्र: चिकित्सा, विमानन, ऑटोमोबाइल, सौंदर्य प्रसाधन, मुलायम खिलौने, मादक पेय आदि। मैंने अपने मंगेतर से एक उद्योग का नाम पूछा, जहां वे उत्पाद का परीक्षण नहीं करते हैं और वह नहीं कर सकती हैं!
शायद यह कहना अनुचित है कि कोई परीक्षण नहीं होता है क्योंकि यह होता है ... लेकिन स्वचालित परीक्षण के बिना कंपनियों में, यह बहुत मैनुअल / मानव है (क्लंकी पढ़ें और अक्सर त्रुटि प्रवण) प्रक्रिया।
एक बिंदु मैं आपके प्रश्न पर विचार करूंगा ...
वे आमतौर पर चाहते थे कि विकास तुरंत शुरू हो, या एक छोटे डिजाइन के बाद। एजाइल को और अधिक।
होने के नाते "फुर्तीली" परीक्षण के बिना नहीं आगे बढ़ने की सलाह है, पर सूचीबद्ध पहले सदस्य agilemanifesto.org है केंट बैक , XP और TDD के निर्माता!
अगर आप TDD में रुचि रखते हैं, या सिर्फ उन्हें नहीं पढ़ा है और एक उत्सुक प्रोग्रामर हैं (तो यह सही पढ़ रहे हैं?);
टेस्ट द्वारा बढ़ते ऑब्जेक्टेड ओरिएंटेड सॉफ्टवेयर गाइडेड
क्लीन कोड - रॉबर्ट सी मार्टिन ("अंकल बॉब") श्रृंखला
ये दोनों पुस्तकें एक-दूसरे की प्रशंसा करती हैं और कुछ पन्नों में बहुत कुछ बयां कर देती हैं।
यह सवाल पूछने के लिए धन्यवाद :)