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