আমি বুঝতে পারি না যে এটির পরীক্ষা শুরু করার জন্য আমার যদি ডিজাইনের প্রয়োজন হয় তবে টিডিডি কীভাবে আমাকে একটি ভাল ডিজাইন পেতে সহায়তা করে


50

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

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

উদাহরণস্বরূপ, এই 3 প্রয়োজনীয়তা কল্পনা করুন:

  • একটি ক্যাটালগের পণ্যগুলির তালিকা থাকা দরকার
  • ক্যাটালগটি মনে রাখতে হবে কোনও ব্যবহারকারী কোন পণ্য দেখেছিল
  • ব্যবহারকারীদের একটি পণ্য অনুসন্ধান করতে সক্ষম হওয়া উচিত

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

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

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

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


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

3
@ গ্যানাট: টিডিডি বইগুলি কেন ডিজাইন প্রক্রিয়া আরও পরিষ্কার করে না তা এটি একটি তদন্ত।
রবার্ট হার্ভে

4
@ গ্যাनेट: এটি আপনার সম্পাদনা ছিল, আমার নয়। :) প্রশ্ন এবং শিরোনামের শিরোনামে আমার পরিবর্তন দেখুন।
রবার্ট হার্ভে

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

3
সুতরাং এটি পরীক্ষার বিষয়ে সত্যই নয়, এটি নকশা সম্পর্কে। কেবলমাত্র এটি আপনাকে ডিজাইনটি সত্যই সহায়তা করে না, আপনাকে নকশাকে বৈধতা দেওয়ার ক্ষেত্রেও সহায়তা করে। তবে এটি কি না! @ # $ আইএনজি পরীক্ষা করছেন?
এরিক পুনরায়

উত্তর:


17

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

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


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


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


রবার্ট হার্ভে মন্তব্যগুলিতে এটি যোগ করেছেন যা উত্তরে উল্লেখযোগ্য:

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


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

4
@ রবার্ট হার্ভে, জিমি হোফা: আমি যদি আপনার মন্তব্যগুলিকে ১০০ বার ভোট দিতে পারতাম, তবে!
ডক ব্রাউন

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

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

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

8

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

কিভাবে এটা কাজ করে?

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

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

এটা সত্যিই সহজ। এটি কোনও যাদু ডিজাইনের সরঞ্জাম নয়।


6

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

  • একটি ক্যাটালগের পণ্যগুলির তালিকা থাকা দরকার
  • ক্যাটালগটি মনে রাখতে হবে কোনও ব্যবহারকারী কোন পণ্য দেখেছিল

এই প্রয়োজনীয়তাগুলি মানুষের পদে পুনরুদ্ধার করা উচিত। ব্যবহারকারী আগে কোন পণ্যগুলি দেখেছিল তা কে জানতে চায়? ব্যবহারকারী? একজন বিক্রেতা?

  • ব্যবহারকারীদের একটি পণ্য অনুসন্ধান করতে সক্ষম হওয়া উচিত

কিভাবে? নামে? ব্র্যান্ড দ্বারা? পরীক্ষা-চালিত বিকাশের প্রথম ধাপটি একটি পরীক্ষার সংজ্ঞা দেওয়া হয়, উদাহরণস্বরূপ:

browse to http://ourcompany.com
enter "cookie" in the product search box
page should show "chocolate-chip cookies" and "oatmeal cookies"

>

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

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

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


ঠিক আছে, ProductServiceতারপর না। তবে টিডিডি কীভাবে আপনাকে জানিয়েছিল যে আপনার একটি ডাটাবেস এবং একটি ওআরএম প্রয়োজন?
রবার্ট হার্ভে

4
@ রবার্ট: তা হয়নি। প্রয়োজনীয়তা পূরণের সবচেয়ে কার্যকর উপায়ের আমার রায়কে কেন্দ্র করে এটি একটি ডিজাইনের সিদ্ধান্ত। কিন্তু সিদ্ধান্ত পরিবর্তন হতে পারে।
কেভিন cline

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

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

3

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

অতীতে আমি যেখানে এগুলি চালিয়েছি তার কয়েকটি উদাহরণ:

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

  • প্রথমে চেষ্টা করুন এবং নতুন কিছু পরীক্ষা করুন, আপনি বিভিন্ন পন্থা এবং ইন্টারফেসগুলি কৃপণ পেয়েছেন বলে আপনার বেশিরভাগ সময় রিপিং পরীক্ষাগুলি ব্যয় করুন।

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

  • ডিস্ক সাবসিস্টেম বা টিসিপিপ লেভেল যোগাযোগ ইন্টারফেসের মতো প্রথমে অন্তর্নিহিত অস্ট্রেলিয়া বিটের গুচ্ছটি না লিখে পরীক্ষার যোগ্য বৈশিষ্ট্য যুক্ত করার আগে আপনার পর্যায়ে অন্তর্নিহিত যান্ত্রিক পর্যায়ে পর্যাপ্ত পরিমাণ নেই situation

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

আপনার উদাহরণটি মনে হচ্ছে আপনি এখনও কোনও ডিজাইনের কাছে নন, তাই হয় আপনার কোনও আর্কিটেকচার কথোপকথন হওয়া দরকার, অথবা আপনি প্রোটোটাইপ করছেন। আমার মতে আপনার প্রথমে এটির কিছুটি নেওয়া উচিত।


1

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

এফওয়াইআই - দু'টি বই আমি এই বিষয়ে সুপারিশ করি যা স্পষ্ট এবং বাস্তব উদাহরণ দেয়:

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

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


0

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

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

ইউনিট ব্যর্থতাটিকে "ভাঙ্গা" কোডের পরিবর্তে "অসম্পূর্ণ" কোড হিসাবে ভাবাও সহায়ক। টিডিডি অসমাপ্ত ইউনিটগুলির জন্য (প্রত্যাশিত ব্যর্থতা) অনুমতি দেয় তবে ভাঙা ইউনিটগুলির উপস্থিতি হ্রাস করে (অপ্রত্যাশিত ব্যর্থতা)।


1
আমি সম্মত হই না যে এটি একটি বৈধ কর্মপ্রবাহ, তবে এটি কীভাবে উচ্চ-স্তরের আর্কিটেকচারটি এই ধরনের কর্মপ্রবাহ থেকে উত্থিত হতে পারে তা সত্যই ব্যাখ্যা করে না।
রবার্ট হার্ভে

1
ডান, এমভিসি প্যাটার্নের মতো একটি উচ্চ-স্তরের আর্কিটেকচারটি কেবল টিডিডি থেকে উদ্ভূত হচ্ছে না। তবে, টিডিডি থেকে কী উদ্ভূত হতে পারে তা হ'ল সহজেই টেস্টযোগ্য হওয়ার জন্য ডিজাইন করা কোড যা এটি নিজেই একটি নকশা বিবেচনা।
ড্যানিয়েল পেরেরা

0

প্রশ্নে বলা হয়েছে:

... অনেকগুলি বই একটি টুপি থেকে একটি যাদু খরগোশকে টেনে এনে কেবল "প্রোডাক্ট সার্ভিস টেস্টিং" এ ডুব দেয় তবে তারা কীভাবে এই সিদ্ধান্তে পৌঁছেছিল যে সেখানে প্রথমে একটি প্রোডাক্ট সার্ভিস রয়েছে।

তারা এই পণ্যটি কীভাবে পরীক্ষা করবে তা ভেবে তারা এই সিদ্ধান্তে পৌঁছেছিল। "কী ধরণের পণ্য এটি করে?" "আচ্ছা, আমরা একটি পরিষেবা তৈরি করতে পারতাম"। "ঠিক আছে, এরকম একটি পরিষেবার জন্য একটি পরীক্ষা লিখি"


0

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

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

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


0

টিডিডি কি আমার নকশাটি প্রথম স্থানে আবিষ্কার করার উদ্দেশ্যে নয়?

না।

আপনি প্রথমে ডিজাইন না করে এমন কিছু কীভাবে পরীক্ষা করতে পারেন?

উদাহরণস্বরূপ, এই 3 প্রয়োজনীয়তা কল্পনা করুন:

  • একটি ক্যাটালগের পণ্যগুলির তালিকা থাকা দরকার
  • ক্যাটালগটি মনে রাখতে হবে কোনও ব্যবহারকারী কোন পণ্য দেখেছিল
  • ব্যবহারকারীদের একটি পণ্য অনুসন্ধান করতে সক্ষম হওয়া উচিত

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

আপনার সিস্টেমের আক্রমণকারীগুলি কী তা আপনাকে জানতে হবে।

একটি প্রয়োজনীয়তা কিছু হবে:

  • কোনও গ্রাহক একটি নির্দিষ্ট পরিমাণের পণ্য অর্ডার করতে পারেন, যদি এই পণ্যটিতে পর্যাপ্ত পরিমাণ স্টক থাকে।

সুতরাং এটি যদি কেবল প্রয়োজন হয় তবে আপনার মতো ক্লাস থাকতে পারে:

public class Product {

  private int quantity;

  public Product(int initialQuantity) {
    this.quantity = initialQuantity;
  }

  public void order(int quantity) {
    // To be implemented.
  }

}

তারপরে টিডিডি ব্যবহার করে, আপনি আদেশ () পদ্ধতিটি প্রয়োগ করার আগে একটি পরীক্ষার কেস লিখবেন।

public void ProductTest() {

    public void testCorrectOrder() {

        Product p = new Product(10);
        p.order(3);
        p.order(4);

    }

    @Expect(ProductOutOfStockException)
    public void testIncorrectOrder() {

        Product p = new Product(10);
        p.order(7);
        p.order(4);

    }

}

সুতরাং দ্বিতীয় পরীক্ষাটি ব্যর্থ হবে, তারপরে আপনি নিজের পছন্দ মতো অর্ডার () পদ্ধতিটি প্রয়োগ করতে পারবেন।


0

আপনি বেশ সঠিক টিডিডি প্রদত্ত ডিজাইনের ভাল প্রয়োগের ফলস্বরূপ । এটি আপনার নকশা প্রক্রিয়াটিতে সহায়তা করবে না।


তবে এটি আপনাকে ওয়ার্কিং কোডটি না ভেঙে ডিজাইনের উন্নতি করতে নিরাপত্তা জাল দেয়। এই রিফ্যাক্টরিং বেশিরভাগ লোক এড়িয়ে যায়।
অ্যাড্রিয়ান স্নাইডার

-3

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

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