উত্তরাধিকার কোডের সাথে কাজ করার সময় ইউনিট পরীক্ষার জেনারেটরগুলি কী আপনাকে সহায়তা করেছে?


10

আমি একটি ছোট (জেনারেটেড সহ ~ 70kLOC) সি # (.NET 4.0, কিছু সিলভারলাইট) কোড বেস দেখছি যা পরীক্ষার কভারেজ খুব কম। কোডটি নিজেই এটিতে কাজ করে যে এটি ব্যবহারকারীর গ্রহণযোগ্যতা পরীক্ষায় উত্তীর্ণ হয়েছে, তবে এটি ভঙ্গুর এবং কিছু ক্ষেত্রে খুব ভাল ফ্যাক্টর হয় না। আমি স্বাভাবিক সন্দেহভাজন (এনমক, নুনিট, সিলভারলাইট বিটের স্ট্যাটলাইট) ব্যবহার করে উত্তরাধিকার কোডের চারপাশে শক্ত ইউনিট পরীক্ষার কভারেজ যুক্ত করতে চাই।

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

যাইহোক, এবার আমি পরীক্ষার কাঠামো তৈরি করার জন্য একটি পরীক্ষামূলক জেনারেটর (বিশেষত পেক্স ) ব্যবহার করার কথা ভাবছি , তারপরে এটি ম্যানুয়ালি বের করে আনতে চাই।

আমার প্রশ্ন হ'ল: উত্তরাধিকার কোডবেজে কাজ শুরু করার সময় আপনি কি ইউনিট টেস্ট জেনারেটর ব্যবহার করেছেন এবং যদি তাই হয় তবে আপনি কি তাদের সুপারিশ করবেন?

আমার আশঙ্কা হ'ল উত্পন্ন পরীক্ষাগুলি কোড-বেসের অর্থগত সংজ্ঞাগুলি মিস করবে, যা কভারেজ মেট্রিকের জন্য পরীক্ষার পরিবর্তে পরীক্ষাগুলির চেয়ে ভয়ঙ্কর পরিস্থিতির দিকে পরিচালিত করে যা পরীক্ষাগুলি কোডগুলিতে বর্ণিত আচরণকে স্পষ্টভাবে প্রকাশ করে।


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

উত্তর:


9

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

ব্যবহারিক হওয়ার জন্য, আপনার সমস্ত বাগ তালিকার মধ্যে থাকা উচিত। তারপরে প্রতিটি বাগের জন্য ইউনিট পরীক্ষা তৈরি করুন, ফলস্বরূপ এটি কীভাবে আচরণ করা উচিত in আদর্শভাবে, আপনি প্রতিটি বাগের কাছে পৌঁছানোর সাথে সাথে কেবল নতুন কোড যুক্ত করবেন।

ইউনিট পরীক্ষার কোড যুক্ত করার সময়:

  • নতুন কার্যকারিতা যুক্ত করা হচ্ছে
  • পুনঃপরিচয়যুক্ত কোড
  • একটি বাগ সংশোধন করা হয়েছে
  • কোড কী করে তা শিখছে
  • একটি ত্রুটি বিদ্যমান প্রমাণ করুন

সত্যের পরে ইউনিট পরীক্ষা যুক্ত করার মানটি প্রমাণ করা কঠিন।

আমি সাধারণত নিজেকে উত্তরগুলি লেখার অনুমতি দিই না যা প্রশ্নকর্তা যা চান তার বিপরীতে, তবে আমি অনুভব করি এটি উত্তীর্ণ একটি ভাল পাঠ।


আমি সেখানে আপনার সাথে 100% চুক্তিতে আছি - কিছুটা ডাউন-সময় কীভাবে ব্যয় করা যায় তা অবাক করে এই প্রশ্নটি আমার কাছ থেকে শুরু হয়েছিল। আমার স্বাভাবিক অনুশীলনটি হ'ল হয় বাগ সংশোধন করার পদ্ধতি বা বৈশিষ্ট্য যুক্ত করার প্রক্রিয়াটি পরীক্ষা করা এবং রিফেক্টর। আমি আশা করছিলাম কিছু লোক এই অঞ্চলে কিছু যুদ্ধকাহিনী ভাগ করে নিতে পারে ...
ডানকান বায়েন

1
+1, সত্যের পরে কভারেজের জন্য শুটিং করা সাধারণত উত্পাদনশীল হয় না। স্থির বাগের উপর পরীক্ষা করা যা প্রতিরোধকে প্রতিরোধ করে খুব উত্পাদনশীল। কোনও বাগের রিগ্রেশন জড়িত প্রত্যেকের জন্য খুব হতাশাজনক হতে পারে। আরও ভাল কোড লিখতে আপনাকে সহায়তা করার জন্য টেস্টগুলি সত্যই উপযুক্ত। পরীক্ষাগুলিতে বোলিংয়ের ফলে সাধারণত নিম্নমানের পরীক্ষা হয়। আমি মনে করি যে ওপি'র ভয় প্রতিষ্ঠিত হয়েছে এবং উত্পন্ন পরীক্ষাগুলি থেকে শব্দ অনুপাতের সংকেতটি কেবল এ পথেই আসবে। পরীক্ষিতবিহীন কোডটিতে সম্ভবত এটিতে খুব খুব শাখামূলক বিট রয়েছে। কোডগুলির গন্ধ চিহ্নিত করার সরঞ্জামগুলি সম্ভবত আরও কার্যকর are হতে পারে এফএক্সকপ এবং অনুরূপ সরঞ্জাম।
কেভিপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.