ইউনিট পরীক্ষাগুলি কি সংগ্রহস্থলগুলিতে সংরক্ষণ করা উচিত?


50

আমি একজন ক্রমবর্ধমান প্রোগ্রামার যিনি অবশেষে ইউনিট টেস্টিংটি অনুগ্রহ করে এমন একটি লাইব্রেরির জন্য অনুশীলন করে যা আমি গিটহাবের উপর সঞ্চয় করছি।

আমার কাছে এটি ঘটেছিল যে আমি পরীক্ষার স্যুটগুলিকে রেপোতে অন্তর্ভুক্ত করতে পারি, তবে অন্যান্য প্রকল্পগুলিতে যেমন দেখি, পরীক্ষার অন্তর্ভুক্তি হিট-অর-মিস বলে মনে হচ্ছে।

এটি খারাপ ফর্ম হিসাবে বিবেচনা করা হয়? ব্যবহারকারীরা কেবলমাত্র কার্য কোডের প্রতি আগ্রহী এবং যেভাবেই তারা তাদের নিজস্ব কাঠামোতে পরীক্ষা করবে এই ধারণাটি কি?


13
কেন না? প্রকল্পগুলির সাথে টেস্টগুলি আসা উচিত বা তারা সবে অকেজো।

61
এই প্রকল্পগুলির প্রথম স্থানে অস্তিত্বের কারণে কোনও প্রকল্পের তাদের সংগ্রহস্থলে ইউনিট পরীক্ষা অন্তর্ভুক্ত না হওয়ার সম্ভাবনা বেশি।
5:32

4
এগুলি পৃথকভাবে নির্মিত, তবে অন্যথায় ইউ-টেস্টগুলি কোডের সাথে দৃ tight়তার সাথে মিলিত হয়। ধারাবাহিকতা নিশ্চিত করতে অবশ্যই একরকম নির্ভরতা পরিচালনার ব্যবস্থা করতে হবে। হতে তাদেরকে একই সংগ্রহস্থলের মধ্যে নির্বাণ, subrepository বা maintaing সংস্করণ নিয়ন্ত্রিত "লিঙ্ক" পরীক্ষা সংগ্রহস্থলের, ইত্যাদি
মার্চ

2
@ স্টুপা অবশ্যই স্পষ্টভাবে সঠিক: সেরাটি ধরে নেওয়া ভাল লাগবে যে, কোথাও কোথাও লুকানো পরীক্ষার একটি দুর্দান্ত ক্যাশে রয়েছে, কিন্তু বাস্তব বিশ্বে প্রোগ্রামাররা অলস।
ক্যাসাবেল

2
দ্রষ্টব্য, আমি আপনার বিল্ড স্ক্রিপ্টে পরীক্ষার ক্লাস সংকলন অক্ষম করা ভাল ধারণা বিবেচনা করব।
ব্যবহারকারী 606723

উত্তর:


119

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

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

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


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

টেস্টগুলি কেবল কোডের অংশই নয়, ডকুমেন্টেশনেরও একটি অংশ এবং প্রায়শই অনুমানের অংশ। পরীক্ষা (যা চালায় এবং পাস হয়) হ'ল "লিভিং ডকুমেন্টেশন"।
মাইকেল ইস্টার

54

আপনি যদি চেক ইন ইন সোর্স কোডে ইউনিট পরীক্ষাগুলি অন্তর্ভুক্ত না করেন তবে:

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

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


7

অবশ্যই আপনার কয়েকটি ইউনিটের জন্য সংগ্রহস্থলের মধ্যে ইউনিট পরীক্ষা করা উচিত:

  • পূর্ববর্তী সংস্করণে ফিরে যাওয়া সহজ
  • প্রকল্পে কাজ করা অন্যান্য ব্যক্তিরা ইউনিট পরীক্ষায়ও অ্যাক্সেস অর্জন করে
  • কিছু লোক ইউনিট পরীক্ষাগুলি ডকুমেন্টেশনের অংশ হিসাবে বিবেচনা করে (টিডিডি এবং বিডিডি)

6

এগুলি যদি অন্য কোনও কম্পিউটারে চালানোর কোনও সুযোগ থাকে তবে অবশ্যই তাদের অন্তর্ভুক্ত করুন। এগুলি আলাদাভাবে তৈরি করা উচিত, যাতে ব্যবহারকারীদের দরকার নেই এবং তাদের অতিরিক্ত নির্ভরতা থাকতে পারে তবে তাদের অবশ্যই অন্তর্ভুক্ত করা উচিত।

আমি বেশিরভাগ প্রকল্পগুলিতে দৃ strongly়ভাবে সন্দেহ করব যেগুলিতে কোনও সংগ্রহস্থল পরীক্ষার অন্তর্ভুক্ত নয়।

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


5

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


3

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

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