কেন এমভিসি ভিউগুলি পরীক্ষা করা হচ্ছে?


23

আমি বর্তমানে একটি এএসপি. নেট এমভিসি অ্যাপ্লিকেশনটির ভিত্তি স্থাপন করছি এবং আমি লিখতে প্রস্তুত থাকতে হবে কি ধরণের ইউনিট-পরীক্ষা পরীক্ষা করা উচিত। আমি একাধিক জায়গায় লোকদের মূলত বলেছি যে 'আপনার মতামত পরীক্ষা করতে বিরক্ত করবেন না, কোনও যুক্তি নেই এবং এটি তুচ্ছ এবং একটি সংহতকরণ পরীক্ষায় আবৃত হবে'।

আমি বুঝতে পারি না এটি কীভাবে গৃহীত জ্ঞানের হয়ে উঠেছে। ইন্টিগ্রেশন টেস্ট ইউনিট পরীক্ষার চেয়ে সম্পূর্ণ ভিন্ন উদ্দেশ্যে পরিবেশন করে। আমি যদি কিছু ভাঙ্গি, আমি যখন আমার ইন্টিগ্রেশন পরীক্ষাগুলি ভাঙ্গি তখন আমি আধ ঘন্টা পরে জানতে চাই না, আমি তাত্ক্ষণিকভাবে জানতে চাই।

নমুনা পরিস্থিতি: বলুন আমরা গ্রাহক সত্তার সাথে একটি স্ট্যান্ডার্ড সিআরইউডি অ্যাপ্লিকেশন নিয়ে কাজ করছি। গ্রাহকের একটি নাম এবং ঠিকানা রয়েছে। পরীক্ষার প্রতিটি স্তরে, আমি গ্রাহক পুনরুদ্ধার যুক্তি নাম এবং ঠিকানা উভয়ই সঠিকভাবে পেয়েছে তা যাচাই করতে চাই gets

সংগ্রহস্থলের ইউনিট-পরীক্ষা করতে, আমি ডাটাবেস হিট করার জন্য একটি ইন্টিগ্রেশন টেস্ট লিখি। ব্যবসায়ের নিয়মগুলি ইউনিট-টেস্ট করার জন্য, আমি সংগ্রহস্থলটিকে উপহাস করি, ব্যবসায়ের নিয়মগুলিতে উপযুক্ত ডেটা ফিড করি এবং আমার প্রত্যাশিত ফলাফলগুলি ফিরে এসেছে কিনা তা যাচাই করি।

আমি কী করতে চাই: ইউআই -কে একক-পরীক্ষার জন্য, আমি ব্যবসায়ের নিয়মগুলি উপহাস করি, আমার প্রত্যাশিত গ্রাহক উদাহরণটি সেটআপ করি, ভিউ রেন্ডার করি এবং যাচাই করি যে ভিউটিতে আমি উল্লিখিত উদাহরণটির জন্য উপযুক্ত মান রয়েছে।

আমি যা করতে গিয়ে আটকেছি : সংগ্রহস্থলের ইউনিট-পরীক্ষা করার জন্য, আমি একটি ইন্টিগ্রেশন টেস্ট লিখি, একটি উপযুক্ত লগইন সেটআপ করি, ডাটাবেজে প্রয়োজনীয় ডেটা তৈরি করি, একটি ব্রাউজার খোলাম, গ্রাহককে নেভিগেট করতাম এবং ফলিত পৃষ্ঠায় যথাযথ উপস্থিতি যাচাই করি আমি যে উদাহরণটি উল্লেখ করেছি তার মানগুলি।

আমি বুঝতে পারি যে উপরে বর্ণিত দুটি পরিস্থিতির মধ্যে ওভারল্যাপ রয়েছে তবে পরীক্ষাগুলি সেটআপ করতে এবং সম্পাদনের জন্য সময় এবং প্রচেষ্টার মূল পার্থক্য রয়েছে।

যদি আমি (বা অন্য কোনও দেব) ভিউ থেকে ঠিকানা ক্ষেত্রটি সরিয়ে ফেলি, আমি এটি আবিষ্কারের জন্য ইন্টিগ্রেশন পরীক্ষার জন্য অপেক্ষা করতে চাই না। আমি চাই এক ইউনিট-টেস্টে আবিষ্কার এবং পতাকাঙ্কিত হয়েছি যা প্রতিদিন একাধিকবার পায়।

আমি অনুভব করি যে আমি কিছু মূল ধারণাটি উপলব্ধি করছি না। এমভিসি ভিউয়ের বৈধতা সম্পর্কে তাত্ক্ষণিক পরীক্ষার প্রতিক্রিয়া চাওয়া কেন খারাপ জিনিস তা কেউ ব্যাখ্যা করতে পারেন? (বা খারাপ না হলে, প্রতিক্রিয়া জানার প্রত্যাশিত উপায় নয়)


1
"To unit-test the repository, I write an integration test"কিসের অপেক্ষা? এটি সংগ্রহস্থলের ইউনিট পরীক্ষা নয়। আপনি এটির জন্য পরীক্ষাটি স্বয়ংক্রিয় করছেন, তবে পরীক্ষার অধীনে কোডটিতে এখনও ডএএল এবং ডাটাবেস অন্তর্ভুক্ত রয়েছে। ভান্ডারটি পরীক্ষা করার জন্য আপনার ব্যবসার বিধিগুলির জন্য আপনার নিজের মতো করে এটি আলাদা করা উচিত।
StuperUser

প্রত্যাশিত হিসাবে রেন্ডার করা ভিউটিকে পরীক্ষা করার এককটি হ'ল ইউনিট টেস্টিং যা আপনার টেম্প্লেটিং ইঞ্জিনটি কাজ করে। এটি আপনার সংকলিত সি পরীক্ষার ইউনিটের মতো মেশিন কোডের নির্দিষ্ট কিছু অংশ রয়েছে, আপনার ইউনিটটি আপনার কোড নয়, সংকলকটি পরীক্ষা করছে।
রায়নস

2
@ রায়নস সম্মানজনকভাবে, আমি একমত হতে চাই না। যদি আমি (বা অন্য কোনও বিকাশকারী) অন্যভাবে ইউআই ক্ষেত্রে একটি ডেটা অ্যাট্রিবিউট রেন্ডার করার জন্য ভুলভাবে ইউআইকে ওয়্যার করে রাখি (উদাহরণস্বরূপ, 'লাস্ট নেম ফিল্ডে' প্রথম নাম '), এর টেম্প্লেটিং ইঞ্জিনের সাথে কোনও সম্পর্ক নেই এটি কোনও ডাল বা বিআর ইস্যু .. এটি স্পষ্টতই একটি সমস্যা যা কেবলমাত্র দর্শনেই প্রকাশিত হবে
পিটার বার্নিয়ার

1
@ পিটারবার্নিয়ার আপনার একটি ভাল পয়েন্ট রয়েছে তবে "সংকলকটি কাজ করে কিনা তা পরীক্ষা করে" এবং "আমার কোডটি কাজ করে কিনা তা পরীক্ষা করে" এর মধ্যে লাইনটি সংজ্ঞায়িত করা আমার পক্ষে কঠিন মনে হয়। UI এর জন্য পরীক্ষাগুলি শক্তভাবে UI এর সাথে মিলিত হয়েছে তা উল্লেখ করার দরকার নেই। ইউআই-তে কোনও পরিবর্তন পরীক্ষাগুলি ব্যর্থ হওয়ার কারণ। কোনও পরীক্ষায় ব্যর্থ হওয়ার কারণ ছাড়া আপনি সত্যই UI এর কোনও ধরণের রিফ্যাক্টরিং করতে পারবেন না।
রায়নস

উত্তর:


9

সাধারণ ইউআই টেস্টিং এএসপি.নেট এমভিসিতে যথেষ্ট সহজ। মূলত আপনাকে যা করতে হবে তা নিশ্চিত করে ফিরে আসা এইচটিএমএলটিতে আপনার প্রয়োজনীয় উপাদান রয়েছে। যদিও এটি নিশ্চিত করে যে এইচটিএমএল পৃষ্ঠাটি আপনার প্রত্যাশার মতোই কাঠামোবদ্ধ হয়েছে, এটি ইউআইকে পুরোপুরি পরীক্ষা করে না।

যথাযথ ওয়েব ইউআই পরীক্ষার জন্য সেলেনিয়ামের মতো একটি সরঞ্জাম প্রয়োজন যা আপনার মেশিনে ব্রাউজারগুলি ব্যবহার করবে এবং জাভাস্ক্রিপ্ট এবং এইচটিএমএল সমস্ত ব্রাউজারে সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করবে। সেলেনিয়ামের একটি ক্লায়েন্ট / সার্ভারের মডেল রয়েছে যাতে আপনি ইউনিক্স, ম্যাক এবং উইন্ডোজ ক্লায়েন্টের সাথে ভার্চুয়াল মেশিনগুলির সেট এবং সেই পরিবেশগুলিতে সাধারণ ব্রাউজারগুলির সেট রাখতে পারেন।

এখন, একটি ভাল ডিজাইন করা এমভিসি (প্যাটার্ন, ফ্রেমওয়ার্ক নয়) অ্যাপ্লিকেশনটি মডেল এবং নিয়ন্ত্রকগুলিতে গুরুত্বপূর্ণ যুক্তি রাখে । সংক্ষেপে, আপনি যখন এই দুটি দিকটি পরীক্ষা করেন তখন অ্যাপ্লিকেশনটির কার্যকারিতা পরীক্ষা করা হয়। দেখেছে ঝোঁক শুধুমাত্র প্রদর্শন যুক্তিবিজ্ঞান আছে এবং সহজে চাক্ষুষ পরিদর্শন সাথে চেক করা হয়। ভিউতে পাতলা প্রক্রিয়াজাতকরণ এবং অ্যাপ্লিকেশনটির বেশিরভাগ অংশ ভালভাবে পরীক্ষিত হওয়ার কারণে, অনেকেই ভাবেন না যে ভিউ লেয়ারটি পরীক্ষার ব্যথা তার দ্বারা প্রাপ্ত উপকারের চেয়ে বেশি we

এটি বলেছিল, অনুরোধের মাধ্যমে ফিরে আসা ডিওএম চেক করার জন্য এমভিসির কাছে কিছু সুন্দর সুবিধা রয়েছে। যা ভিউ লেয়ারটি পরীক্ষা করার জন্য ব্যথাটিকে কিছুটা হ্রাস করে।


1
"মূলত আপনাকে যা করতে হবে তা নিশ্চিত করে ফিরে আসা এইচটিএমএলটিতে আপনার প্রয়োজনীয় উপাদান রয়েছে।" এটি হ'ল আমি যা করার চেষ্টা করছি এবং এটি বেআইনী হয়ে উঠছে। আপনি কি এমন কোনও লিঙ্কে নির্দেশ করতে পারেন যেখানে কোনও নিয়ন্ত্রণ রেন্ডারিংয়ের বিপরীতে কোনও নির্দিষ্ট নিয়ামক পদক্ষেপের সাথে কাজ করবে? (আমি বেশ কয়েকটি রাইট-আপের মধ্য দিয়ে কাজ করেছি, তবে রেন্ডার পার্টিশিয়াল উল্লেখযোগ্য ওভারহেড ছাড়াই যা করতে চাই তা সম্পাদন করছে না ..)
পিটার বার্নিয়ার

আপনি mvccontrib.codeplex.com (এমভিসি অবদান) পরীক্ষা করে দেখতে চাইবেন । এটি এমন সহায়তা প্রদান করে যা মূল ভাষায় নির্মিত হয়নি, এবং "টেস্ট-ড্রাইভ এএসপি.নেট এমভিসি" (প্র্যাকমেটিক প্রোগ্রামারস) বইয়ে সুপারিশ করা হয়েছিল। আমি এখনও মনে করি, দেখুন টেস্টিংয়ের জন্য সেলেনিয়াম একটি ভাল ম্যাচ।
বেরিন লরিটস

টেস্টহেল্পার (এমভিসি অবদান): mvccontrib.codeplex.com/…
বারিন লরিটস

সেলেনিয়াম (আমার ক্ষেত্রে সেলেনিয়াম আরসি) হ'ল আমি আমার সংহতকরণ পরীক্ষার জন্য এটি ব্যবহার করব। আমি যা চাই তা হ'ল সেই বিন্দুটির আগে ব্যর্থ হওয়ার জন্য।
পিটার বার্নিয়ার

2
@ পিটার: আপনার প্রচেষ্টা "অ-তুচ্ছ" হওয়ার বিষয়ে আপনার মন্তব্যটি হ'ল ইউনিট পরীক্ষার মতামতকে অস্বীকার করার কারণ। ফলস্বরূপ, একটি সাধারণ কৌশলটি ভিউগুলিকে যতটা সম্ভব পাতলা করা (অর্থাত্ কোনও ব্যবসায়িক যুক্তিযুক্ত নয়) তৈরি করা হয়, যাতে ইউনিটের বেশিরভাগ পরীক্ষা অন্য কোথাও হয় (সাধারণত ভিউমোডেলে থাকে)। নিজস্ব দৃষ্টিভঙ্গি ভিজ্যুয়াল পরিদর্শন দ্বারা, বা সেলেনিয়ামের মতো কোনও ইউআই পরীক্ষার সরঞ্জাম দ্বারা যাচাই করা যেতে পারে।
রবার্ট হার্ভে

7

আমি এটা বলতে চাই না যে এটি ভ্রষ্ট হয়েছে। বরং, সেই অনুভূতিটি ইউনিট-টেস্টিং এমভিসি ভিউগুলি (কমপক্ষে এসপেক্স বিভিন্ন ধরণের) এর ফলাফলের ফলস্বরূপ, কারণ এসপিএক্স ভিউগুলি ওয়েবফোর্মে খুব বেশি নির্ভরশীলতা রয়েছে, যা তারা নিজেরাই বেশ অচিরাচরিত। তাই যুক্তি যায় যে এটা না মূল্য প্রচেষ্টা কারণ মতামত যে জটিল নয় হতে থাকে।

অবশ্যই দর্শনগুলি বেশ জটিল হয়ে উঠতে পারে তাই এটি আপনার পছন্দ।


3
এএসপি.নেট এমভিসি ভিউগুলি ওয়েবফর্মের সাথে আবদ্ধ নয়, যতটা আমি অবগত আছি। এএসপি.নেট এমভিসির পক্ষে যে বড় পয়েন্টগুলি এটি ওয়েবফর্মগুলি নয় তা নয়?
অ্যাডাম লিয়ার

আমার দৃষ্টিভঙ্গি হ'ল ইউআইআইটি কভার করার জন্য ইন্টিগ্রেশন টেস্টগুলি লেখার জন্য আরও বেশি মানব প্রচেষ্টা লাগে, ভিউগুলিকে কভার করার জন্য বাস্তব 'ইউনিট-টেস্ট' লেখার চেয়ে এটি বেশি। সে কারণেই আমি কয়েকটি প্রতিরোধের বোঝার চেষ্টা করছি যা দেখে মনে হচ্ছে ইউনিট-টেস্ট লেখার পক্ষে রয়েছে।
পিটার বার্নিয়ার

@ অन्ना এসপ্যাক্সের মতামত ওয়েবফোর্ডগুলির শীর্ষে নির্মিত হয়েছে। তারা System.Web.UI.WebControls.Pageশ্রেণি থেকে প্রাপ্ত , <asp:ContentPlaceholder>নিয়ন্ত্রণ ইত্যাদি ব্যবহার করে M
5'11

আপনি যদি আলাদা ভিউ ইঞ্জিন ব্যবহার করেন (যেমন রেজার) আপনার ওয়েবফরম ইঞ্জিন থেকে আরও দূরে সরে যেতে সক্ষম হওয়া উচিত।
মাফিন ম্যান

6

আমি নিশ্চিত নই যে এটি ভ্রান্ত হয়েছে। টেস্টাবিলিটি ASP.NET এমভিসি ব্যবহারের অন্যতম মূল সুবিধা। এ সম্পর্কিত আরও তথ্যের জন্য স্টিভ স্যান্ডারসনের ব্লগটি দেখুন।

তিনি সেখানে হ্যান্ডস ডাউন, সেরা এএসপি.এমভিসি বই (আইএমও) লিখেছেন । তিনি কেবল এমভিসিই পড়ান না, তিনি পরীক্ষার অনুশীলন সহ চারপাশের সেরা অনুশীলনগুলি শিখিয়ে তুলতে উপরে এবং বাইরেও যান।

আমি ভাবছি ইউনিট টেস্টিং ভিউ সম্পর্কে আমার কিছুটা স্পষ্ট করা দরকার - আপনি নিয়ামক (অ্যাকশনারসাল্ট, ইত্যাদি) থেকে ফিরে আসা ফলাফলের চারপাশে ইউনিট পরীক্ষা তৈরি করতে পারেন। প্রকৃত UI এবং UI মিথস্ক্রিয়াটির জন্য আপনাকে এখনও অন্য পরীক্ষা করতে হবে।


"আপনাকে সত্যিকারের ইউআই এবং ইউআই ইন্টারঅ্যাকশনটির জন্য এখনও অন্য পরীক্ষা করাতে হবে" " এটাই আমার প্রশ্নের ঠিক বিন্দু .. কেন ইউআই পরীক্ষাগুলি হঠাৎ করেই 'অন্যান্য পরীক্ষার' (যেমন, ইন্টিগ্রেশন টেস্টিং) এর অংশ হয়ে যায়। আমি স্টিভ স্যান্ডারসন সামগ্রী প্রচুর দেখতে পেয়েছি এবং এটিই আমাকে এই পথটি শুরু করে দেওয়ার মূলত চেষ্টা করেছিল, মূলত তিনি তার 'এমভিসিফেকস' প্রকল্পের সাথে কী করছেন এবং তার কোডটি পুরানো এমভিসি রিলিজের জন্য রচিত হয়েছে এমন বিষয়গুলিতে নিয়ে যাওয়ার চেষ্টা করছে। ।
পিটার বার্নিয়ার

1

আপনি কীভাবে একজন নিয়ামক পদক্ষেপের দ্বারা ফিরিয়ে দেওয়া ভিউ পরীক্ষা করতে হয়, কীভাবে একটি নিয়ামক পদক্ষেপে ফিরিয়ে দেওয়া ভিউ ডেটা পরীক্ষা করতে হয় এবং কীভাবে কোনও নিয়ামক পদক্ষেপ আপনাকে নিম্নলিখিত ইউআরএলটি পরীক্ষা করে দ্বিতীয় নিয়ন্ত্রণকারী ক্রিয়ায় পুনঃনির্দেশ করে কিনা তা পরীক্ষা করে শিখতে পারেন, এমভিসিতে ডেটা টেস্টিং সম্পর্কে এই সংক্ষিপ্ত নিবন্ধে বর্ণনা করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.