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