কেন পরীক্ষা চালিত বিকাশ জোয়েল এর পরীক্ষা থেকে অনুপস্থিত?


23

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


13
এই নিবন্ধটি বুধবার, 09 আগস্ট, 2000 লিখেছিল (প্রায় 12 বছর আগে)। এটি নয় যে টিডিডি তখন ছিল না তবে আমি বিশ্বাস করি না যে এটি আজকাল প্রায় গুঞ্জন উপভোগ করেছে।
মাইকে

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

2
' আমি একটি সফ্টওয়্যার দলের মান নির্ধারণ করার জন্য আমার নিজের, অত্যন্ত দায়িত্বজ্ঞানহীন, opড়মি পরীক্ষা নিয়ে এসেছি। এটির দুর্দান্ত অংশটি হ'ল এটি প্রায় 3 মিনিট সময় নেয় ... দ্য জোয়েল টেস্ট সম্পর্কে পরিষ্কার জিনিসটি হ'ল প্রতিটি প্রশ্নের দ্রুত হ্যাঁ বা না পাওয়া সহজ। আপনাকে প্রতিদিনের লাইন-অফ-কোড-কোড বা গড়-বাগ-প্রতি-প্রতিস্থাপন-পয়েন্টটি বের করতে হবে না ... ' - আপনার প্রকল্পটি টিডিডি-র উপকার করবে কিনা তা সিদ্ধান্ত নিতে 3 মিনিটের বেশি সময় লাগবে এবং ভাল , প্রতি-প্রতি-প্রতিচ্ছবি-পয়েন্টে গড়-বাগের অঙ্কন প্রয়োজন হতে পারে - সে কারণেই এটি তালিকায় নেই
ganat

জোয়েল স্ট্যাক প্লিজ-এ যান। এটি একটি আকর্ষণীয় q।
এরিক রেপেন

জোল থেকে সরাসরি লিঙ্ক করা এবং উদ্ধৃতি দেওয়া উত্তরটি আপনার গ্রহণ করার কথা বিবেচনা করা উচিত, যেহেতু এটির চেয়ে বেশি কোনও অনুমোদন পাওয়া যায় না। প্রোগ্রামার্স.সটাকেক্সচেঞ্জ
ব্রায়ান ওকলি

উত্তর:


30

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

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


1
এছাড়াও ... ওহ আপনি কিছুটা টিডিডিকে আঘাত করেছেন কুল এইড পয়েন্ট আপনি না?
এরিক রেপেন


27

জোল প্রকৃতপক্ষে কয়েকটি জায়গায় এটি সম্বোধন করেছে।

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

তিনি লিখেছেন কীভাবে, তার অভিজ্ঞতা অনুসারে, ব্যবহারকারীরা যে ধরণের বাগগুলি দেখেন তারা দুটি বিভাগে পড়ে যায়: 1) সাধারণ ব্যবহারে যেগুলি প্রদর্শিত হয়, যা প্রোগ্রামাররা তাদের নিজের কোডটি ব্যবহারের আগে চালাতেন তারা সেগুলি দেখতে পেতেন themselves , বা 2) প্রান্তের কেসগুলি এতটাই অস্পষ্ট যে কেউ এগুলি প্রথম স্থানে coverাকতে পরীক্ষা লিখতে ভাবেনি। তিনি বলেছিলেন যে ফোগবুজে তার এবং তার দলের ফিক্সগুলি কেবলমাত্র ইউনিট পরীক্ষায় ধরা পড়েছে তার মধ্যে খুব কম শতাংশের বাগ। (আমি এখন আর্টিকেলটি খুঁজে পাচ্ছি না, তবে আমি যদি কোনটি বোঝাতে চাইছি তবে কেউ লিঙ্কটি এখানে সম্পাদনা করতে দ্বিধা বোধ করবেন।)

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


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

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

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

2
@ পিডিআর: আমি গুরুত্ব সহকারে যুক্তি দিচ্ছি যে "ইউনিট পরীক্ষার প্রয়োজনীয়তা" প্রথমে ধরণের সুরক্ষার অভাব। এবং। নেট বিকাশকারী না হয়ে, আমি তাদের অভিজ্ঞতা সম্পর্কে সত্যিই বেশি কিছু বলতে পারি না, তবে আমার নিজের অভিজ্ঞতায় আমি জানতে পেরেছি যে রিফ্যাক্টরেটিংয়ের অসুবিধা পুরোপুরি দুটি কারণের উপর ভিত্তি করে: আমি কোডটি প্রথমে লিখেছি কি না লিখুন এবং লেখক কোডটি ভাল লিখেছেন কিনা। (দ্রষ্টব্য: 1 এবং 2 পয়েন্টগুলি অবশ্যই একে অপরের সাথে দৃ strongly়ভাবে সম্পর্কযুক্ত নয়!)
ম্যাসন হুইলার

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

25

জোয়েল স্পলস্কি নিজেই 2009 সালে এই প্রশ্নের উত্তর দিয়েছিলেন :

জোয়েল: টেস্ট ড্রাইভড ডেভলপমেন্ট নিয়ে বিতর্ক চলছে ... আপনার কি প্রতিটি কিছুর জন্য ইউনিট টেস্ট করা উচিত, এ ধরণের স্টাফ ... অনেক লোক আমাকে জোলে টেস্ট পড়ার পরে লিখতে বলেছিল, "আপনার 13 বছর হওয়া উচিত এখানে জিনিস: ইউনিট পরীক্ষা, আপনার সমস্ত কোডের 100% ইউনিট পরীক্ষা tests "

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

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

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


2
সত্যি? ওওয়ের প্রশ্নের জোলের নিজস্ব উত্তর পোস্ট করার বিষয়ে ডাউনভোটস?
রস প্যাটারসন

1
অঙ্ক করা শক্ত। কিছু লোক "এটি কার্যকর" এর পরিবর্তে "আমি অনুমোদন" মানে ভোট ব্যবহার করে। এটি অবশ্যই গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি সুনির্দিষ্ট।
ব্রায়ান ওকলি

আমি কখনও এমন প্রকল্পে কাজ করি নি যেটিতে 100% পরীক্ষার কভারেজ ছিল। তবে যদি আপনার 0% পরীক্ষার কভারেজ থাকে ... ... এটি বেশ সুন্দর বলছে।
Kzqai

ধন্যবাদ! আমি মনে করি এটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করা উচিত।
জালাল

5

জোল ছাড়া আর কেউ নিশ্চিতভাবেই এর উত্তর দিতে পারেনি। তবে আমরা কিছু কারণ / পর্যবেক্ষণ চেষ্টা করতে পারি।

প্রথমত, পরীক্ষাটি জোয়েলের পরীক্ষা থেকে অনুপস্থিত নয়

  • টেস্টগুলি সরাসরি দুটি ধাপে দুটি বার উল্লেখ করা হয় (10 এবং 12)
  • একটি বিল্ডের অস্তিত্ব প্রথম পয়েন্টগুলির মধ্যে একটি। বিল্ডিংয়ের ধারণাটি হ'ল তারা ভেঙে গেছে কিনা তা দেখার ক্ষমতা অর্জন করা, সুতরাং আমরা এখানে (পরীক্ষার) বিষয়েও কথা বলছি।

দ্বিতীয়ত, জোয়েল টেস্টের পুরো ধারণাটি (আমি এটি বুঝতে পেরেছি) দ্রুত, হ্যাঁ-কোনও প্রশ্ন নেই। "আপনি কি টিডিডি করেন?" এতে পুরোপুরি ফিট হবে না (উত্তরটি হতে পারে: "আমাদের কিছু", "কোডের সেই অংশের জন্য" বা "আমরা ইউনিট পরীক্ষা করি")।

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


3
"আপনি কি টিডিডি করেন?" হ্যাঁ-না প্রশ্ন হিসাবে অবশ্যই ফিট করে। এবং এর অর্থ হ'ল এটি এমন একটি প্রশ্ন যা প্রত্যেকে জোরালো "হ্যাঁ" দিয়ে উত্তর দেয়, এর প্রকৃত অর্থ "না"।
ইয়ানিস 18

2
@ ইয়ান্নিসরিজস: অনেকটা "আপনি কী কী সেরা সরঞ্জাম কিনে কিনতে পারেন তা ব্যবহার করেন?" (হ্যাঁ ... ওয়েলএল ... কারণের মধ্যে।) এবং "প্রোগ্রামারদের কি চুপচাপ কাজের পরিস্থিতি রয়েছে?" (ওহহহ হ্যাঁ ... ওয়েল ওয়েল ... শান্তির জন্য আপনার রেফারেন্স পয়েন্টের উপর নির্ভর করে, আমি অনুমান করি।)
পিডিআর

@ পিডিআর আপনি খোলা উইন্ডোতে শান্ত হয়ে সাইরেনের শব্দটি বিবেচনা করছেন কিনা তা নির্ভর করে।
রবার্ট হার্ভে

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