টেস্ট চালিত বিকাশের অসুবিধা? [বন্ধ]


192

পরীক্ষা চালিত নকশা গ্রহণ করে আমি কী হারাব?

কেবল নেতিবাচক তালিকা; নেতিবাচক আকারে লিখিত সুবিধা তালিকাভুক্ত করবেন না do


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

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

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

3
টিডিডি হ'ল একটি খাঁচা যা বিকাশকারীদের সৃজনশীলতাকে আটকায়।
লুইস

13
দয়া করে গুরুত্বপূর্ণ প্রশ্নগুলি বন্ধ করা বন্ধ করুন, জেসুস
ক্যাস্পার লিওন নিলসেন

উত্তর:


129

বেশ কয়েকটি ডাউনসাইড (এবং আমি দাবি করছি না কোনও লাভ নেই - বিশেষত কোনও প্রকল্পের ভিত্তি লেখার সময় - এটি শেষে প্রচুর সময় সাশ্রয় করত):

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

7
মূল বক্তব্য (4) হ'ল যে কোনও সিস্টেম যা সঠিকভাবে সংজ্ঞায়িত হয় না এবং এটি সম্ভবত একটি বিকশিত চাক্ষুষ আচরণ, বিভিন্ন এআই স্পেস, আচরণগত অ্যালগরিদম ইত্যাদির সাথে মিল রেখে পরিবর্তন চালিয়ে যাওয়ার সম্ভাবনা রয়েছে we কাঙ্ক্ষিত পরীক্ষার ফলাফল পরিবর্তন করতে।
আদি

12
সত্য, তবে কি এটি টিডিডি ছাড়া এক হবে না? এটি না করে, আপনাকে আরও ম্যানুয়াল টেস্টিং করতে হবে, যা একই সমস্যায় ভুগবে।
sleske

50
"বিগ টাইম ইনভেস্টমেন্ট" আপনার সমাধানটি বিকাশের সময় পরে কী আপনার সময় বাঁচাতে যাচ্ছে না? বিশেষত কোন জটিলটি নিয়ে? আমি মনে করি এটি আপনার সময় সাশ্রয় করা উচিত। ছোট্ট পরিবর্তনগুলি সহজেই সিস্টেমটিকে ভেঙে দিতে পারে এমন রক্ষণাবেক্ষণের পর্ব সম্পর্কে চিন্তাভাবনা করার দরকার নেই। ( অথবা সম্ভবত আমি ভবিষ্যতের বাগগুলি প্রতিরোধকারী ইউনিট + রিগ্রেশন টেস্ট সম্পর্কে সবেমাত্র নির্বুদ্ধ হয়ে আছি )
রবার্ট কোরিতনিক

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

3
@ আদি: আমি মনে করি আপনি ভুল বলেছেন। আমার মতে প্রতিটি সিস্টেমকে সেভাবে পরীক্ষা করা যায়, এটি কেবল স্ব-শৃঙ্খলার বিষয়।
ব্লুলেটচ্যুস 16

189

আপনি যদি "রিয়েল" টিডিডি করতে চান (পড়ুন: প্রথমে লাল, সবুজ, রিফ্যাক্টর পদক্ষেপের সাথে পরীক্ষা করুন) তবে আপনাকে যখন ইন্টিগ্রেশন পয়েন্টগুলি পরীক্ষা করতে চান তখন আপনাকে মক / স্টাবগুলিও ব্যবহার করতে হবে।

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

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

এবং মনে রাখবেন যে পরীক্ষার কোডটিও বজায় রাখা এবং যত্ন নেওয়া উচিত। টেস্টগুলি প্রতিটি কিছুর মতো পঠনযোগ্য হওয়া উচিত এবং ভাল কোড লিখতে সময় লাগে।

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

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

এই সমস্ত পরীক্ষাগুলি "সিস্টেম পরিবর্তন" (রিফ্যাক্টরিংয়ের বিপরীতে) আপনার সিস্টেমের আচরণ এবং সাধারণ পরিবর্তনগুলি কেবল খুব কঠোর এবং সময় সাপেক্ষ হয়ে ওঠে make

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

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


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

24
টিডিডি নয়, ইউনিট টেস্টিং এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের সমালোচনা বলে মনে হচ্ছে।
plmaheu

5
প্রকৃতপক্ষে সঠিক ** ইউনিট পরীক্ষা করা ** - কেবল টিডিডি নয় m এর জন্য মক / স্টাব প্রয়োজন। এবং একটি ইন্টারফেসের বিরুদ্ধে প্রোগ্রামিং করা প্রায়শই একটি ভাল ধারণা, একই ধরণের জন্য for আপনি যদি ইউআই এবং যুক্তি মিশ্রিত করেন তবে আপনার একটি খারাপ সময় আসবে। আপনার যদি ডিবি ইন্টারঅ্যাকশন পরীক্ষা করতে হয় তবে আপনি ইউনিট পরীক্ষার জন্য আপনার ডিএওকে উপহাস করতে পারেন এবং একীকরণ পরীক্ষার জন্য আসল জিনিসটি ব্যবহার করতে পারেন।
TheMorph

1
আমি একমত যে এক ধরণের টিডিডিতে ঝাঁপ দেওয়ার আগে ডিজাইন এবং পরীক্ষার জ্ঞান রয়েছে upon নতুন ভাড়া নিয়ে প্রকল্পগুলিতে এটি গুরুতর কারণ তারা উভয়ই নতুন।
हितেশ সাহু

উইজডম
পক্ষে

66

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

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


3
অবশ্যই একটি সমস্যা হতে পারে তবে আমি দেখতে পাচ্ছি যে আমি এর দ্বারা কতটা ক্ষতিগ্রস্থ হচ্ছি তার মধ্যে একটি উল্লেখযোগ্য পার্থক্য দেখছি। আমি অনুমান করি যে সমস্ত "টেস্টেবল কোড লেখার জন্য" নেমে এসেছে।
রব কুপার

2
স্কট, আমি সাধারণত যে উদাহরণটি দেই এটি একটি এসপিএক্স পৃষ্ঠায় এম্বেড করা একটি স্কেলডাটা সোর্স। আপনি এটির জন্য একটি পরীক্ষা স্বয়ংক্রিয় করতে পারবেন না। এটি সহজ এবং মাত্র 1 টি ফাইল দিয়ে কাজটি সম্পন্ন করে। পরীক্ষারযোগ্য উপাদানটি হ'ল এমএসএফটি-এর স্কেলডেটা সোর্স অবজেক্ট এবং এটি আমাদের জন্য ইতিমধ্যে হয়ে গেছে। আমাদের আরও কিছু করার দরকার নেই।
এরিক জেড দাড়ি

8
+1 "আপনি সম্ভবত ভাল ডিজাইনের প্রিন্সিপালগুলির চেয়ে টিডিডির উপর ভিত্তি করে ডিজাইনের সিদ্ধান্ত নেওয়া শুরু করতে পারেন" - টিডিডি আইএমএইচএর সবচেয়ে বড় ক্ষতি।
আন্দ্রেস জেপেশেজি

2
@ স্কটসএড সমস্যা আইএমও হ'ল নকশাটি প্রথমে রূপরেখার করা উচিত এবং তারপরে পরীক্ষাগুলি লিখে এটি বৈধকরণ করা উচিত এবং প্রয়োজনে সংশোধন করা উচিত। আমি পরীক্ষাগুলি লিখতে সক্ষম হতে যখন লোকেরা ভাল নকশাকে হুমকির মুখে ফেলেছিল তখন আমি অনেকগুলি কেস দেখেছি। ফলস্বরূপ - বেশিরভাগ সিস্টেমে পরীক্ষাগুলি আচ্ছাদিত ছিল তবে নকশাটি সত্যই খারাপ ছিল। আমি মনে করি যে এই ঘটনার কারণ TDD- এ নিম্নলিখিত সঙ্গে খুব সহজ পদ্ধতি হিসাবে জনসাধারণ পর্যন্ত পিছিয়ে দেয় হয় ভুল ধারণা : if part of the system is covered by tests and they pass, then everything is fine (including design)
ইউরি নাকনটেকায়ি

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

54

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

আপনার মস্তিষ্ককে "টেস্টিং মোডে" আনতে অনেক সময় লাগে এবং "টেস্টেবল কোড" লেখা নিজের মধ্যে দক্ষতা।

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

সুতরাং, (সংক্ষেপে)

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

পিএস: আপনি যদি ইতিবাচক লিঙ্কগুলি চান, আমি এটিতে বেশ কয়েকটি প্রশ্ন জিজ্ঞাসা করেছি এবং উত্তর দিয়েছি, আমার প্রোফাইলটি দেখুন


1
দুঃখের বিষয়, আমি প্রথম যুক্তিসঙ্গত উত্তরটি দেখেছি ...
ড্যানিয়েল সি সোব্রাল

5
বেশ বাস্তব এবং সহজ উত্তর - "মাইন্ড সেটিং" অংশের জন্য +1
হা

50

কয়েক বছর যাবত আমি টেস্ট চালিত বিকাশের অনুশীলন করেছি, আমাকে বলতে হবে সবচেয়ে বড় ডাউনসাইডগুলি হ'ল:

এটি পরিচালনায় বিক্রয়

টিডিডি জোড়ায় সেরা হয়। একটির জন্য, কেবলমাত্র যদি / অন্য বিবৃতিটি কীভাবে লিখতে হয় তা আপনি কীভাবে জানেন যখন কেবল প্রয়োগকরণটি লেখার তাগিদকে প্রতিহত করা শক্ত । তবে একটি জুড়ি আপনাকে কাজে রাখবে কারণ আপনি তাকে কাজে রাখেন। দুঃখের বিষয়, অনেক সংস্থাগুলি / পরিচালকদের মনে হয় না যে এটি সম্পদের একটি ভাল ব্যবহার। একটি বৈশিষ্ট্য লেখার জন্য কেন দু'জনের জন্য অর্থ প্রদান করবেন, যখন আমার দুটি বৈশিষ্ট্য একই সাথে করা দরকার?

অন্যান্য বিকাশকারীদের কাছে এটি বিক্রয়

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

আপনার প্রোডাকশন কোড সহ পরীক্ষার কোড বজায় রাখা

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

পরীক্ষার লিখন যাতে আপনি সমস্ত কিছু কভার করেন (100% কোড কভারেজ)

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

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

ব্যক্তিগতভাবে আমি খুঁজে পেয়েছি যে টিডিডি দিয়ে আমি সহজ কোড লিখি, নির্দিষ্ট কোড সমাধান কার্যকর হবে কিনা তা নিয়ে আমি বিতর্ক করতে কম সময় ব্যয় করি এবং যে কোডের রেখাটি নির্ধারিত মানদণ্ডগুলি পূরণ করে না তার পরিবর্তন করার আমার কোনও ভয় নেই that দলটি.

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


7
"(কাশি ভিএস টেস্ট), তারপরে মূল" বাকী বাক্যটির সমাপ্তি কী ছিল?
অ্যান্ড্রু গ্রিম

বিক্রয় সমস্যার জন্য +1। :) আমি এখনই একটি নতুন সংস্থায় আছি এবং কীভাবে এমন একটি সংস্কৃতি তৈরি করব তা চিন্তা করে যা দক্ষতার সাথে অবাধে ছড়িয়ে পড়তে পারে।
এসকো লুনটলা

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

24

আপনার প্রথম টিডিডি প্রকল্পে দুটি বড় ক্ষতি, সময় এবং ব্যক্তিগত স্বাধীনতা রয়েছে

আপনি সময় হারাবেন কারণ:

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

আপনি ব্যক্তিগত স্বাধীনতা হারিয়েছেন কারণ:

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

আশাকরি এটা সাহায্য করবে


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

14

এই পরীক্ষাগুলি পাস করার জন্য কোডটি লেখার আগে আপনার ক্লাসগুলি কীভাবে পরিচালিত হবে তা পরিকল্পনা করার জন্য টিডিডি আপনার প্রয়োজন। এটি একটি প্লাস এবং বিয়োগ উভয়ই।

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

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


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

4
আমি শূন্যতার সাথে একমত টিডিডির মূল টিউটোরিয়ালগুলি যেখানে আপনি কোনও কোড ছাড়াই পরীক্ষাটি লিখবেন - এবং একটি সংকলন ত্রুটি পাবেন - এটি উন্মাদ।
এমপারাজ

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

12

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

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


9

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

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


13
আহা - তবে সেখানেই টিডিটিডিডি আসে Test টেস্ট ড্রাইভড টেস্ট চালিত বিকাশ।
স্নো ক্র্যাশ

3
আমি এখনও মাঝে মাঝে আমার পরীক্ষার পরীক্ষাগুলিতে বাগগুলি খুঁজে পাই। তাই এখন আমি টিডিটিটিডিটিডি অনুশীলন করি।
হর্সওলফ্যাট

@ স্নো ক্র্যাশ +1 আমি লোকেরা তাদের পরীক্ষাগুলি পরীক্ষা করতে কত সময় ব্যয় করে তা দেখতে গুগলের চারপাশে তাকিয়ে ছিলাম এবং তারপরে আমি এই উত্তরটি দেখেছি। আমি আনুষ্ঠানিকভাবে এটি পেয়েছি কারণ আমি টিডিটিটিডিটিডি নিয়ে ভাবছিলাম।
বালিনকিংঅফমুরিয়া

1
আমি বিশ্বাস করি ভবিষ্যতটি (টিডি) <আপ> ∞ </sup> টিডিডি। আমার এখন পর্যন্ত একটি ফাইল রয়েছে: এতে "x" অক্ষর রয়েছে।
মাইকে রডেন্ট

আমি @ টিম এর সাথে একমত সদস্যদের এটিকে গ্রহণ করা দৃest়তম অংশ।
অলু স্মিথ

7

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

এই নোটটিতে, যদি আপনার স্যানিটি পরীক্ষা করে পরীক্ষা করা হয় না এমন কিছু খুঁজে পাওয়া যায়, তবে নিশ্চিত হয়ে ফিরে যান এবং এটির জন্য একটি পরীক্ষা লিখুন।


আমি বড় হওয়ার পর থেকে আমি কোনও ধরণের দোষে বিশ্বাস করি না।
মাইকে রডেন্ট

7

টিডিডির খারাপ দিকটি হ'ল এটি সাধারণত 'methodগিল' পদ্ধতির সাথে দৃ associated়ভাবে জড়িত থাকে যা কোনও সিস্টেমের ডকুমেন্টেশনের উপর কোনও গুরুত্ব দেয় না , বরং কোনও পরীক্ষার 'কেন' কেবল কোনও বিকাশকারীর মধ্যে থাকে তার চেয়ে একটি নির্দিষ্ট মান ফেরত দেওয়া উচিত তার পিছনে বোঝা behind মাথা।

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

আমি যখন ডকুমেন্টেশনের কথা বলি, এটি কোডের কোনও ঝাপসা নয়, এটি সরকারী লেখাই যা প্রয়োগের বাহ্যিক যেমন ব্যবহারের ক্ষেত্রে এবং পটভূমির তথ্য যা পরিচালক, আইনজীবি এবং দরিদ্র স্যাপ দ্বারা উল্লেখ করা যেতে পারে যাকে আপডেট করতে হবে ২০১১ সালে আপনার কোড


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

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

6

আমি বেশ কয়েকটি পরিস্থিতির মুখোমুখি হয়েছি যেখানে টিডিডি আমাকে উন্মাদ করে তোলে। কিছু নাম রাখার জন্য:

  • টেস্ট কেস রক্ষণাবেক্ষণযোগ্যতা:

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

    এর অর্থ হ'ল নতুন দলের সদস্যদের পরীক্ষার ক্ষেত্রে কী ঘটছে তা দখল করতে যথেষ্ট পরিমাণ সময় লাগবে take পরিবর্তে, এটি আরও বেশি অর্থের মধ্যে অনুবাদ করা যেতে পারে।

  • পরীক্ষা অটোমেশন জটিলতা:

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

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


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

5

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


4

আপনি লেখার পরীক্ষাগুলিতে ব্যয় করেছেন অনেক সময় lose অবশ্যই, দ্রুত বাগগুলি ধরে এটিকে প্রকল্পের শেষের দিকে রক্ষা করা যেতে পারে।


এটি কি সত্যিই একটি ইতিবাচক বলার নেতিবাচক বা বোকা উপায়।
ইয়ানএল

3

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

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


3

আপনার সমস্ত কোড পরীক্ষা করার আগে আপনি "সম্পন্ন" হওয়ার ক্ষমতা হারাবেন।

কোড চালানোর আগে আপনি কয়েক হাজার বা কয়েক হাজার লাইন লেখার ক্ষমতা হারাবেন।

আপনি ডিবাগিংয়ের মাধ্যমে শেখার সুযোগ হারাবেন।

আপনি শিপ কোডটিতে নমনীয়তা হারাবেন যা আপনি নিশ্চিত নন।

আপনি আপনার মডিউলগুলি শক্ত করে দম্পতির স্বাধীনতা হারাবেন।

আপনি নিম্ন স্তরের ডিজাইনের ডকুমেন্টেশন রচনার বিকল্পটি হারাবেন lose

কোড সহ যে স্থিতিশীলতা রয়েছে তা আপনি হারিয়ে ফেলেন যা প্রত্যেকে পরিবর্তন হতে ভয় পায়।


1
"সময়মতো সমাধান সরবরাহ করুন" - এর সংজ্ঞাটি নির্ভর করে - এটি হ'ল "কোনও পুরানো, আংশিকভাবে ভাঙা সমাধান সময়মতো" বা "সময়মতো কাজের সমাধান সরবরাহ"। আপনি অবশ্যই আংশিক ভাঙ্গা সমাধান সময়মতো সরবরাহ করার দক্ষতাটি looseিলা করেছেন। দেব গতি যতদূর যায় - আমি মেট্রিকটি "ডেভ শুরু এবং এক সপ্তাহের ত্রুটিযুক্ত লাইভ মোতায়েনের মধ্যে সময় কাটিয়েছি" পছন্দ করি। আপনি যদি এটি মোটামুটিভাবে পরিমাপ করেন তবে টিপিডি-র অবিশ্বাস্য কাজের একটি কোপম্লেক্স টুকরোটি এমনকি ঘড়িটি থামানো মোটেই শক্ত।
ড্যাফাইড রিস

47
-১, ওপি ঠিক এই জিনিসটি বলেছিল যা সে চায়নি।
এরিক্ক্যালেন

1
অনেক সত্য বক্তব্য, কিন্তু: এরিক্ক্যালেন যা বলেছিল। -1।
j_random_hacker

@ j_random_hacker হ্যাকার বলেছেন ... LOL
ড্যান

কেবল তৃতীয় বিবৃতিটি হ'ল "ডিবাগিংয়ের মাধ্যমে শিখে
ফেলুন

2

আমি প্রাথমিক বিকাশের সময় সম্পর্কে উত্তর দ্বিতীয়। আপনি পরীক্ষার সুরক্ষা ব্যতীত অনর্থকভাবে কাজ করার ক্ষমতাও হারাতে পারেন। আমি টিডিডি নাটবার হিসাবেও বর্ণনা করেছি, যাতে আপনি কয়েকজন বন্ধুকে হারিয়ে ফেলতে পারেন;)


2

এটি ধীর হিসাবে স্বীকৃত। দীর্ঘমেয়াদী যা শোকের শর্তে সত্য নয় এটি আপনাকে রাস্তায় ফেলে দেবে, তবে আপনি আরও কোড লিখবেন যাতে যুক্তিযুক্তভাবে আপনি "কোডিং না পরীক্ষা করে" ব্যয় করছেন। এটি একটি ত্রুটিযুক্ত যুক্তি, কিন্তু আপনি জিজ্ঞাসা করেছিলেন!


2

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

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

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


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

1

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


এটি একটি সাধারণ সমস্যা। আমি এগুলি কঠিন কোডেড বস্তুগুলির সাথে উপহাস করার চেষ্টা করি, তারপরে পৃথকভাবে ডাটাবেসটি পরীক্ষা করি। আপনার ব্যবসায়ের স্তরটি কেবলমাত্র স্থিতিশীল ডেটার সাথে কাজ করা উচিত, আপনার ডাল তারপরে একটি নিয়ন্ত্রিত পরিবেশে পরীক্ষা করা হবে (যেখানে আপনি এতে ডেটা স্ক্রিপ্ট করতে পারেন)
রব কুপার

1

আপনি একাধিক দায়িত্ব নিয়ে বড় ক্লাস হারাবেন। আপনি সম্ভবত একাধিক দায়িত্ব নিয়ে বড় পদ্ধতি হারাবেন। আপনি রিফ্যাক্টর করার কিছু দক্ষতা হারাতে পারেন, তবে আপনি চুল্লিটির প্রয়োজনীয়তাও হারাবেন।

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

আমি বলছি এটি একটি মিস করা বিমূর্ততা নির্দেশ করে - যদি ব্যক্তিগত কোডটি সত্যিই পরীক্ষার প্রয়োজন হয় তবে এটি সম্ভবত একটি পৃথক শ্রেণিতে থাকতে হবে।

ডেভ মান


1

আপনাকে অ্যাপ্লিকেশনগুলি অন্যভাবে লিখতে হবে: এগুলি সেগুলি পরীক্ষামূলক করে তোলে। প্রথমে এটি কতটা কঠিন তা আপনি অবাক হবেন।

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

টিডিডি হ'ল একটি দক্ষতা যাতে জুনিয়র দেবগণ প্রথমে লড়াই করতে পারে (মূলত কারণ তাদের এইভাবে কাজ করা শেখানো হয়নি)।

সামগ্রিকভাবে যদিও লোকেরা দক্ষ হয়ে ওঠার সাথে সাথে সমস্যার সমাধান হয়ে যায় এবং আপনি 'গন্ধযুক্ত' কোডটি বিমূর্ত করেন এবং আরও স্থিতিশীল ব্যবস্থা রাখেন।


1

এটিতে যেতে কিছুটা সময় লাগে এবং একটি প্রকল্পে এটি শুরু করতে কিছুটা সময় লাগে তবে ... আমি যখন নিজেকে একটি স্বয়ংক্রিয় পরীক্ষা খুব দ্রুত খুঁজে পেতে পারি যে মূর্খ বাগগুলি খুঁজে পাই তখন আমি সর্বদা কোনও টেস্ট চালিত পদ্ধতির না করার জন্য দুঃখ করি। এছাড়াও, টিডিডি কোডের মান উন্নত করে।


1
  • ইউনিট পরীক্ষা লিখতে আরও কোড হয়, এইভাবে বিকাশের একটি উচ্চতর ব্যয়
  • এটি বজায় রাখা আরও কোড
  • অতিরিক্ত শেখার প্রয়োজন

1

সব ভাল উত্তর। টিডিডির অন্ধকার দিক এড়াতে আমি কয়েকটি উপায় যুক্ত করব:

  • আমি অ্যাপগুলিকে তাদের নিজস্ব এলোমেলোভাবে স্ব-পরীক্ষা করতে লিখেছি। নির্দিষ্ট পরীক্ষাগুলি লেখার সমস্যাটি যদি আপনি সেগুলি প্রচুর পরিমাণে লেখেন তবে সেগুলি কেবল আপনার মনে করা কেসগুলি কভার করে। এলোমেলো-পরীক্ষার জেনারেটরগুলি এমন সমস্যা আবিষ্কার করে যা আপনি ভাবেননি।

  • প্রচুর ইউনিট পরীক্ষার সম্পূর্ণ ধারণাটি বোঝায় যে আপনার কাছে এমন উপাদান রয়েছে যা জটিল ডেটা স্ট্রাকচারের মতো অবৈধ অবস্থায় যেতে পারে। যদি আপনি জটিল ডেটা স্ট্রাকচার থেকে দূরে থাকেন তবে পরীক্ষা করার মতো অনেক কম।

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


এলোমেলোভাবে পরীক্ষাগুলি বিরতিহীনভাবে ব্যর্থ হতে পারে এবং তাদের পুনরাবৃত্তি করা শক্ত করে তুলতে পারে
ডেভিড সাইকস

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

0

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

কোড পরিবর্তন করার সাথে সাথে আপনাকে পরীক্ষাগুলিও পরিবর্তন করতে হবে। রিফ্যাক্টরিংয়ের সাথে এটি অতিরিক্ত কাজ হতে পারে।


9
সমস্ত ব্যক্তিগত পদ্ধতিগুলি যে কোনও উপায়ে বিদ্যমান পাবলিক পদ্ধতির মাধ্যমে পরীক্ষা করা উচিত।
গ্যারি শাটলার

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

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

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

0

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

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


একেবারে। টিডিডি মূল্যায়ন করার সময় আপনাকে বিডিডি বিবেচনা করতে হবে।
ব্যবহারকারী 9991 21

দেখে মনে হচ্ছে বিডিডি = আচরণ-চালিত বিকাশ
হাইয়ালকি

0

আপনাকে নিশ্চিত করতে হবে যে আপনার পরীক্ষাগুলি সর্বদা আপ টু ডেট থাকে, আপনি যে মুহুর্তে লাল বাতিগুলি উপেক্ষা করতে শুরু করেন সেই মুহূর্তেই পরীক্ষাগুলি অর্থহীন হয়ে যায়।

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


0

যে ব্যক্তি আমার দলকে চটপট বিকাশের শিক্ষা দিয়েছিল সে পরিকল্পনার প্রতি বিশ্বাস করে না, আপনি কেবলমাত্র ক্ষুদ্রতম প্রয়োজনের জন্যই লিখেছিলেন।

তার মূলমন্ত্রটি ছিল রিফ্যাক্টর, রিফ্যাক্টর, রিফেক্টর। আমি বুঝতে পেরেছিলাম যে রিফ্যাক্টরটির অর্থ 'পরিকল্পনা না করা'।


-1

বিকাশের সময় বাড়ে: প্রতিটি পদ্ধতির পরীক্ষার প্রয়োজন, এবং নির্ভরতার সাথে আপনার যদি বৃহত অ্যাপ্লিকেশন থাকে তবে আপনাকে পরীক্ষার জন্য আপনার ডেটা প্রস্তুত এবং পরিষ্কার করতে হবে।


: আমি 36 yeas জন্য উন্নয়নশীল করে থাকেন এখন এই পোস্টে আপনি কিছু ভাল পরামর্শ দিতে পারে stackoverflow.com/questions/738539/tdd-how/45971814#45971814
user2288580
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.