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