মাঝখানে ইউনিট টেস্ট রচনা


14

ইউনিট টেস্টিং কি 100% বা কোনও ধরণের চুক্তিতে নয়?

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

আমার কি পূর্ববর্তী সমস্ত ক্লাসের জন্য ইউনিট পরীক্ষা লেখার দরকার নেই এবং মোটেই বিরক্ত করা উচিত নয়, বা আমি যে নতুন জিনিস যুক্ত করছি তার জন্য কেবল ইউনিট পরীক্ষা লিখাই ঠিক আছে?

উত্তর:


14

কোনও ইউনিট পরীক্ষা কোনটির চেয়ে ভাল। সুতরাং এটি কোনও সর্বস্তরের কিছুই নয় not

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

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

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

এমার মতো একটি কোড কভারেজ সরঞ্জামে যুক্ত করা হয়েছে - এবং আপনি সামগ্রিক পরীক্ষার কভারেজের উন্নতি পর্যবেক্ষণ করতে পারেন।


3

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

সমস্ত নতুন কোডে ইউনিট পরীক্ষা থাকতে হবে।

সমস্ত পরিবর্তিত কোডে এর সাথে ইউনিট পরীক্ষা যুক্ত থাকতে হবে।

আমরা পুরানো কোডটিকে যেভাবে ভঙ্গ না করে নিরাপদে পরীক্ষা যোগ করেছি সেগুলি হ'ল মূলত নিম্নলিখিত মৌলিক পদ্ধতির ব্যবহার:

কোডের একটি ছোট্ট বিভাগ চয়ন করুন যা আপনার কার্যকারিতা পরিবর্তন করতে হবে।

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

    পরীক্ষাগুলি যোগ করতে বাধা দিচ্ছে এমন নির্ভরশীলতাগুলি ভেঙে ফেলতে প্রয়োজনীয় নূন্যতম পরিবর্তনগুলি করার চেষ্টা করুন।

  3. যতটা সম্ভব পরীক্ষা লিখুন আপনি যে কোডটি পরিবর্তন করতে চলেছেন তার কার্যকারিতাটি কভার করুন। নিয়মিত চেক ইন করুন এবং পিয়ারের সমস্ত পরিবর্তন পর্যালোচনা করুন।
  4. নতুন কার্যকারিতা / কার্যকারিতা পরিবর্তনের জন্য পরীক্ষা লিখুন।
  5. কার্যকারিতা কার্যকর করুন (এটি আপনার সাধারণ টিডিডি চক্র)
  6. আপনি পরীক্ষাগুলি দ্বারা আবৃত অঞ্চলগুলিকে রিফেক্টর নিশ্চিত করুন (লাল-সবুজ-রিফ্যাক্টর)।

আমরা দেখতে পেয়েছি যে আমরা এটি যত বেশি করেছি ততই সহজ এটি। প্রতিবারের মতো আপনি কোড বেসে ফিরে যান, এটি কিছুটা ভাল।

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


2

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


2

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


+1 "করতে নতুন অংশের বেশী সম্ভবত বাগ থাকতে হয়"
মিয়া

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

1

আপনি আপনার বর্তমান কোডটি কভার করতে শুরু করতে পারেন এবং যদি আপনার কিছুটা সময় ব্যয় হয় তবে পুরানো কোডের মূল কার্যকারিতাটি কভার করতে শুরু করুন। এছাড়াও আপনি আপনার প্রধানমন্ত্রীকে এর জন্য অতিরিক্ত কিছু সময়ের জন্য জিজ্ঞাসা করতে পারেন =)


0

ইউনিট টেস্টিং কি 100% বা কোনও ধরণের চুক্তিতে নয়?

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

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