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