ইউনিট পরীক্ষা দিয়ে কত দূরে যেতে হবে


11

একটি প্রশ্ন আগে অনেকবার জিজ্ঞাসা করা হয়েছিল তবে একটি নির্দিষ্ট তির্যক টিম এমভিসি বিকাশ নিয়ে।

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

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

আমি যা জিজ্ঞাসা করছি, কোনও পদ্ধতিতে জটিল যুক্তি সংঘটিত হওয়ার সাথে, একটি পরীক্ষার পদ্ধতিটি কেবল প্রয়োজনীয় ফলাফল এবং / অথবা প্রত্যাশিত ত্রুটিটিকে দৃ as়ভাবে দাবি করে, বা প্রতিটি যুক্তিযুক্ত লাইনকে একই সাথে পরীক্ষা করা ও পরীক্ষা করা উচিত কি 'যথেষ্ট ভাল'? সঠিকভাবে পরীক্ষা করার জন্য আমি যেভাবে এটি দেখছি, তারপরে পদ্ধতিটির যুক্তি (লাইন দ্বারা লাইন) কিছুটা কভারেজও পাওয়া উচিত। তবে এটি (আমার নির্বোধ মতামত) পরীক্ষা নিজেই একটি কুটির শিল্প তৈরি করার জন্য পরীক্ষা এবং বাস্তবায়িত পদ্ধতিটিকে এত কাছ থেকে সংযুক্ত করে রাখার চেষ্টা করার এক চূড়ান্ত পরিণতির দিকে নিয়ে যেতে পারে (যা আমি জানি তাদের হওয়া উচিত)।

আমি জানি আমার প্রশ্ন টিডিডি ভক্তদের মধ্যে কয়েকজনকে আপত্তি করতে পারে যারা এটিকে কোনও ব্রেইনার হিসাবে দেখবেন। টিডিডি শিবিরে না থাকা, এটি আমার জন্য 'হ্যাঁ ব্রেইনার', তাই প্রশ্ন।

বিটিডাব্লু - ধারণাগুলির জন্য এটি পরীক্ষা করে দেখেছিল:

http://dotnetslackers.com/articles/aspnet/Built-in-Unit-Test-for-ASP-NET-MVC-3-in-Visual-Studio-2010-Part-1.aspx

অবিচ্ছিন্ন ডাউনভোটগুলিতে এখন fwd খুঁজছেন :)

[সম্পাদনা] - একক (এই মুহুর্তে সিঙ্গল !!) 'নিকট' ভোটারের সুবিধার জন্য। এই প্রশ্নটি বিষয়গত নয় । আমি খুব মনোনিবেশিত বিষয়টিতে কনসেন্সাস খুঁজছি। আমি নেতিবাচক আবেগ জাগ্রত করার চেষ্টা করছি না, আমি প্রযুক্তির ত্রুটিগুলি প্রকাশ করার চেষ্টা করছি না - আমি একজন বিশাল ভক্ত। সুতরাং, দয়া করে ভোটের বন্ধ হয়ে গেলে আমার উপকারের জন্য একটি নম্র মন্তব্যটি ফেলে দিন কারণ এটি অস্পষ্টতা বা ভুল তথ্য থাকলে প্রশ্নটির পুনর্গঠন করতে আমাকে সহায়তা করতে পারে। এই প্রশ্নটি এমভিসি জনসংখ্যার একটি বিশাল অংশকে উপকৃত করতে পারে।

ধন্যবাদ!!

জিম


বন্ধ করার (প্রথম) ভোটটি আমার, তবে 'বিষয়গত এবং তর্কাত্মক' হিসাবে নয় (যা এটি নয়), তবে 'প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জের ডটকম-এ স্থানান্তরিত' হিসাবে, কারণ এটি কোনও একটির সাথে নির্দিষ্ট প্রোগ্রামিং প্রশ্ন নয় isn't পরিষ্কার উত্তর।

আকাশম, প্রশংসা এবং বোঝা। একটি খনন ছিল না, কেবল জানতে চেয়েছিল :)
জিম

উত্তর:


4

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

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

টিডিডির সাথে আপনার আনুগত্যের পরিমাপের পরে কোড কভারেজ কোনও কার্যকর পদ্ধতি নয়, যদিও আপনি সাধারণত টিডিডি ব্যবহার করে লিখিত কোডে খুব উচ্চ কোডের কভারেজ পাবেন যে কোডটি সমস্ত পরীক্ষার মাধ্যমে প্রেরণাভুক্ত হওয়া উচিত ছিল do

টিডিডি পরীক্ষাগুলি উভয়ই নকশা এবং ডকুমেন্টকে চালিত করে এবং অন্যকে নকশাটি সরল ভাষায় ব্যাখ্যা করে (যাতে আপনি নিজের পরীক্ষাগুলির নাম কীভাবে রাখবেন তা অত্যন্ত গুরুত্বপূর্ণ)।

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

অতিরিক্তভাবে, পরীক্ষাগুলি যখনই লেখা উচিত:

  1. আপনি নতুন কোড লিখছেন, পরীক্ষাগুলি ড্রাইভ করে এবং আপনার নকশা নথি করে এবং কোডটি কী করা উচিত সে সম্পর্কে আপনার অনুমানগুলি ব্যাখ্যা করে explain আপনার কোড করার আগে লেখা উচিত।

  2. আপনি একটি বাগ খুঁজে পেয়েছেন, একটি ব্যর্থ পরীক্ষায় বাগটি প্রদর্শন করা উচিত। বাগ ঠিক করা হলে পরীক্ষাটি পাস করা উচিত।

  3. আপনি কোডটি এমনভাবে পরিবর্তন করেন যা কোনও পদ্ধতি বা শ্রেণি যা করে তার প্রকৃতির পরিবর্তন করে (যদিও কোডের একটি ক্ষেত্র পরিবর্তন করলে অনেক পরীক্ষা ব্যর্থ হয় তবে এটি ভঙ্গুর পরীক্ষা নির্দেশ করতে পারে)। এটি কোডটি সঠিকভাবে ডকুমেন্টিংয়ে রাখে।

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


+1 খ্রিস্ট - আমি আপনার জিবের কাট পছন্দ করি :-), তবে আরও গুরুত্বপূর্ণ, আপনি চিহ্নিত করে (আমি পার্থক্য বুঝতে পারি না) ইউনিট টেস্টিং এবং টিডিডি-র মধ্যে পৃথকীকরণ। খনিটি কিছুটা হাইব্রিড মডেল (হায় !!)
জিম

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

... আমি আপনার চূড়ান্ত বাক্যে চুক্তিতে লজ্জাজনকভাবে মাথা নিচু করছি :)
জিম

0

এটি সুস্পষ্ট যে কেবল কোনও পদ্ধতির রিটার্ন মান পরীক্ষা করা তার অভ্যন্তরের সমস্ত শাখার পরীক্ষার চেয়ে কম শক্তিশালী। বিকল্প ইনপুটগুলি সঠিক আচরণের গ্যারান্টিযুক্ত হবে না।

অন্যদিকে, আপনার সবকিছু পরীক্ষা করার জন্য পর্যাপ্ত সময় বা ধৈর্য থাকতে পারে না।

আপনি যা করতে পারেন তা স্থির করে আপনি পরীক্ষার সাথে কতগুলি কোড কভার করতে চান (80-90% বা যাই হোক না কেন) এবং এটি যাচাই করে যা স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করে এটি প্রয়োগ করে।
কোড লেখার চক্রটি কখনই শেষ না হয় কেবলমাত্র লেখার পরীক্ষার একটি "কখনই শেষ চক্র" ঘটবে না :)


কসমিন - আপনি অবশ্যই আমার কোডটি দেখেন নি। ট্রেডমিলটিতে ফিরে ... :-)
জিম

0

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


0

ভিজ্যুয়াল স্টুডিওতে চালু কোড কভারেজ সহ ইউনিট পরীক্ষা চালানো আপনাকে আপনার কোডটি কতটা ভালভাবে কভার করা হয়েছে তার একটি ভাল (এবং গ্রাফিকাল) ইঙ্গিত দিতে হবে।

আপনি যদি ইনবিল্ট এমএসটিস্ট ফ্রেমওয়ার্ক ব্যবহার না করে থাকেন তবে আপনাকে নুনিটের সাথে কাজ করতে বা এখানে নির্দেশিকাগুলি অনুসরণ করতে একটি তৃতীয় পক্ষের কোড কভারেজ পণ্যটি দেখার দরকার হতে পারে: /programming/2665799/does-vs2010-code -coverage-সমর্থন-nunit

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