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