ইউনিট টেস্টিং এবং টেস্ট চালিত বিকাশের মধ্যে পার্থক্য


64

বর্ণনাগুলি পড়া থেকে, আমি বুঝতে পারি যে টিডিডি পরীক্ষাগুলি ফাংশনটি লেখার আগে এবং ইউনিট টেস্টিংয়ে করা হয়, এটি পরে করা হয়।

এটিই কি মূল পার্থক্য, বা দুটি পদটিকেও এর সাথে তুলনা করা যায় না। সম্ভবত, ইউনিট টেস্টিং টিডিডির একটি সংহত অংশ।

উত্তর:


104

ইউনিট টেস্টিং বলতে বোঝায় যে আপনি যা পরীক্ষা করছেন, টিডিডি আপনি যখন পরীক্ষা করছেন।

দুটো অর্থেগোনাল।

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

আপনি নিজের কোডটি লেখার আগে, আপনি নিজের কোডটি লেখার আগে বা আপনার কোড লেখার সময় ইউনিট পরীক্ষা লিখতে পারেন।

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

টিডিডির সবচেয়ে গুরুত্বপূর্ণ অংশটি হ'ল মাঝারি ডি । আপনি পরীক্ষা আপনাকে চালিত হতে দিন । পরীক্ষাগুলি আপনাকে জানায় যে কী করা উচিত, এরপরে কী করা উচিত। তারা আপনাকে বলবে যে এপিআই কী হতে চলেছে, ডিজাইনটি কী। (এটি গুরুত্বপূর্ণ: টিডিডি প্রথমে পরীক্ষাগুলি লেখার বিষয়ে নয় projects প্রচুর প্রকল্প রয়েছে যা পরীক্ষাগুলি লিখতে প্রথমে টিডিডি অনুশীলন করে না tests পরীক্ষাগুলিকে প্রথমে লেখার পক্ষে পরীক্ষাগুলি বিকাশ করতে সক্ষম হওয়ার পূর্বশর্ত re)


1
দুর্দান্ত উত্তর যোগ করবে ... টিডিডি হ'ল যখন আপনি পরীক্ষাগুলি আপনাকে ধাক্কা দেওয়ার জন্য পরীক্ষা দেয় এবং আপনার উন্নয়নের প্রচেষ্টাগুলি টানতে বৈশিষ্ট্যগুলি ...
মার্টিন

তারা যদিও অর্থেগোনাল নয়। ইউনিট পরীক্ষা ছাড়াই আপনার টিডিডি থাকতে পারে না।
জ্যাকবিবি

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

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

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

21

ইউনিট টেস্টিং পরীক্ষা চালিত বিকাশের একটি উপাদান

আপনি পরীক্ষা চালিত বিকাশ না করে ইউনিট টেস্টিং করতে পারেন। তবে আপনি ইউনিট পরীক্ষা ব্যবহার না করে পরীক্ষা চালিত বিকাশ করতে পারবেন না।

আপনি যখন ট্র্যাডিশনাল ইউনিট টেস্টিং করেন , আপনি আপনার কোড লেখার পরে পরীক্ষা লেখেন।

টেস্ট চালিত বিকাশ পদ্ধতির কোডটি লেখার আগে ইউনিট পরীক্ষা লিখতে হয়।

টিডিডি (আইএমএইচও) এর সর্বাধিক আকর্ষণীয় সুবিধাগুলি সাধারণ ইউনিট পরীক্ষার সাথে তুলনা করে:

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

বিবৃতিতে উদ্দেশ্য হিসাবে আপনি "ইউনিট" মিস করেছেন: "তবে আপনি পরীক্ষা ব্যবহার না করে পরীক্ষা চালিত বিকাশ করতে পারবেন না।" ?
রাটকোক

@ রাতকোক: না এটি উদ্দেশ্যমূলক ছিল না। আমাকে এটি ঠিক করতে দিন।

আমার এই সংজ্ঞাটি সবচেয়ে ভাল লেগেছে। এটি অন্য উত্তরের চেয়ে শব্দে একসাথে রাখা ভাল।
টেক

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

13

টিডিডি এবং ইউনিট টেস্টিং দুটি খুব নির্দিষ্ট শর্তাদি যা প্রায়শই অপব্যবহার হয়।

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

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


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

6

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


3

টিডিডি কোড লেখার দার্শনিক দৃষ্টিভঙ্গি: প্রথমে পরীক্ষাগুলি লিখুন। আপনি যে পরীক্ষাগুলি লিখেন সেগুলি ইউনিট পরীক্ষা।


1

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


1

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

(কিছু টিডিডি রূপগুলি 'ইউনিট' কে পছন্দসই কার্যকারিতার দিকে সবচেয়ে ক্ষুদ্র বর্ধমান পদক্ষেপ হিসাবে বিবেচনা করে ...)


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

1
@ জেন্টিং যে অনুশীলন করে বলে দাবি করে তাদের ত্রুটিগুলির জন্য পদ্ধতিটিকে দোষ দিবেন না। যে কোনও সরঞ্জামের অপব্যবহার করা যেতে পারে
স্টিভেন এ লো লো

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

টিডিডি ডিজাইনের বিষয়ে বিবেচনা করে - কেন এটি স্বীকৃতি পরীক্ষা অন্তর্ভুক্ত করবে? কিভাবে এটি "ড্রাইভ" ডিজাইন করবে?
ভিটালি আইসেনকো

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