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