यह एक महत्वपूर्ण अंतर है, लेकिन दुर्भाग्य से आप कभी भी समझौता नहीं करेंगे। समस्या यह है कि अधिकांश डेवलपर्स इन्हें अपने दृष्टिकोण से परिभाषित करते हैं। यह प्लूटो पर बहस के समान है। (यदि यह सूर्य के करीब होता तो क्या यह एक ग्रह होता?)
इकाई परीक्षण को परिभाषित करना आसान है। यह CUT ( कोड अंडर टेस्ट ) का परीक्षण करता है और कुछ नहीं। (खैर, जितना संभव हो उतना कम।) इसका मतलब है कि नकली, नकली, और जुड़नार।
स्पेक्ट्रम के दूसरे छोर पर कई लोग हैं जो सिस्टम एकीकरण परीक्षण कहते हैं । यह जितना संभव हो उतना परीक्षण कर रहा है, लेकिन अभी भी अपने CUT में बग ढूंढ रहा है।
लेकिन बीच के विशाल विस्तार के बारे में क्या?
- उदाहरण के लिए, क्या होगा यदि आप CUT से थोड़ा अधिक परीक्षण करते हैं? क्या होगा यदि आप एक फिबोनाची फ़ंक्शन को शामिल करते हैं, बजाय एक स्थिरता का उपयोग किए जिसे आपने इंजेक्ट किया था? मैं उस कार्यात्मक परीक्षण को कहूंगा , लेकिन दुनिया मुझसे असहमत है।
- यदि आप शामिल हैं
time()या rand()? या अगर आप फोन करते हैं तो क्या होगा http://google.com? मैं उस सिस्टम टेस्टिंग को कॉल करूंगा , लेकिन फिर से, मैं अकेला हूं।
यह बात क्यों है? क्योंकि सिस्टम-परीक्षण अविश्वसनीय हैं। वे आवश्यक हैं, लेकिन वे कभी-कभी आपके नियंत्रण से परे कारणों के लिए असफल होंगे। दूसरी ओर, कार्यात्मक परीक्षण हमेशा पास होना चाहिए, बेतरतीब ढंग से विफल नहीं होना चाहिए; यदि वे तेज़ हैं, तो वे आपके आंतरिक कार्यान्वयन के लिए बहुत सारे परीक्षण लिखे बिना टेस्ट-ड्रिवेन डेवलपमेंट का उपयोग करने के लिए शुरू से ही उपयोग किए जा सकते हैं। दूसरे शब्दों में, मुझे लगता है कि यूनिट-टेस्ट से अधिक परेशानी हो सकती है, क्योंकि वे मेरे लायक हैं और मेरी अच्छी कंपनी है ।
मैंने 3 अक्षों पर परीक्षण किए, यूनिट-टेस्टिंग में उनके सभी शून्य के साथ :
- फ़ंक्शनल-टेस्टिंग: वास्तविक कोड का उपयोग करके अपने कॉल-स्टैक को गहरा और गहरा करें।
- एकता परीक्षण: उच्च और उच्च ऊपर अपने कॉल-ढेर; दूसरे शब्दों में, कोड का उपयोग करके अपने CUT का परीक्षण करें जो इसका उपयोग करेगा।
- सिस्टम-परीक्षण: अधिक से अधिक अप्राप्य संचालन (O / S अनुसूचक, घड़ी, नेटवर्क, आदि )
एक परीक्षा आसानी से सभी 3 हो सकती है, अलग-अलग डिग्री तक।