2008-09-17 16 views
6

मैं इस बारे में उत्सुक हूं कि आप में से कितने लोगों ने ऑब्जेक्ट्स का मज़ाक उड़ाया है (जेएमॉक, एनएमॉक, राइनोमोक्स जैसे फ्रेमवर्क यूनिट परीक्षण फ्रेमवर्क के साथ हाथ में) आपकी दैनिक विकास प्रक्रिया में। आपके अनुभव क्या हैं?क्या ऑब्जेक्ट मॉकिंग बड़े पैमाने पर उपयोग किया जाता है?

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

उत्तर

5

हाल ही में एक परियोजना जिस पर मैंने काम किया था, हमने अपने यूनिट परीक्षण दृष्टिकोण में बड़े पैमाने पर नकली वस्तुओं का उपयोग किया। परियोजना 100% जावा थी और मामूली रूप से आकार (गैर-टिप्पणी कोड की लगभग 100,000 लाइनें)। यह एक स्विंग-आधारित डेस्कटॉप एप्लिकेशन था - और एकमात्र प्रभावी तरीका जिसे हमने यूजर इंटरफेस तर्क का परीक्षण करने के लिए पाया, एक एमवीसी संस्करण डिजाइन के माध्यम से था जो हमें स्वचालित परीक्षण के लिए वास्तविक स्विंग उपयोगकर्ता इंटरफ़ेस कक्षाओं के विकल्प के लिए नकली वस्तुओं का उपयोग करने की अनुमति देता था। हमने अपने डेटा एक्सेस लेयर (हाइबरनेट/डीएओ) के परीक्षण में बड़े पैमाने पर मॉकिंग का भी उपयोग किया।

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

2

मेरी स्थिति में मोजे वास्तव में अच्छा काम करते हैं। लेकिन मैं पाइथन का उपयोग कर रहा हूं, जो इतनी गतिशील है कि यह कई चीजों को परीक्षण करने में बहुत आसान बनाता है, बहुत आसान है।

आपकी तरह की स्थिति में, जब आवेदन मुख्य रूप से डेटा संचालित (जहां तक ​​मैं देखता हूं), मैक्स उतना उपयोगी नहीं हो सकता है। बस डेटा पास करने और इसे देखने के लिए बाहर परीक्षण के लिए पर्याप्त होना चाहिए। मैं बस यह सुनिश्चित करूँगा कि एप्लिकेशन मॉड्यूलरलाइज्ड पर्याप्त है, इसलिए यह दृष्टिकोण उचित रूप से छोटे घटकों पर लागू किया जा सकता है।

1

मॉकिंग किसी प्रकार की परियोजना में उपयोगी हो सकती है। लेकिन, कभी-कभी मजाक करना बहुत समय लगता है और इसका आरओआई कम है।

1

शेयरपॉइंट का परीक्षण करने की कोशिश कर रहा है ऐसा लगता है कि मॉकिंग एकमात्र तरीका है, और केवल typemock आपको सीलबंद कक्षाओं का नकल करने देगा।

1

मॉकिंग का उपयोग मेरे मामले में बहुत व्यापक रूप से किया जाता है। मोक्स आम तौर पर उन वर्गों के लिए होते हैं जिनमें बाहरी निर्भरताएं होती हैं, उदा। नेटवर्क, डेटाबेस, फाइल सिस्टम। यदि इनमें से कोई भी उपयोग नहीं किया जाता है तो इनमें से कोई भी परीक्षण में flakiness पेश कर सकते हैं।

यदि आप जिन मॉक्स को लिखने के लिए महंगे पाते हैं क्योंकि पॉप्युलेट करने के लिए बहुत सारे नकली डेटा हैं, तो आप कुछ पूर्व-जनसंख्या वाले डेटा ऑब्जेक्ट्स को स्थिरांक के रूप में सेट कर सकते हैं और अपने परीक्षण में उन्हें या थोड़ा संशोधित प्रतियों का उपयोग कर सकते हैं। यदि ऐसी डेटा ऑब्जेक्ट्स में बाहरी निर्भरताएं हैं, तो हो सकता है कि आप दो चिंताओं को अलग कर सकें।

1

डेव बौमन द्वारा आर्कऑब्जेक्ट्स से संबंधित यूनिट परीक्षण में उपयोग के लिए मैक्स की सामुदायिक लाइब्रेरी बनाने और बनाने के लिए एक पहल शुरू की गई है।अपने ब्लॉग और इस SVN भंडार महान जानकारी इकाई परीक्षण जीआईएस प्रणाली से संबंधित है

http://blog.davebouwman.net/CategoryView,category,Unit%2BTesting.aspx

http://svn2.assembla.com/svn/arcdeveloper/TestingUtilities/trunk/

संबंधित मुद्दे