টিডিডি নেতিবাচক অভিজ্ঞতা [বন্ধ]


94

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

উপরের প্রশ্নগুলি আমার টিডিডি অভিজ্ঞতা চলাকালীন এমন জিনিসগুলি সম্পর্কে। সুতরাং আমি আগ্রহী যে অন্যান্য বিকাশকারীদের অনুরূপ অনুভূতি রয়েছে এবং সেগুলি সম্পর্কে তারা কী ভাবেন whether

টিডিডির নেতিবাচক দিকগুলি বর্ণনা করার জন্য নিবন্ধগুলির লিঙ্কগুলির জন্য কৃতজ্ঞ হবে (গুগল ইতিবাচক এবং প্রায়শই ধর্মান্ধ নিবন্ধগুলি দ্বারা পরিপূর্ণ)।


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

20
আপনি ইন্টারনেটে নেতিবাচকতা খুঁজে পেতে সমস্যা হচ্ছে ?!
এরিক উইলসন

4
@ জোব (এবং সম্ভবত অন্য): ভুলবেন না যে তিনি টিডিডি সম্পর্কে জিজ্ঞাসা করেছিলেন, ইউনিট পরীক্ষার জন্য নয়। টিডিডি! = ইউনিট পরীক্ষা করা।
n1ckp

2
আমি এই প্রশ্নের উত্তর দেওয়ার জন্য প্রলুব্ধ, তবে আমি সত্যিই শুরু করতে চাই না কারণ এটি আমার অর্ধেক দিন সময় নেবে।
রেই মিয়াসাকা

2
আমি যখন নিজেকে বাগের জন্য পর্যাপ্ত সময় ব্যয় করতে দেখি যে মনে হয় যে আমি লেখার আগে যা লিখি তার প্রতিটি পরীক্ষার জন্য কম সময় লেখার জন্য ব্যয় করতে পারব, আমি পরীক্ষার-প্রথম-সমস্ত-বিষয়-টিডিডি গ্রহণ করব না। আমি পরিবর্তে লজ্জায় আমার মাথা ঝুলিয়ে দেব এবং একটি নতুন ক্যারিয়ার সন্ধান শুরু করব। আপনি যে বাগগুলি সম্পর্কে বলছেন তা নয়? ডিজাইন? হ্যাঁ. এটাই. ঠিক এটি। এবং নিজেকে বোকা কাজ চালিয়ে যাওয়ার জন্য একটি সুরক্ষা জাল এবং লাইসেন্স দিয়ে আপনি দৃust় নকশা সম্পর্কে জঘন্য জিনিস শিখেন নি। আইডিই দূরে রাখুন এবং আপনি যদি আসল সমস্যাটি আবিষ্কার করতে চান তবে আপনার কোডটি পড়ার চেষ্টা করুন।
এরিক রেপেন

উত্তর:


94

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

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

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


7
+1 "পরিকল্পনার পর্বের অংশ হিসাবে একটি উচ্চ স্তরে পরীক্ষাগুলির সামনে নকশা করা - স্থাপত্য নকশার পাশাপাশি" আমার কাছেও এটি অনেক বেশি যুক্তিযুক্ত মনে হয়।
স্টিভেন জিউরিস 12 '45

11
অ্যারোনচট এগিলের অর্থ কোনও পরিকল্পনা নয়, এটি কেবল সময় পরিকল্পনার অর্থ ।
অ্যাডাম জ্যাসকিউইচ

25
@ অ্যাডাম জ্যাসকিউইচস: আমি "কোন অগ্রিম পরিকল্পনা" জিনিস পছন্দ করি না। সম্মতি, পরিকল্পনা সংজ্ঞা দ্বারা সুস্পষ্ট । আপনি যদি আগে থেকে পরিকল্পনা না করেন তবে ইভেন্টের সময় আপনি কোনও পরিকল্পনা করছেন না; আপনি উন্নতি করছেন। ;-)
সিজারগন

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

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

66

এই ( ক্লোজার লেখক) রিচ হিকি ইন্টারভিউতে নিম্নলিখিতটি রয়েছে। আমি 100% সহানুভূতি বোধ করছি:

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

ওয়ার্ড বইয়ের সাক্ষাত্কারে কোডারসে ডোনাল্ড নথের অনুরূপ অন্য একটি বক্তব্য, এখান থেকে অনুলিপি করা হয়েছে :

Seibel: ব্যবহারিক কাজের কথা বলতে গিয়ে, আর্ট অফ কম্পিউটার প্রোগ্রামিং-এ কাজ করার মাঝামাঝি আপনি আপনার টাইপসেটিং সিস্টেম টেক্স লিখতে দশ বছরের বিরতিতে পরিণত করেছিলেন। আমি বুঝতে পেরেছি আপনি কম্পিউটার থেকে সম্পূর্ণ দূরে টেক্সের প্রথম সংস্করণ লিখেছেন।

নুথ: আমি যখন টেক্সটি মূলত 1977 এবং '78 সালে লিখেছিলাম তখন অবশ্যই আমার কাছে সাক্ষরতার প্রোগ্রামিং ছিল না তবে আমার স্ট্রাকচার্ড প্রোগ্রামিং ছিল। আমি এটি লম্বা হাতের একটি বড় নোটবুকে লিখেছিলাম, পেন্সিলে। ছয় মাস পরে, আমি পুরো প্রকল্পটি পেরিয়ে যাওয়ার পরে, কম্পিউটারে টাইপ করা শুরু করি। আমি '78 of এর অক্টোবরে প্রোগ্রামটি লেখা শুরু করার সময় '78 এর মার্চ মাসে ডিবাগিং করেছি। এর জন্য কোডটি স্ট্যানফোর্ড আর্কাইভগুলিতে রয়েছে - এটি সবই পেন্সিল — এবং অবশ্যই আমি ফিরে এসে সাবরুটিন পরিবর্তন করব কারণ এটি শিখতে হবে। এটি প্রথম-প্রজন্মের সিস্টেম ছিল, সুতরাং প্রচুর বিভিন্ন আর্কিটেকচার সম্ভব হয়েছিল এবং আমি এটির সাথে কিছুক্ষণ বেঁচে থাকি এবং সেখানে কী ছিল তা না জানার আগেই তা ফেলে দেওয়া হয়েছিল। এবং এটি একটি মুরগির ও ডিমের সমস্যা ছিল you আপনি ফন্ট না দেওয়া পর্যন্ত আপনি টাইপসেট করতে পারবেন না তবে টাইপসেট না করা পর্যন্ত আপনার ফন্ট থাকতে পারে না। তবে কাঠামোগত প্রোগ্রামিং আমাকে আক্রমণকারীদের ধারণা দেয় এবং কীভাবে কালো বক্সগুলি তৈরি করতে হয় তা আমি বুঝতে পারি। সুতরাং আমার আত্মবিশ্বাস ছিল যে কোডটি কাজ করবে যখন শেষ পর্যন্ত এটি ডিবাগ করব। আমি অনুভব করেছি যে আমি কোনও পরীক্ষার আগে ছয় মাস অপেক্ষা করে থাকলে আমি অনেক সময় সাশ্রয় করব saving আমার যথেষ্ট আস্থা ছিল যে কোডটি প্রায় সঠিক ছিল।

Seibel: এবং সময় সাশ্রয় হবে কারণ আপনি অসম্পূর্ণ কোডটি পরীক্ষা করতে স্ক্যাফল্ডিং এবং স্টাবগুলি তৈরি করতে সময় ব্যয় করবেন না?

নুথ: ঠিক আছে।


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

4
আমি রিচ হিকি বলতে যা বোঝায় তা দেখতে পাচ্ছি, তবে আমি এটি যুক্ত করতে চাই: আমার অভিজ্ঞতা হল, আপনি যখন পরীক্ষাগুলি লিখছেন তখন আপনার ডিজাইন সম্পর্কে সত্যই চিন্তা করা এবং আপনি কীভাবে আপনার কোডকে পরীক্ষণযোগ্য করে তুলবেন সে সম্পর্কে চিন্তা করা দরকার, যা আমার অভিজ্ঞতা, ভাল ডিজাইন ফলাফল।
নিক্লাস এইচ

3
ওডি টিডিডির সাথে নেতিবাচক অভিজ্ঞতার জন্য জিজ্ঞাসা করলে আপনার উদাহরণ দুটিই এই প্রশ্নের সাথে প্রাসঙ্গিক বলে মনে হয় না কারণ টিডিডি কার্যকরভাবে উদাহরণ দেখায় না।
উইনস্টন ইওয়ার্ট 4'11

5
@ মিশেল বার্গওয়ার্ট: বাস্তবায়নে বাগগুলি থেকে মুক্তি পাওয়ার জন্য একটি বিদ্যমান, ভাল ডিজাইনের সাথে পরীক্ষাগুলি যুক্ত করা তুলনামূলক সহজ। তবে বাজে নকশা থেকে মুক্তি পাওয়ার অর্থ একটি সম্পূর্ণ পুনর্লিখন। সুতরাং নকশাটি সঠিকভাবে পাওয়ার ক্ষেত্রে প্রাথমিক লক্ষ্য হওয়া উচিত ; মৃত্যুদন্ড কার্যকর করার পরে এটি ঠিক করা সহজ।
জুনাস পুলক্কা

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

58

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

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

আমি মনে করি টিডিডি দরকারী, তবে আমি এটি সম্পর্কে মতামতপূর্ণ নই। যদি এই "নো-মান পরীক্ষাগুলি" রক্ষণাবেক্ষণকে কঠিন করে তুলছে - সেগুলি মুছুন! আমি বাকি কোডগুলির মতো একইভাবে পরীক্ষাগুলি আচরণ করি। যদি এটি সরিয়ে ফেলা যায় এবং জিনিসগুলি সহজ করে তোলা যায় তবে তা করুন!

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


7
আপনি এটি অনুচ্ছেদে 2 পেরেক দিয়েছিলেন
শেলডন ওয়ার্কেন্টিন

4
"আমি এটি ব্যক্তিগতভাবে দেখিনি, তবে আমি শুনেছি যে কিছু জায়গাগুলি কোড কভারেজ এবং পরীক্ষার গণনা ট্র্যাক করে" আমি এমন পরিবেশে বাস করেছি এবং প্রকৃতপক্ষে কোনও কোড বের করা হয়নি কারণ এর ফলে পরীক্ষা ব্যর্থ হতে পারে। যতক্ষণ না আমি প্রকৃত পরীক্ষাগুলি ডিবাগ করা শুরু করেছি এবং তাদের মধ্যে অনেকের এমন গুরুতর ত্রুটি রয়েছে তা পরীক্ষা করে পাস করার জন্য কোডকে ভুল ফলাফল তৈরি করতে বাধ্য করেছিল। আমি যখন প্রশ্নটি তৈরি করি তখনই: "টেস্টগুলি কে পরীক্ষা করছেন" যার কাছে এখনও পর্যন্ত টিডিডি সম্প্রদায়ের কাছ থেকে সন্তোষজনক উত্তর আমার কাছে আসেনি। ইউনিট টেস্টের জন্য ইউনিট পরীক্ষা, কেউ?
11:37 এ wুকেছে

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

"সত্যিই সাধারণ পরীক্ষা যা শ্রেণীর ইন্টার্নালগুলির সাথে জড়িত ছিল" <- আপনার সমস্যা এখনই আছে। শুধুমাত্র পাবলিক ইন্টারফেসে পরীক্ষা করুন। টিডিডি! = ইউটি
স্টিভেন এ। লো

2
@ স্টিভেনএ.লাউ - আমি জানি যে এখন, কিন্তু 9 বছর আগে এটি এতটা পরিষ্কার ছিল না :) "টিডিডি কোনও পরীক্ষার দক্ষতা নয়"
স্টিভ জ্যাকসন

41

আমি এখানে একটি অঙ্গ নেভিগেশন বাইরে যাব এবং নিষ্ঠুর সততার সাথে ঘোষণা করতে পারি যে এটি আক্ষরিক অর্থেই সময়ের অপচয়। (বেশিরভাগ পরিস্থিতিতে।)

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

  1. বাস্তব ডকুমেন্টেশনের চেয়ে ভাল ডকুমেন্টেশন নয়।
  2. বাগ বা রিগ্রেশনগুলি ধরেন না
  3. আমি যদি কিছু কার্যকরী প্রোগ্রামিং এবং কম্পোজেবিলিটি কনসেপ্ট প্রয়োগ করি তবে আমার ডিজাইনগুলি তাদের শেষের চেয়ে আরও ভাল করে তোলে না ।
  4. এমন সময় কি কোড রিভিউগুলি বা পোলিশ ডকুমেন্টেশন এবং স্পেসিফিকেশনগুলি করার চেয়ে ভালভাবে ব্যয় করা যায়।
  5. পরিচালকরা যখন কয়েকশ সবুজ আইকনের তালিকা দেখেন তখন তাদের নিরাপত্তার একটি মিথ্যা অনুভূতি দেয়।
  6. সীমিত ইনপুট-আউটপুট ম্যাপিং সহ অ্যালগরিদমগুলির প্রয়োগে উত্পাদনশীলতা উন্নত করে।
  7. যে আপনি পারে কদাকার হয় জানেন কি TDD- এ ফলে কাজ করছি, তবে যদি আপনি কোন রোজগার নেই বোঝার কেন এত ভাল কাজ করে, কেন আপনার ডিজাইন পথ তারা বাইরে আসতে হয়।

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

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

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

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


খুব আকর্ষণীয় দৃষ্টিভঙ্গি পুনরায়: আচার। আপনি কিছুটা চেনাশোনাতেও বুঝতে পারেন যে কোনও প্রোগ্রামার তার নৈপুণ্যের প্রতিশ্রুতিবদ্ধ ছিলেন যে টিডিডি-র সাথে তাঁর আনুগত্যের সম্পূর্ণ অনুপাতযোগ্য বলে গণ্য করা হয়।
ইয়ালেস্টার

আমি কিছু পরিস্থিতিতে এটি একটি নকশা উন্নত করতে পারেন বলতে চাই, কিন্তু বেশিরভাগ সময় ডিজাইন খুব ভাল সংজ্ঞায়িত এবং পাবলিক ইন্টারফেস ব্যবহার করার জন্য খুব মডুলার করা প্রয়োজন যখন। Cases ক্ষেত্রে লাইব্রেরি নিজেই প্রয়োগ করার আগে এর জন্য পরীক্ষাগুলি লিখতে পাবলিক ইন্টারফেসে বাগগুলি খুঁজে বের করার পাশাপাশি সেই মডুলারটিকে জোর করতে সহায়তা করতে পারে।
11:39 এ জ্বলন্ত

8
@ জওয়ান্টিং লোকেরা টিডিডি করে কারণ তারা জানে না ডিজাইনটি কী মডুলার তৈরি করে, তাই তারা তাদের 40 "বাইকগুলির 35 টি" প্রশিক্ষণ চাকা কখনই নিতে পারে না take আপনি ধারণাগুলি বুঝতে পারলে একটি মডুলার ডিজাইন তৈরি করা সর্বদা একটি পরিচালনাযোগ্য কাজ, কারণ আপনার ডিজাইনের প্রতিটি দ্বিধাটি মড্যুলার হওয়ার প্রক্রিয়ায় এটি ধারণার ক্ষেত্রে, এটির কারণেই এটি পরিচালনা করার আকারের হবে। আমি মেনে নিচ্ছি না যে টিডিডি মডুলারিটি জোর করার ক্ষেত্রে কার্যকর, তবে আমি একমত নই যে মডিউলার ডিজাইন তৈরির জন্য কাউকে বাধ্য করা দরকার। মডুলার ডিজাইন একটি নিখুঁতভাবে শিক্ষণীয় এবং শেখার দক্ষতা।
রেই মিয়াসাকা

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

1
@ কল এই সাক্ষাত্কারে তিনি বলেছিলেন "প্রায় 15 থেকে 35% বেশি সময়" - আপনি তাঁর উদ্ধৃতি দিয়েছিলেন কেবল 15% নয়। গবেষণায় কেবল জাভা / সি ++ / সি # (সম্ভবত সি # 2, তারিখটি দেওয়া হয়েছে) - একই অপরিহার্য ওওপি দৃষ্টান্তের সমস্ত ভাষা অন্তর্ভুক্ত। আমি কার্যত ভাষাতে (এবং সি # 3 তেও) সম্ভবত 15% এরও বেশি এবং সম্ভবত 35% এরও বেশি উত্পাদনশীল, এবং আমি স্টেটলেস, কমপোজেবল কোড লিখতে অনেক কম বাগ তৈরি করি - একই ধরণের বাগ যা পরীক্ষিতদেরকে পরীক্ষা করে, কারণ উভয় জিনিসই একই ধরণের সমস্যার সমাধান করে। অন্য কথায়, নিশ্চিত, বাগের মধ্যে 60-90% হ্রাস, তবে কিসের তুলনায় ?
রে মিয়াসাকা

18

যোগ করার জন্য, আমি লক্ষ্য করেছি টিডিডি নিয়ে অন্য একটি উদ্বেগ হ'ল:

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

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


2
পিএইচবি হেল্প লাগছে! এটি আমাকে সেই সংস্থাগুলির স্মরণ করিয়ে দেয় যেগুলি বোনাস স্কিমগুলি প্রবর্তন করে - অবশ্যই যা ঘটে তা হ'ল বিকাশকারীরা মান কোডের দিকে মনোনিবেশ করার পরিবর্তে বোনাসের প্রয়োজনীয়তা যা কিছু তা পূরণের দিকে মনোনিবেশ করেন। অনিবার্যভাবে আপনি ক্রাপিয়ার কোড পান। (বর্তমান ব্যাংকিং সংকটের সাথে এখানেও একটি সাদৃশ্য রয়েছে :-))
ট্রোজাননেম

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

কোড কভারেজ টিডিডি নয় , ইউনিট টেস্টিংয়ের উদ্বেগ । টিডিডি পাবলিক ইন্টারফেসের মাধ্যমে বৈশিষ্ট্য এবং পরীক্ষাগুলি সম্পর্কে কেবল যত্নশীল।
স্টিভেন এ। লো

14

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

Refactoring একটি দুর্দান্ত ব্যায়াম যাহাই হউক না কেন, কিন্তু এটা করা হয় প্রয়োজনীয় একটি testable দশায় কোড পাওয়ার জন্য। এবং এই পদক্ষেপের পরে, আমার পরিবর্তনগুলি কোনও কিছু ভঙ্গ করেছে কিনা তা দেখার জন্য আমার কোনও চেক এবং ব্যালেন্স নেই; অ্যাপ্লিকেশন চালিয়ে যাওয়া এবং প্রতিটি ব্যবহারের ক্ষেত্রে পরীক্ষা করার স্বল্পতা।

অন্যদিকে, কোনও টিডিডি প্রকল্পে বৈশিষ্ট্য যুক্ত / বাগ সংশোধন করা খুব সোজা হয়ে যায়। স্বভাব অনুসারে, টিডিডি সহ লিখিত কোডটি সাধারণত ছোট ছোট টুকরা দিয়ে কাজ করার জন্য বেশ ডিক্লুপড হয়।

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


1
ইউনিট পরীক্ষাগুলি লিখতে যদি এটি কষ্টসাধ্য হয় তবে উদ্বেগগুলি সাধারণত দুর্বল পৃথকীকরণ হয়। আমি এটি টিডিডির ত্রুটি হিসাবে দেখছি না, যদি কোনও কিছু দ্রুত এই সমস্যাগুলি সুস্পষ্ট করে তোলে।
টম কের

7
এটি টিডিডির সাথে নেতিবাচক অভিজ্ঞতা নয়, এটি ক্রেপি কোডের সাথে নেতিবাচক অভিজ্ঞতা।
রি মিয়াসাকা

13

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

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

আরেকটি সমস্যা হ'ল আপনি যখন নিজের পরীক্ষাগুলি অন্ধভাবে বিশ্বাস করেন। সত্য হ'ল - অন্য কোডগুলির মতো - আপনার পরীক্ষাগুলিতেও বাগ থাকতে পারে। আপনি যেমন আপনার প্রয়োগের দিকে তেমনি আপনার পরীক্ষাগুলির প্রতি সমালোচনা করুন critical


2
আপনার পরীক্ষার জন্য কিছু পরীক্ষা লিখতে হবে! : পি ...... আই কিড, আই কিড
আরেন

+1 +1 +1 +1 (যদি আমার 3 টি ডামি অ্যাকাউন্ট থাকে)। # 2 বাক্যটি অত্যন্ত অন্তর্দৃষ্টিপূর্ণ এবং টিডিডি নিশ্চিতকরণ পক্ষপাতমুক্ত যা খুব বেশি প্রচলিত।
tgm1024

11

টিডিডি-র একটি বড় অনুরাগী হিসাবে আমি মাঝে মাঝে এই ত্রুটিগুলি দেখি

  • প্রায় 100% কোড কভারেজের জন্য অনেক পরীক্ষা লেখার প্রলোভন । আমার মতে পরীক্ষা লেখার দরকার নেই
    • সাধারণ সম্পত্তি গেটার / সেটটারদের জন্য
    • প্রতিটি ক্ষেত্রে যখন একটি ব্যতিক্রম নিক্ষেপ করা হয়
    • যা বিভিন্ন স্তরগুলির মাধ্যমে একই কার্যকারিতাটি পরীক্ষা করে। (উদাহরণ: প্রতিটি প্যারামিটারের জন্য ইনপুট বৈধতা পরীক্ষা করার জন্য যদি আপনার ইউনিটেট থাকে তবে ইন্টিগ্রেশন পরীক্ষার মাধ্যমেও এই সমস্ত পরীক্ষাগুলির পুনরাবৃত্তি করা প্রয়োজন হবে না)
  • অনুরূপ পরীক্ষার জন্য পরীক্ষার কোডের রক্ষণাবেক্ষণের ব্যয় , যা কেবল সামান্য পরিবর্তিত হয় (কোড-নকলের মাধ্যমে তৈরি (ওরফে অনুলিপি-পেস্ট-উত্তরাধিকার))। আপনার যদি ইতিমধ্যে একটি থাকে তবে অনুরূপটি তৈরি করা সহজ। তবে আপনি যদি পরীক্ষার কোডটিকে রিপ্যাক্টর না করেন তবে সহায়ক-পদ্ধতিগুলিতে কোড সদৃশতা কেটে আপনার ব্যবসায়িক কোডের পরিবর্তন সম্পর্কিত প্রয়োগের বিবরণ প্রয়োগের বিশদগুলি পরীক্ষা করার জন্য আপনার কিছুটা সময় প্রয়োজন হতে পারে।

  • আপনি বছরের কম হয় সময় চাপ আপনাকে প্রলুব্ধ হতে পারে ভাঙা পরীক্ষা নিষ্কাশন (অথবা তাদের মন্তব্য) পরিবর্তে ফিক্সিং এর তাদের। এইভাবে আপনি পরীক্ষাগুলিতে বিনিয়োগ হারাবেন


2
+1: "প্রায় 100% কোডকভারেজের জন্য অনেক পরীক্ষার লেখার প্রলোভন।": আমি একবার এই ফাঁদে পড়েছি এবং এতগুলি ঘন্টা সমস্ত ইউনিট পরীক্ষাগুলি লেখার পরেও আমার কোডটিতে আমি খুঁজে পেয়েছি কেবলমাত্র তিনটি বাগ ইউনিট পরীক্ষাগুলি দ্বারা আচ্ছাদিত নয় এবং ধাপে ধাপে কোডটি ডিবাগ করে সহজেই পাওয়া যাবে।
জর্জিও

9

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

হয়তো কিছু, কোনদিন আমার মন পরিবর্তন হবে, কিন্তু এক্সপি চর্চা মধ্যে, ধারণা refactoring নির্দয়ভাবে , এবং কোডের নব্য নিজস্ব ফর্ম অনেক বেশি গুরুত্বপূর্ণ এবং আমার জন্য সবচেয়ে বড় উত্পাদনশীলতা হতে, cf. জেমস নিউকির্কের একটি কাগজের উদ্ধৃতি :

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

সাহসের ধারণাগুলি এবং শক্তিশালী ফিডব্যাক লুপগুলি যা তিনি উল্লেখ করেছেন তাও আমার মনে, উত্পাদনশীলতার চাবিকাঠি।


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

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

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

3
ইউনিট পরীক্ষাগুলি আমার অভিজ্ঞতায় রিফ্যাক্টরিংকে অনেক সহজ করে তুলেছে ।
টম কের 4'11

1
@ নিক গেমিং শিল্পের বড় সমস্যা হ'ল সময়সীমা, যা সর্বদা হয় - "আমাদের অর্ধ বছর আগে সরবরাহ করতে হয়েছিল"। আমি মনে করি সময় সীমিত পরিবেশে ইউনিট-পরীক্ষার বিরুদ্ধে খেলে। কিছু ক্ষেত্রে এটি সঠিক সিদ্ধান্ত নয়, তবে বেশিরভাগ ক্ষেত্রে পরীক্ষার লিখন ছাড়াই শিপিং দ্রুত হয়। নির্ভর করে, সত্যিই নির্ভর করে ...
কোডার 21

7

আমার নেতিবাচক টিডিডি অভিজ্ঞতা, এটি যেমন সীমাবদ্ধ তা কেবল কোথা থেকে শুরু করবেন তা জেনে চলে! উদাহরণ হিসেবে বলা যায়, আমি কিছু TDD- এ ভাল করার চেষ্টা করব এবং হয় যেখানে পরীক্ষার তুচ্ছ জিনিষ ছাড়া (আমি একটি আপ নতুন পারেন শুরু করার কোন ধারণা আছে Fooবস্তুর, আমি একটি মধ্যে পাস করতে পারেন Quuxথেকে Baz, এবং মত। টেস্ট যে কিছু পরীক্ষা না ), বা যদি আমি এটি কোনও বিদ্যমান প্রকল্পে বাস্তবায়নের চেষ্টা করছি তবে আমি দেখতে পেয়েছি যে টিডিডিতে ব্যবহার করতে সক্ষম হতে আমাকে বিভিন্ন ক্লাসটি পুনরায় লিখতে হবে। শেষ ফলাফলটি হ'ল আমি দ্রুত ধারণাটি পুরোপুরি ত্যাগ করেছি।

এটি সম্ভবত সাহায্য করে না যে প্রায়শই আমি পুরো সংস্থার একমাত্র ব্যক্তি যিনি জানেন যে কোন ইউনিট টেস্টিং (টিডিডি বা অন্যথায়) এবং কেন এটি ভাল জিনিস।


1
এই যেখানে উপহাস অবকাঠামো আসা। Instantiate Fooসঙ্গে নকল বদলে বস্তু Quuxএবং Bazসরাসরি, তাহলে আপনি ফাংশন আপনি পরীক্ষা করতে এবং তারপর চেক করুন যে ঠাট্টা ফাংশন আশা সঙ্গে বলা হয়েছে চান কল করতে পারেন। মক অবজেক্টগুলি হ'ল প্রযুক্তিটি সক্ষম করে যা ইউনিটগুলি ডিকুপাল করতে এবং সেগুলি ইউনিট পরীক্ষামূলক করে তুলতে সহায়তা করে। এই কারণেই সিঙ্গেলনগুলি মন্দ, কারণ আপনি প্রায়শই কেবল তাদের উপহাস করতে পারেন না । * 8 ')
মার্ক বুথ 4'11

7

টিডিডি জিলিয়টস।

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

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

এবং এটির তুলনা করুন পিটার নরভিগ সুডোকু সলভার টিডিডি ব্যবহার করে নয়, বরং পুরানো কালের ইঞ্জিনিয়ারিং ব্যবহার করে: http://norvig.com/sudoku.html


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

একমাত্র পরীক্ষিত চালিত বিকাশের সম্পূর্ণ কোর্স এবং এটি সত্যই বিকাশকারীদের ডান ট্র্যাকের উপর পেয়ে যায় (সি ++ তে একটি লিঙ্কযুক্ত তালিকা প্রয়োগের বিপরীতে)।
Zombies

লিংক ভেঙে গেছে ডুড!
lmiguelvargasf

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

লল মানুষ আমি ট্রল করছিলাম ... আমি লিখেছিলাম যে এতদিন আগে আমি সেই ছোট্ট রত্নটি ভুলে গিয়েছিলাম।
জম্বিগুলি

5

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


1
প্রদত্ত ইনপুটগুলির জন্য আপনার সফ্টওয়্যার প্রদত্ত আউটপুটগুলির একটি সেট দেয় তা জেনে অন্য কোনও অনুভূতি পেতে পারেন?

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

4

টিডিডির কিছু সুবিধা রয়েছে:

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

টিডিডি দীর্ঘমেয়াদী বিনিয়োগ। আপনি যখন আপনার অ্যাপ্লিকেশনটির রক্ষণাবেক্ষণের মোডে পৌঁছাবেন সেই প্রচেষ্টাটি চূড়ান্ত হয়ে যায়, এবং যদি অ্যাপ্লিকেশনটি সেই পর্যায়ে পৌঁছানোর পরিকল্পনা না করা হয় আপনি কখনই বিনিয়োগটি পুনরুদ্ধার করতে পারবেন না।

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


3
পাশাপাশি টিডিডি পদ্ধতির ছাড়াই সহজ ইউনিট পরীক্ষার মাধ্যমে বেনিফিট পয়েন্ট 2 অর্জন করা যেতে পারে। সুবিধা 1 আপনার যে কোনও উপায়ে করা উচিত। (এপিআইতে ফোকাস করা) টিডিডি ব্যবহার করে ক্রেপি এপিআই তৈরি করা এখনও সম্পূর্ণ সম্ভব, তবে হ্যাঁ, আপনি নিশ্চিত যে এটি কাজ করবে (লিখিত পরীক্ষার জন্য)।
স্টিভেন জিউরিস 4'11

2
প্রশ্নটি টিডির সুবিধা সম্পর্কে জিজ্ঞাসা করছিল না was ইতিমধ্যে এটিতে প্রচুর অন্যান্য প্রশ্ন রয়েছে।
অ্যারোনআউট

1
অ্যারোনট, আমি তার ব্যথার বিষয়গুলি সম্বোধন করছি।

উত্তরগুলির প্রশ্নের সমাধান করা উচিত ।
অ্যারোনআউট

1
@ অ্যারোনট, তারপরে কিছু লিখুন।

3

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

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

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


+1 দুর্দান্ত মন্তব্য। এটি সত্যই এক উপায় হতে হবে না বা কোনওভাবেই হবে না।
অযৌক্তিক

3

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


1
সাধারণত একটি দ্বিতীয় প্রচেষ্টা আপনাকে প্রথম প্রচেষ্টা, টিডিডি বা না করার চেয়ে সমস্যার আরও অন্তর্দৃষ্টি দেয়।
wobbily_col

3

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

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

সিস্টেমের সাহসগুলি সহজেই প্রয়োগ করা হয়েছিল এবং প্রতিটি সাবসিস্টেমের জন্য কী কী দায়বদ্ধ হবে তা নির্দিষ্ট করার জন্য এখানে টিডিডি কার্যকর ছিল।

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

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

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

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