টিডিডি: আমি কি ঠিক করছি?


14

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

আমি কি করি:

  1. আমার দরকার একটি নতুন পদ্ধতি সম্পর্কে চিন্তা করুন।
  2. এই পদ্ধতির জন্য একটি পরীক্ষা তৈরি করুন।
  3. ব্যর্থ পরীক্ষা।
  4. লেখার পদ্ধতি।
  5. পাস পাস।
  6. রিফ্যাক্টর পদ্ধতি।
  7. পদ্ধতি পুনরাবৃত্তি করুন।

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

সম্পাদনা

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


5
আপনি ইতিমধ্যে এটি পাকা পেশাদারদের থেকে অনেক ভাল করছেন যারা বলে যে তারা সবকিছু পরীক্ষা করছে (তবে তা নয়)।
ইয়ানিস

কি আপনি বর্ণনা নয় আত্মা TDD- এ করুন।

1
আপনি এটিডিডি বা বিডিডি সন্ধান করতে পারেন।
ডায়েটবুদ্ধ

সম্ভবত উচ্চতর শুরু করুন - আপনার প্রয়োজন এমন একটি নতুন মডিউল চিন্তা করুন ।

উত্তর:


16

আপনি একটি কর্মপ্রবাহ হিসাবে যা বর্ণনা করছেন তা আমার মতে টিডিডির আত্মা নয়

অ্যামাজনে কেন্ট বেকস বইয়ের সংক্ষিপ্তসারটি বলে:

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

ব্যবহারিক টিডিডি

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

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

এর মতো সমস্ত কিছুর মতো একটি ভারসাম্য রয়েছে যা নিজেকে ছাড়া অন্য কেউ দ্বারা সংজ্ঞায়িত করা যায় না। যে কোনও উপায়ে সম্ভবত সঠিকভাবে আরও ভুল।

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

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

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

- এডজার ডাব্লু জিক্সট্রা । (1988 সালে লিখিত, সুতরাং এটি এখন 4.5 দশকের কাছাকাছি।)

এই উত্তরটি দেখুন


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

@ কেভিঙ্কলাইন বেশিরভাগ সময়ই setXXX/getXXXএকেবারেই প্রয়োজন হয় না :)
চিপ

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

13

আপনি খুব কাছের। এই কিছুটা ভিন্ন উপায়ে চিন্তা করার চেষ্টা করুন।

  1. আমার প্রয়োজন এমন একটি নতুন আচরণের কথা ভাবুন।
  2. সেই আচরণের জন্য একটি পরীক্ষা তৈরি করুন।
  3. ব্যর্থ পরীক্ষা।
  4. নতুন লিখুন বা বিদ্যমান পদ্ধতি প্রসারিত করুন।
  5. পাস পাস।
  6. রিফ্যাক্টর কোড।
  7. পদ্ধতি পুনরাবৃত্তি করুন।

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

এছাড়াও, চাচা ববকে টিডিডির তিনটি নিয়ম মনে রাখবেন ।

  1. ব্যর্থ ইউনিট পরীক্ষার পাস করা না হলে আপনাকে কোনও প্রোডাকশন কোড লেখার অনুমতি নেই।
  2. ব্যর্থ হওয়ার পক্ষে পর্যাপ্ত পরিমাণের চেয়ে আপনাকে কোনও ইউনিট পরীক্ষার আর কোনও লেখার অনুমতি নেই; এবং সংকলন ব্যর্থতা ব্যর্থতা।
  3. একটি ব্যর্থ ইউনিট পরীক্ষায় পাস করার জন্য পর্যাপ্ত পরিমাণের চেয়ে আপনাকে আর কোনও প্রোডাকশন কোড লেখার অনুমতি নেই।

1
@ জেক্সানিমা: আপনি আমাদের বেশিরভাগের এক বছরের পরের চেয়ে ভাল করছেন। কেবল আপনাকে পরবর্তী ধাপে নির্দেশ করার চেষ্টা করছি।
পিডিআর

2
আমি মনে করি এই 3 টি বিধি আপনি লিঙ্ক করেছেন; তারা যেমন শোনাচ্ছে তেমন আইডলিক, ব্যতিক্রমধর্মী এবং অত্যন্ত অবাস্তবভাবে দৃ production়রূপে 99% সমস্ত প্রোডাকশন শপের সাথে যে কারও মুখোমুখি হবে।

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

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

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

5

অন্যের প্রতিক্রিয়াগুলিতে যোগ করার জন্য কয়েকটি জিনিস:

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

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

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

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

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

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

1

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

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


Ahh ঠিক. এটাই আমি করছি না। আমি ইতিমধ্যে তাদের প্রাথমিক পরীক্ষা করার পরে আমি সাধারণত আমার পদ্ধতিগুলি লাইন থেকে নীচের দিকে পরীক্ষা করতে পারি এমন একটি পৃথক পরিস্থিতির কথা চিন্তা করেই শেষ করি। আমি কেবল নিশ্চিত করেছিলাম যে এই 'অতিরিক্ত' পরীক্ষাগুলি তৈরি করার মতো ছিল বা এটি শেষ হয়ে গেলে।
ক্যাগসার

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

1

সাধারণত আপনি এটি সঠিকভাবে করছেন।

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

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


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

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

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

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

0

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

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

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

বিডিডি বনাম টিডিডি সম্পর্কে ডানদিকে কিছু ভাল লিঙ্ক রয়েছে। যথোপযুক্ত সৃষ্টিকর্তা.


0

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

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


0

আমি বিশ্বাস করি যে আপনি পরাস্ত করছেন।

আমি অনেক বছর ধরে টিডিডি অনুশীলন করে চলেছি এবং আমার অভিজ্ঞতায়, যখন টিডিডি কার্যকরভাবে সঞ্চালিত হয়, আপনি দুটি প্রধান সুবিধা পাবেন:

  • দ্রুত প্রতিক্রিয়া সরবরাহ করুন
  • রিফ্যাক্টরিং সক্ষম করুন

দ্রুত প্রতিক্রিয়া সরবরাহ করুন

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

রিফ্যাক্টরিং সক্ষম করুন

আপনার যদি ভাল টেস্ট-স্যুট থাকে তবে আপনি কীভাবে সিস্টেমটি ডিজাইন করা উচিত সে সম্পর্কে নতুন অন্তর্দৃষ্টি অর্জন করার সাথে সাথে আপনি নিরাপদে রিফ্যাক্টর করতে পারেন।

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

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

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

বা ইয়ান কুপার যেমন উপস্থাপনাটিতে বলেছেন (আমি স্মৃতি থেকে উদ্ধৃত, তাই সঠিকভাবে উদ্ধৃত করা যাবে না):

নতুন পরীক্ষা লেখার জন্য আপনার যুক্তিটি একটি নতুন আচরণ যুক্ত করা উচিত, কোনও নতুন শ্রেণি যুক্ত করা উচিত নয়


-2

আপনার প্রতিটি পাবলিক পদ্ধতি পরীক্ষা করা উচিত ।

এখানে ধরাটি হ'ল যদি আপনার সর্বজনীন পদ্ধতিগুলি খুব ছোট হয় তবে আপনি সম্ভবত খুব বেশি তথ্য প্রকাশ করছেন। প্রতিটি সম্পত্তি getXXX()প্রকৃতপক্ষে প্রকাশের সাধারণ অনুশীলন encapsulation বিরতি দেয় break

যদি আপনার সর্বজনীন পদ্ধতিগুলি আসলে শ্রেণীর আচরণ হয় তবে আপনার সেগুলি পরীক্ষা করা উচিত। যদি তা না হয় তবে সেগুলি ভাল প্রকাশ্য পদ্ধতি নয়।

সম্পাদনা: পিডির উত্তর আমার চেয়ে অনেক বেশি সম্পূর্ণ complete

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