यूनिट MVC पैटर्न का प्राथमिक उद्देश्य परीक्षण है?


14

हाल ही में एक साक्षात्कार में, एक प्रश्न था 'हम एमवीसी का उपयोग क्यों करते हैं?' मैंने बस जवाब दिया कि यह बहुत करीब है, असली दुनिया के कई सिस्टम हैं! मेनटेनेंस, स्कैलेबिलिटी आदि के बारे में बताए गए लाभों के बारे में बताया, लेकिन वे आश्वस्त नहीं थे और अंत में मुझे बताया कि MVC का उपयोग मुख्य रूप से किया जाता है क्योंकि यह 'आसान यूनिट परीक्षण सक्षम करता है'।

जबकि मुझे पता है कि उनका वैध बिंदु है, मुझे अभी भी संदेह है अगर यह प्रमुख कारण है क्योंकि (i) भले ही मैं यूनिट टेस्टेसिस नहीं लिखने का फैसला करता हूं, एमवीसी एक संभावित विकल्प है (ii) कई जीयूआई सिस्टम जहां यूनिट टेस्टकेस नहीं हैं MVC का पालन करें।

तो सवाल है 'क्या यूनिट टेस्टिंग MVC पैटर्न का प्राथमिक उद्देश्य है?'

संपादित करें: मेरा मानना ​​है कि वे टेस्ट ड्रिवेन डेवलपमेंट / राइटिंग न्निट टेस्टेसिस का आसानी से उल्लेख कर सकते हैं। ऐसा इसलिए है क्योंकि हम मॉडल के लिए टेस्टकेस लिख सकते हैं (बशर्ते कि दृश्य बिल्कुल मॉडल के राज्य परिवर्तनों को प्रतिबिंबित कर रहा है) -प्लीज मुझे गलत होने पर सही करें।


11
आपने साक्षात्कार नहीं दिया, क्या आपने? यदि नहीं, तो आप भाग्यशाली हैं। मैं ऐसी कंपनी में शामिल नहीं होऊंगा जिसमें शुरू से ही बहुत गलत मानसिकता है। :) इकाई परीक्षण निश्चित रूप से प्राथमिक उद्देश्य नहीं है। यह इकाई परीक्षण में मदद कर सकता है क्योंकि चिंता सब अलग हो गई, लेकिन निश्चित रूप से प्राथमिक उद्देश्य नहीं है।
रुडी

4
याद रखें कि साक्षात्कार दोनों तरह से काम करता है। आप उन्हें परख रहे हैं जितना वे आपको परख रहे हैं। आपको बस एक लाल झंडा मिला है: इस कंपनी में मत जाओ। उनके पास कोई सुराग नहीं है, लेकिन इससे भी बदतर, लगता है कि वे यह महसूस नहीं करने के लिए अर्धव्यास करते हैं, इसलिए सुधार की कोई उम्मीद नहीं है। यदि आप कंपनी में जाने के लिए चुनते हैं, तो आप कई काफ्कास्क स्थितियों का सामना करेंगे।
deadalnix

@ रूडी नहीं मैंने पास नहीं किया: पी, यह एक अग्रणी निवेश बैंक का देव केंद्र था। इसके अलावा, लोग अन्य सवालों के साथ अच्छे और बहुत प्रामाणिक दिखते थे और यही कारण है कि मैं इससे भ्रमित हो गया।
WinW

@deadalnix, हाँ सच है..यहाँ के जवाब देखने के बाद मैं वही करूँगा। लेकिन यहाँ पोस्ट करने से पहले मुझे यकीन नहीं था।
WinW

मैं पूरी तरह से डेडलिंक से सहमत हूं। इस कंपनी में मत जाओ।
रूडी

जवाबों:


33

प्राथमिक उद्देश्य "चिंताओं का पृथक्करण" होगा, जैसा कि मॉडल, दृश्य और नियंत्रक सभी की अलग-अलग जिम्मेदारियां हैं।

मूल Xerox PARC कागज के लेखक कहा गया है कि:

एमवीसी का अनिवार्य उद्देश्य मानव उपयोगकर्ता के मानसिक मॉडल और कंप्यूटर में मौजूद डिजिटल मॉडल के बीच की खाई को पाटना है।

यदि यूनिट-परीक्षण प्राथमिक उद्देश्य था, तो कोई भी आसानी से यूनिट-परीक्षण के विचार कर पाएगा। इकाई-परीक्षण परियोजनाओं / चौखटे के परिदृश्य पर एक नज़र से पता चलता है कि यह दावे के विपरीत है। आम तौर पर दृश्य का परीक्षण करने के लिए एकीकरण और कार्यात्मक परीक्षण का उपयोग किया जाएगा।


2
मैं कहूंगा कि प्राथमिक उद्देश्य डायरेक्ट मैनिपुलेशन मेटाफ़ोर (जो मूल रूप से उद्धरण कहते हैं) और यूज़र एम्पावरमेंट को सक्षम कर रहे हैं (यह मूल रूप से कल्पना की गई थी कि केवल मॉडल प्रोग्रामर द्वारा लिखे जाएंगे, व्यूज़ एंड कंट्रोलर्स एंड यूज़र्स के लिए लिखे जाएंगे)।
जोर्ग डब्ल्यू मित्तग

14

मेरी राय में, जवाब एक फर्म 'नहीं' है। शायद यह मुख्य लाभ था जो इस विशिष्ट संगठन में देखा गया था, लेकिन मैं इसे 'प्राथमिक उद्देश्य' नहीं कहूंगा।

मुझे लगता है कि यह सब एक तरह से MVC को लागू करना मुश्किल नहीं होगा, यह इकाई परीक्षण के लिए बहुत मुश्किल है (बिल्ली - जिस तरह से मैंने पहली बार किया वह शायद ही परीक्षण योग्य था)।

दूसरी ओर, कोई यह कह सकता है कि बहुत अधिक पैटर्न (सिंगलटन जैसी चीजों को छोड़कर) यूनिट परीक्षण की सुविधा देता है, क्योंकि वे सबसे अधिक बार डिकम्पलिंग को बढ़ावा देते हैं - लेकिन क्या यह उनका 'प्राथमिक उद्देश्य' है? मुश्किल से।


12

इकाई परीक्षण के ज्ञात होने से पहले एमवीसी (बस अधिकांश डिजाइन पैटर्न के रूप में) आसपास था। GoF पुस्तक 1994 में प्रकाशित हुई थी - और वे केवल उन पैटर्नों का दस्तावेजीकरण कर रहे थे, जो वर्षों से उपयोग में आ रहे हैं (यदि दशकों नहीं)। (और इसमें इकाई परीक्षण का कोई उल्लेख नहीं है।) इकाई परीक्षण के बारे में, मैं "सार्वजनिक" होने के बारे में एक सटीक समय का पता नहीं लगा सकता - मैं व्यक्तिगत रूप से चरम प्रोग्रामिंग से संबंधित लेखों में पढ़ा हूं, और पहली XP पुस्तक 1999 में बाहर आया।

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


समयरेखा संदर्भ एक अच्छा उल्लेख है- तार्किक रूप से तर्क का समर्थन करता है।
WinW

दिनांक के साथ samll मुद्दा प्रतीत हो रहा है। heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html कहते हैं, "MVC की कल्पना 1978 में एक विशेष समस्या के लिए डिज़ाइन समाधान के रूप में की गई थी"। कोई चिंता नहीं ... फिर भी आपका तर्क अच्छा है- इकाई परीक्षण शुरू होने से पहले MVC था।
WinW

कम से कम 1980 के बाद से यूनिट परीक्षण किया गया है। मैं तब अपना करियर शुरू कर रहा था और हमारे द्वारा काम की गई कुछ परियोजनाओं पर यूनिट परीक्षण हुआ था (और तब यह एक नए विचार की तरह नहीं लगता था)। अभी हमारे पास पूर्व निर्मित ढांचा नहीं था।
ग्रीनमैट

2
@GreenMatt, मुझे पता है कि केंट बेक द्वारा इकाई परीक्षण का आविष्कार नहीं किया गया था, बस पुन: उपयोग :-) लेकिन एक्सएपी और एगाइल ने इसे व्यापक रूप से प्रचारित करने के लिए शुरू करने से पहले AFAIK अपेक्षाकृत अज्ञात था।
पेर्ट तोर्क

@ Péter Török: मुझे याद है 1) कॉलेज के लिए अलग-अलग कार्यों के लिए अलग-अलग कार्यों का परीक्षण करने के लिए अपना खुद का सरल कोड लिखना (1980 के मध्य में मेरे लिए) और यह कि मुझे किसी और से विचार मिला; 2) 80 या 90 के दशक में वाटरफॉल मॉडल के बारे में और "कोडिंग और यूनिट टेस्टिंग" (बनाम सिर्फ "कोडिंग") नामक एक चरण के साथ पेपर पढ़ने के चित्रण को देखते हुए। (क्षमा करें, मुझे याद नहीं है कि कहां, इसलिए उद्धरण नहीं दे सकते।) इस प्रकार, यूनिट परीक्षण लगभग काफी समय से विकसित हो रहा है
ग्रीनमैट

2

मुझे लगता है कि नहीं, यूनिट परीक्षण में आसानी एक लाभ है, लेकिन एमवीसी का उपयोग करते समय आपके द्वारा सूचीबद्ध कारणों के साथ लाभ का एक संग्रह। यह कहना कि MVC का उपयोग करने का एक ही प्राथमिक कारण एक गलती है। ऐसा लगता है कि कंपनी इकाई परीक्षण की सुविधा के लिए MVC को चुनती है, इसलिए उन्हें लगता है कि यह प्राथमिक कारण है। व्यक्तिगत रूप से एमवीसी का उपयोग करने के मेरे कारण वेब रूपों की तुलना में इसकी सादगी है जो इसे डिजाइन करना और बनाए रखना आसान बनाता है, लेकिन किसी भी प्रौद्योगिकी का उपयोग करने के लिए प्रत्येक व्यक्ति / कंपनी के अपने कारण होंगे।


0

ASP.NET MVC दुनिया में, ASP.NET में कई सुधारों को फ्रेमवर्क में ही शामिल किया गया है। इस डिज़ाइन पैटर्न का मुख्य उद्देश्य उपयोगकर्ता इंटरफ़ेस से व्यावसायिक तर्क को अलग करने के लिए बेहतर रखरखाव, बेहतर परीक्षण क्षमता और अनुप्रयोग के लिए एक क्लीनर संरचना पर ध्यान केंद्रित करना है।

ASP.NET MVC में कुछ क्षमताएं होती हैं जो इसे चुनने का सबसे अच्छा विकल्प बनाती हैं कि आपको निम्नलिखित में से एक या अधिक की आवश्यकता है:

उत्पन्न HTML पर नियंत्रण का एक उच्च स्तर : वेब प्रपत्रों के विपरीत, ASP.NET MVC में दृश्य HTML को ठीक उसी तरह प्रस्तुत करते हैं जैसे आप उन्हें बताते हैं। हाल ही में, इस क्षेत्र में वेब फॉर्म में सुधार किया गया है लेकिन अभी भी एमवीसी के नियंत्रण का स्तर नहीं है।

आसान इकाई परीक्षण : ASP.NET MVC के साथ, परीक्षण-संचालित विकास (TDD) जैसे परीक्षण पैटर्न का पालन करना बहुत आसान है। वेब फॉर्म में जटिल घटना जीवनचक्र के कारण, नियंत्रण-आधारित ढांचे के शीर्ष पर, TDD MVC के साथ बहुत आसान है।

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

कुछ अन्य लाभ हैं:

• एमवीसी पैटर्न ही आवेदन की कार्यक्षमता को तीन मुख्य भागों, मॉडल, दृश्य और नियंत्रक में स्पष्ट रूप से अलग करके जटिलता का प्रबंधन करना आसान बनाता है।

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

• ASP.NET MVC परीक्षण-संचालित विकास (TDD) के लिए बेहतर सहायता प्रदान करता है।

• ASP.NET MVC वेब अनुप्रयोगों के लिए अच्छी तरह से काम करता है जो डेवलपर्स की बड़ी टीमों द्वारा समर्थित होते हैं और वेब डिज़ाइनर के लिए जिन्हें HTML पर उच्च स्तर के नियंत्रण की आवश्यकता होती है। ASP.NET MVC अनुरोध प्रसंस्करण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.