क्या मुझे यह साबित करने के लिए परीक्षण लिखना चाहिए कि कोड हटाना एक बग को ठीक करता है?


14

कभी-कभी मैं उस स्थिति में चला जाऊंगा, जहां बग को ठीक करने के लिए जरूरी है कि मैं कोड के एक हिस्से को हटा दूं। TDD शुद्ध (मुझे लगता है) एक असफल परीक्षण लिखने की वकालत करेगा, कोड को हटा देगा, फिर परीक्षण पास देखना होगा।

अब, यह सच है कि कुछ कोड हटा दिए गए थे, यह परखने में अजीब लगता है। ज़रूर, मुझे लगता है कि यह सुनिश्चित करेगा कि कोई भी स्रोत नियंत्रण में न खोदे और उस कोड को वापस डाल दे, लेकिन क्या यह इसके लायक है? यदि यह इसके लायक है, तो यह निश्चित रूप से कोड के लिए एक परीक्षण लिखने की तुलना में कम मूल्यवान लगता है जिसे जोड़ा गया है , है ना?


8
मुझे लगता है कि कोई भी प्रतिगमन परीक्षण उपयोगी है, भले ही बग को कैसे तय किया गया हो
इस्माइल बदावी

1
परीक्षण कोड को हटा नहीं देता है - परीक्षण बग को तय करता है ...
user253751

जवाबों:


50

आप इसे गलत तरीके से देख रहे हैं। परीक्षण यह नहीं मानता है कि कोड हटा दिया गया था। परीक्षण एक निश्चित कार्यक्षमता का दावा करता है

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

फिर भी एक TDD नजरिए से इसे देखो करने के लिए एक और तरीका है वह इस प्रकार है: जब आप जानते हैं कि कोड फिक्स बग और आप को हटाने कि तो आश्चर्य एक परीक्षण लिखने के लिए है कि क्या आप पहले से ही TDD गलत किया था। एक बार जब आप बग पर काम करना शुरू कर देते हैं, तो आपको पहले उस परीक्षण को लिखना चाहिए जो असफल होने से बग की उपस्थिति सुनिश्चित करता है। केवल बाद में आप वास्तविक बग को ठीक करते हैं - जिसके लिए कोड हटाने की आवश्यकता हो सकती है या नहीं - और परीक्षण पास करें। आप जो सवाल पूछ रहे हैं, वह उस तरीके से भी नहीं उठता।


3
+1, लेकिन मैं निम्नलिखित स्थिति की कल्पना कर सकता हूं: हटाए गए कोड में कुछ बेतुकी कार्यक्षमता शामिल है जो किसी ने जोड़ा जो समस्या डोमेन को सही ढंग से नहीं समझता था। अब, एक कोड समीक्षा के दौरान, एक अन्य देव देखता है कि पूरा हिस्सा वास्तव में बकवास है और कोड हटा दिया जाएगा। इस तरह के बकवास व्यवहार के लिए बहुत सारे परीक्षण होने के बाद भी आपके टेस्ट सूट में सूजन आ सकती है।
डॉक्टर ब्राउन

2
स्पष्ट रूप से हटाए गए कार्यक्षमता ने कुछ इनपुट / आउटपुट को गलत तरीके से संभाला। स्पष्ट रूप से आगे किसी को इस तरह से समस्या का गलत अर्थ हो सकता है। अगर आपको डर है कि सूट का ब्लोट टेस्ट करता है, तो मुझे नहीं लगता कि टीडीडी आपके लिए है। वैसे भी टेस्ट सूट ब्लोट क्या है?
डोरस

3
@DocBrown: वे TDD कर रहे हैं, तो कुछ परीक्षण है जो होना चाहिए की आवश्यकता है कि बेतुका कार्यक्षमता, अन्यथा वे भी पहली जगह में है कि कोड लिखने की अनुमति दी गई है नहीं होता! याद रखें, आपको केवल टेस्ट पास करने के लिए कोड की पूर्ण न्यूनतम राशि लिखने की अनुमति है। अगर कोई नहीं है इस तरह के एक परीक्षण, तो कोड कभी नहीं पहली जगह में लिखा गया है चाहिए और यह सिर्फ हटाया जा सकता है। यदि कोई ऐसा परीक्षण है जो व्यवहार को बेतुका बनाता है, तो उस परीक्षा को हटा दिया जाना चाहिए, और अब हम उसी मामले में हैं जिसका मैंने पहले वर्णन किया था: परीक्षण समाप्त हो गया है, कोड हटाएं।
जोर्ग डब्ल्यू मित्तग

दोनों मामलों में, आप परीक्षण सूट में कभी भी कोई परीक्षण नहीं जोड़ते हैं, और दूसरे मामले में, आप एक को भी हटा देते हैं । हालांकि, अगर यह पता चला है कि परीक्षण वास्तव में समझ में आता है, ठीक है, तो कार्यक्षमता बिल्कुल भी बेतुका नहीं थी।
जोर्ग डब्ल्यू मित्तग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.