আমি জোয়েল স্পলস্কির এই ব্লগটি আরও ভাল কোডের 12 ধাপে পড়ছিলাম । টেস্ট চালিত বিকাশের অনুপস্থিতি আমাকে সত্যিই অবাক করেছিল। তাই আমি গুরুদের কাছে প্রশ্ন ফেলে দিতে চাই। টিডিডি কি আসলেই চেষ্টাটির পক্ষে মূল্যবান নয়?
আমি জোয়েল স্পলস্কির এই ব্লগটি আরও ভাল কোডের 12 ধাপে পড়ছিলাম । টেস্ট চালিত বিকাশের অনুপস্থিতি আমাকে সত্যিই অবাক করেছিল। তাই আমি গুরুদের কাছে প্রশ্ন ফেলে দিতে চাই। টিডিডি কি আসলেই চেষ্টাটির পক্ষে মূল্যবান নয়?
উত্তর:
জোয়েল সেই পোস্টটি লেখার দু'বছর পরে 2002 সালে কেন্ট বেকের বইটি প্রকাশের আগে টেস্ট চালিত বিকাশ কার্যত অজানা ছিল । তাহলে প্রশ্নটি ওঠে যে কেন জোয়েল তার পরীক্ষা আপডেট করে নি, বা 2000 সালে যদি টিডিডি আরও ভাল জানত তবে তিনি কি এটিকে তার মানদণ্ডের মধ্যে অন্তর্ভুক্ত করতেন?
আমি বিশ্বাস করি যে তার কাছে এই সাধারণ কারণটি ছিল না যে গুরুত্বপূর্ণ জিনিসটি আপনার কাছে একটি সংজ্ঞায়িত প্রক্রিয়া রয়েছে, সেই প্রক্রিয়াটির নির্দিষ্ট বিবরণ নয়। কোনও নির্দিষ্ট সংস্করণ নিয়ন্ত্রণ ব্যবস্থা নির্দিষ্ট না করেই তিনি সংস্করণ নিয়ন্ত্রণের সুপারিশ করেন বা নির্দিষ্ট ব্র্যান্ডের প্রস্তাব না দিয়ে বাগ ডাটাবেস রাখার প্রস্তাব দিয়েছেন একই কারণেই। ভাল দল ক্রমাগত উন্নতি করে এবং খাপ খাইয়ে নেয় এবং সেই নির্দিষ্ট সময়ে তাদের নির্দিষ্ট পরিস্থিতির জন্য উপযুক্ত এমন সরঞ্জাম এবং প্রক্রিয়া ব্যবহার করে। কিছু দলের জন্য, এর অবশ্যই অর্থ টিডিডি। অন্যান্য দলের জন্য, এত কিছু না। আপনি যদি টিডিডি গ্রহণ করেন তবে নিশ্চিত হয়ে নিন যে এটি কোনও কার্গো কাল্ট মানসিকতার বাইরে নয় ।
জোল প্রকৃতপক্ষে কয়েকটি জায়গায় এটি সম্বোধন করেছে।
তিনি ব্যাখ্যা করেছেন যে বিষয়গুলি পরীক্ষাগুলি অনেকগুলি গুরুত্বপূর্ণ সমস্যা ধরার পক্ষে সক্ষম নয়, বিশেষত বিষয়গত বিষয়গুলি যেমন "এই সফ্টওয়্যারটির ব্যবহারকারী ইন্টারফেস চুষে ফেলে?" তাঁর মতে, মাইক্রোসফ্টে স্বয়ংক্রিয় পরীক্ষার উপর অতিরিক্ত নির্ভরতা হ'ল আমরা উইন্ডোজ ভিস্তার সাথে কীভাবে শেষ করেছি।
তিনি লিখেছেন কীভাবে, তার অভিজ্ঞতা অনুসারে, ব্যবহারকারীরা যে ধরণের বাগগুলি দেখেন তারা দুটি বিভাগে পড়ে যায়: 1) সাধারণ ব্যবহারে যেগুলি প্রদর্শিত হয়, যা প্রোগ্রামাররা তাদের নিজের কোডটি ব্যবহারের আগে চালাতেন তারা সেগুলি দেখতে পেতেন themselves , বা 2) প্রান্তের কেসগুলি এতটাই অস্পষ্ট যে কেউ এগুলি প্রথম স্থানে coverাকতে পরীক্ষা লিখতে ভাবেনি। তিনি বলেছিলেন যে ফোগবুজে তার এবং তার দলের ফিক্সগুলি কেবলমাত্র ইউনিট পরীক্ষায় ধরা পড়েছে তার মধ্যে খুব কম শতাংশের বাগ। (আমি এখন আর্টিকেলটি খুঁজে পাচ্ছি না, তবে আমি যদি কোনটি বোঝাতে চাইছি তবে কেউ লিঙ্কটি এখানে সম্পাদনা করতে দ্বিধা বোধ করবেন।)
এবং তিনি লিখেছেন এটি কীভাবে এটির মূল্য থেকে বেশি ঝামেলা হতে পারে, বিশেষত যখন আপনার প্রকল্পটি অনেক ইউনিট পরীক্ষার সাহায্যে খুব বড় প্রকল্পে পরিণত হয় এবং তারপরে আপনি কিছু পরিবর্তন করে (ইচ্ছাকৃতভাবে) এবং খুব বড় সংখ্যক ভাঙা ইউনিট পরীক্ষা দিয়ে শেষ করেন। তিনি বিশেষত সমস্যাগুলি ব্যবহার করেন যা ইউনিট পরীক্ষার ফলে জোয়েল টেস্টের ১৩ তম পয়েন্ট হিসাবে যুক্ত না করার কারণ হিসাবে কারণ হতে পারে, এমনকি লোকেদের পরামর্শ দেওয়া উচিত যে তার উচিত।
জোয়েল স্পলস্কি নিজেই 2009 সালে এই প্রশ্নের উত্তর দিয়েছিলেন :
জোয়েল: টেস্ট ড্রাইভড ডেভলপমেন্ট নিয়ে বিতর্ক চলছে ... আপনার কি প্রতিটি কিছুর জন্য ইউনিট টেস্ট করা উচিত, এ ধরণের স্টাফ ... অনেক লোক আমাকে জোলে টেস্ট পড়ার পরে লিখতে বলেছিল, "আপনার 13 বছর হওয়া উচিত এখানে জিনিস: ইউনিট পরীক্ষা, আপনার সমস্ত কোডের 100% ইউনিট পরীক্ষা tests "
এবং এটি আপনার প্রয়োজন হতে পারে না এমন কিছু সম্পর্কে আমাকে সামান্য কিছুটা মতবাদ হিসাবে চিহ্নিত করে। পছন্দ করুন, চতুর প্রোগ্রামিংয়ের সম্পূর্ণ ধারণাটি আপনার প্রয়োজনের আগে কাজগুলি করা নয়, তবে তাদের প্রয়োজন অনুসারে পৃষ্ঠা-ফল্ট করা। আমি মনে করি যে অনেক কিছু স্বয়ংক্রিয়ভাবে পরীক্ষা করা হচ্ছে, অনেক সময়, কেবল আপনাকে সাহায্য করবে না। অন্য কথায়, আপনি যে কোডটি সত্যই কার্যকরভাবে কাজ করছে তা নিশ্চিত করার জন্য ইউনিট পরীক্ষার একটি ভয়ঙ্কর প্রচুর পরিমাণে লিখতে চলেছেন, এবং আপনি অবশ্যই এটি আবিষ্কার করেন না যে এটি কাজ করে না [যদি আপনি না করেন তবে পরীক্ষাগুলি লিখুন], আসলে এখনও কাজ করে, ... আমি জানি না, আমি এর জন্য এই জাতীয় শিখা মেইল পাচ্ছি কারণ আমি এটি ভালভাবে প্রকাশ করছি না। তবে, আমি মনে করি যদি সত্যিই কোনও দলের তাদের ইউনিট পরীক্ষার 100% কোড কভারেজ থাকে তবে বেশ কয়েকটি সমস্যা দেখা দেয়। এক, তারা ইউনিট পরীক্ষাগুলি লেখার জন্য প্রচুর সময় ব্যয় করত এবং তারা অগত্যা উন্নত মানের ক্ষেত্রে সেই সময়ের জন্য অর্থ প্রদান করতে সক্ষম হবে না। আমি বলতে চাইছি তাদের কিছু উন্নত মানের থাকতে হবে এবং তারা যে কোনও কিছু ভেঙে ফেলবে না এই আত্মবিশ্বাসের সাথে তাদের কোডগুলিতে জিনিসগুলি পরিবর্তন করার ক্ষমতা রাখবে, তবে এটিই।
তবে আমি আবিষ্কার করেছি ইউনিট টেস্টগুলির সাথে আসল সমস্যাটি হ'ল কোড হিসাবে আপনি যে ধরণের পরিবর্তন ঘটিয়েছেন সেগুলি আপনার ইউনিট পরীক্ষার ধ্রুবক শতাংশকে ভঙ্গ করে। কখনও কখনও আপনি আপনার কোডে এমন পরিবর্তন আনবেন যা কোনওভাবে আপনার ইউনিট পরীক্ষার 10% বিভক্ত করে। ইচ্ছাকৃতভাবে। কারণ আপনি কোনও কিছুর নকশা পরিবর্তন করেছেন ... আপনি একটি মেনু সরিয়ে নিয়েছেন, এবং এখন সেই মেনুতে থাকা সমস্ত কিছু ... মেনু এখন অন্যত্র। এবং তাই সমস্ত পরীক্ষা এখন বিরতি। এবং আপনাকে কোডটির নতুন বাস্তবতা প্রতিফলিত করতে সেই পরীক্ষাগুলি পুনরায় তৈরি করতে সক্ষম হতে হবে।
সুতরাং শেষ ফলাফলটি হ'ল, আপনার প্রকল্পটি আরও বড় এবং বড় হওয়ার সাথে সাথে যদি আপনার সত্যিই প্রচুর ইউনিট পরীক্ষা হয় তবে সেই ইউনিট পরীক্ষাগুলি বজায় রাখার জন্য আপনাকে কতটা বিনিয়োগ করতে হবে, সেগুলি আপ টু ডেট রাখে এবং চালিয়ে যায় তাদের উত্তরণ, আপনি যে পরিমাণ সুবিধাগুলি থেকে এগুলি পান তা অস্বস্তিকর হতে শুরু করে।
জোল ছাড়া আর কেউ নিশ্চিতভাবেই এর উত্তর দিতে পারেনি। তবে আমরা কিছু কারণ / পর্যবেক্ষণ চেষ্টা করতে পারি।
প্রথমত, পরীক্ষাটি জোয়েলের পরীক্ষা থেকে অনুপস্থিত নয়
দ্বিতীয়ত, জোয়েল টেস্টের পুরো ধারণাটি (আমি এটি বুঝতে পেরেছি) দ্রুত, হ্যাঁ-কোনও প্রশ্ন নেই। "আপনি কি টিডিডি করেন?" এতে পুরোপুরি ফিট হবে না (উত্তরটি হতে পারে: "আমাদের কিছু", "কোডের সেই অংশের জন্য" বা "আমরা ইউনিট পরীক্ষা করি")।
তৃতীয়ত, আমি মনে করি যে কেউ বলেনি (এমনকি জোয়েলও) যে "পয়েন্টগুলি যেখানে" শুধুমাত্র সময়ের জন্য উপযুক্ত "(উপায় দ্বারা," আপনি কি প্রোগ্রাম করেন "এতে নেই), কেবল যেগুলি আসার সময় জিজ্ঞাসা করা ভাল দ্রুত প্রশ্ন কোনও সফ্টওয়্যার দলের সাথে যোগাযোগের ক্ষেত্রে, ভবিষ্যতের দলের সদস্য হিসাবে বা গ্রাহক হিসাবে - এটি আমার চারপাশের কিছু অ-প্রযুক্তিগত লোককে দেওয়া একটি তালিকা যা তাদের নিজস্ব আইটি বিভাগটি কতটা খারাপ / খারাপ সে সম্পর্কে একটি ক্লু খুঁজছিল। এটি সব কিছু নয়, তবে তিন মিনিটে পরাজিত করা সত্যিই খারাপ।