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