आपके पास कोई सिद्धांत नहीं है, लेकिन यह एक आम समस्या है। मुझे लगता है कि प्रत्येक टीम इसे अपने तरीके से हल करती है (या नहीं)।
साइड इफेक्ट्स
आप जो दुष्प्रभाव किसी भी समारोह के साथ इस मुद्दे के लिए जारी रहेगा। मैं पक्ष प्रभाव कार्यों मैं परीक्षण है कि कुछ या सभी को आश्वस्त करने के लिए मिल गया है निम्नलिखित:
- कि यह किया गया था/आमंत्रित नहीं किया गया
- समय की संख्या में यह कहा जाता था
- क्या तर्क थे इसे पास किया गया
- कॉल का ऑर्डर।
परीक्षण में यह आश्वासन आमतौर पर इनकैप्यूलेशन का उल्लंघन करने का मतलब है (मैं बातचीत और कार्यान्वयन के साथ जानता हूं)। जब भी आप ऐसा करते हैं तो आप हमेशा कार्यान्वयन के लिए परीक्षा को जोड़ देंगे। इससे आपको जब भी आप कार्यान्वयन/परीक्षण कर रहे कार्यान्वयन भागों को अपडेट करते हैं तो परीक्षण को अपडेट करना होगा।
पुन: प्रयोज्य Mocks
मैं महान प्रभाव के लिए पुन: प्रयोज्य mocks का उपयोग किया है। वे व्यापार-बंद है उनका कार्यान्वयन अधिक जटिल है क्योंकि इसे और अधिक पूरा करने की आवश्यकता है। आप रिफैक्टरों को समायोजित करने के लिए परीक्षण अद्यतन करने की लागत को कम करते हैं।
स्वीकृति TDD
एक अन्य विकल्प क्या अपने परीक्षण को बदलने के लिए है। चूंकि यह वास्तव में आपकी परीक्षण रणनीति को बदलने के बारे में है, यह हल्के ढंग से प्रवेश करने के लिए कुछ नहीं है। आप पहले थोड़ा विश्लेषण करना चाहते हैं और देख सकते हैं कि यह वास्तव में आपकी स्थिति के लिए उपयुक्त होगा या नहीं।
मैं यूनिट परीक्षणों के साथ टीडीडी करता था। मैं उन मुद्दों में भाग गया जो मुझे लगा कि हमें इससे निपटना नहीं था। विशेष रूप से रिफैक्टरों के आस-पास मैंने देखा कि हमें आमतौर पर कई परीक्षण अपडेट करना पड़ता था। ये रिफैक्टर कोड की एक इकाई के भीतर नहीं थे, बल्कि प्रमुख घटकों के पुनर्गठन के लिए थे। मुझे पता है कि बहुत से लोग कहेंगे कि समस्या अक्सर बड़े बदलाव थे, यूनिट परीक्षण नहीं। बड़े बदलावों के लिए आंशिक रूप से हमारी योजना/वास्तुकला का परिणाम होने के लिए शायद कुछ सच है। हालांकि, यह उन व्यवसायिक निर्णयों के साथ भी किया गया था जो दिशाओं में परिवर्तन का कारण बनते थे। इन और अन्य वैध कारणों से कोड में बड़े बदलावों की आवश्यकता का असर पड़ा। अंतिम परिणाम सभी परीक्षण अद्यतनों के परिणामस्वरूप बड़े रिफैक्टर अधिक धीमी और दर्दनाक हो रहे थे।
हम भी एकीकरण मुद्दों के कारण बग में भाग गए जो इकाई परीक्षण शामिल नहीं थे। हमने कुछ मैन्युअल स्वीकृति परीक्षण द्वारा किया था। स्वीकृति परीक्षण को यथासंभव कम स्पर्श के रूप में बनाने के लिए हमने वास्तव में बहुत कुछ किया। वे अभी भी मैन्युअल थे, और हमें लगा कि यूनिट परीक्षणों और स्वीकृति परीक्षण के बीच इतना पार था कि दोनों को लागू करने की लागत को कम करने का एक तरीका होना चाहिए।
तब कंपनी के छंटनी थीं। अचानक हमारे पास प्रोग्रामिंग और रख-रखाव पर फेंकने के लिए समान मात्रा में संसाधन नहीं थे। हमें परीक्षण सहित सभी चीजों के लिए सबसे बड़ी वापसी पाने के लिए धक्का दिया गया था। हमने जो कुछ भी किया था, उसे आम एकीकरण समस्याओं को कवर करने के लिए हमने आंशिक स्टैक परीक्षणों को जोड़कर शुरू किया। वे इतने प्रभावी साबित हुए कि हमने कम क्लासिक यूनिट परीक्षण करना शुरू कर दिया। हमने मैन्युअल स्वीकृति परीक्षण (सेलेनियम) से भी छुटकारा पा लिया। हमने धीरे-धीरे धक्का दिया जहां परीक्षणों ने परीक्षण शुरू किया जब तक कि हम अनिवार्य रूप से स्वीकृति परीक्षण नहीं कर रहे थे, लेकिन ब्राउज़र के बिना। हम किसी विशेष नियंत्रक को एक GET, POST या PUT विधि अनुकरण करेंगे और स्वीकृति मानदंडों की जांच करेंगे।
- डेटाबेस सही ढंग से अद्यतन किया गया था
- सही HTTP स्थिति कोड
- वापस आ गया था एक पृष्ठ वापस आ गया था कि:
- वैध HTML 4.01 था सख्त
- जानकारी हम भेजना चाहते थे निहित उपयोगकर्ता को वापस
हम कम बग्स समाप्त हो गया। विशेष रूप से लगभग सभी एकीकरण बग, और बड़े रिफैक्टरों के कारण बग लगभग पूरी तरह से गायब हो गए।
व्यापार-बंद थे। यह सिर्फ पेशेवरों को बाहर की स्थिति के लिए विपक्ष से दूर कर दिया। विपक्ष:
- परीक्षण आम तौर पर अधिक जटिल थे, और लगभग हर कोई कुछ दुष्प्रभावों का परीक्षण करता है।
- हम कुछ तोड़ने के बारे में बता सकते हैं, लेकिन यह यूनिट परीक्षण के रूप में लक्षित नहीं है, इसलिए हमें समस्या को ट्रैक करने के लिए और अधिक डिबगिंग करना होगा।
जब भी आपको कुछ मजाक करने की ज़रूरत होती है, तो पहले सोचें कि क्या आप हाथ से मॉक बना सकते हैं। आप अक्सर पाएंगे कि ऑन-द-फ्लाई मॉक आम तौर पर अत्यधिक जटिलता की गंध देता है। यदि ऐसा है तो मैन्युअल मैक्स बनाएं और ऑन-द-फ्लाई मैक्स –
पर विचार करें: http://en.wikipedia.org/wiki/Interface_segregation_principle – TrueWill