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