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