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