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