বিডিডি ব্যবহার করার সময় ইউনিট টেস্টগুলি কীভাবে ব্যবহার করবেন?


18

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

একটি ব্যবহারিক পয়েন্ট রয়েছে যা আমি পাই না, ভেবেছিলাম: একটি। ফিচার ফাইল রয়েছে যাতে বিএ সিস্টেমের সমস্ত প্রত্যাশিত আচরণ লিখবে। বিএ হিসাবে, সিস্টেমটি কীভাবে তৈরি হচ্ছে তার কোনও ধারণা নেই, তাই আমরা এরকম কিছু লিখব:

+ পরিস্থিতি 1: অ্যাকাউন্টটি জমা হয় +

দেওয়া অ্যাকাউন্টে জমা আছে

এবং কার্ডটি বৈধ

এবং বিতরণকারী নগদ আছে

যখন গ্রাহক নগদ অনুরোধ করেন

তারপরে অ্যাকাউন্টটি ডেবিট করা হয়েছে তা নিশ্চিত করুন এবং নগদ বিতরণ হয়েছে তা নিশ্চিত করুন

এবং কার্ডটি ফিরে এসেছে তা নিশ্চিত করুন

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

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


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

দুঃখিত, আমি এটি পেতে চাই না। তুমি বলতে চাও আমি কি ডিসপেনসরকে উপহাস করব? আমি কীভাবে এটি পরীক্ষা করব?
জেএসবাচ

আপনি যখন সরবরাহকারী পরীক্ষা করছেন তখন আপনি অ্যাকাউন্ট, কার্ড এবং গ্রাহককে উপহাস করবেন।
রবার্ট হার্ভে

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

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

উত্তর:


28

আচরণের চালিত বিকাশ এবং পরীক্ষা চালিত বিকাশ প্রশংসনীয় তবে একে অপরের জন্য প্রতিস্থাপন নয়।

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

প্রতিটি ছোট উপাদান কীভাবে কাজ করে তার অদ্ভুত কৌতুকপূর্ণ বিবরণ ইউনিট টেস্টে বর্ণিত। ইউনিট টেস্টের ফলাফলগুলি আপনাকে শসার ক্ষেত্রে লেখার দৃশ্যের সমর্থন করে।

গাড়ী নির্মাণের প্রক্রিয়াটি কল্পনা করুন।

প্রথমত, পণ্য দল তাদের ধারণাগুলি নিয়ে আসে এবং অবশেষে সেগুলি ব্যবহারের পরিস্থিতিতে সিদ্ধ করে দেয়:

Scenario: Starting the car
    Given I am standing in front of the drivers door
    When I open the door
    Then the door should lift up DeLorean-style (yeah, baby!)
    When I get into the car
    And turn the key
    Then the engine roars to life

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

উপরের দৃশ্যটি একটি "বিগ পিকচার" পরীক্ষা। গাড়ির প্রতিটি উপাদানকে "ছোট চিত্র" পরীক্ষার প্রয়োজন যাতে তারা পুরোটির মধ্যে সঠিকভাবে কাজ করে তা নিশ্চিত করে।

বিল্ডিং এবং টেস্টিং সফ্টওয়্যার অনেক ক্ষেত্রে একই। আপনি উপর থেকে নীচে থেকে নকশা করেন, তারপরে নীচে থেকে তৈরি করুন। আপনি এমনকি ইঞ্জিন শুরু করতে না পারলে এমন দরজা কেন উপরে উঠবে? আপনার যদি ব্যাটারি না থাকে তবে স্টার্টার কেন?

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

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


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

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

[...] যা বিডিডি অনুসারে শসাতে লিখিত বৈশিষ্ট্য ও দৃশ্যপট হবে। আপনি নীতি এবং টুলিং বিবাদ করছেন।
jub0bs

ঠিক আছে, ঠিক আছে, শব্দটি কিছুটা বন্ধ, তবে মূল বিষয়টি হ'ল কোনও অ্যাপ্লিকেশনটির আচরণ বৈশিষ্ট্য এবং দৃশ্যে ধরা পড়ে।
গ্রেগ বার্গার্ড্ট

9

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

আসলে, না, BDD হয় না TDD- এ থেকে "পরবর্তী ধাপে"। এটা তোলে হয় TDD- এ। বা আরও স্পষ্টভাবে, এটি টিডিডির একটি পুনরায় কাজ করা is

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

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

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

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

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

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

আমি বিশ্বাস করি কেন্ট বেক এটিকে "জুমিং" বলে। উচ্চ-স্তরের শুরু করুন, তারপরে বিশদটি "জুম ইন করুন", তারপরে আবার ফিরে আসুন।


1

দাবি অস্বীকার: আমি বিডিডিতে বিশেষজ্ঞ নই, তবে আপনি যে নিবন্ধটি লিঙ্ক করেছেন তাতে আমার দৃষ্টিভঙ্গি দেওয়ার চেষ্টা করছি try

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

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

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

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

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


দ্রুত পয়েন্ট হিসাবে, জুনিত আপনার পরীক্ষাগুলির নামকরণকে সমর্থন করে; আপনাকে কেবল একটি @ টেষ্ট টীকাটি ব্যবহার করতে হবে। যদিও এটি 2003 এ ফিরে নাও করতে পারে।
soru

@ সুরু ২০০৩ সালে ফিরে এটি সত্যই "পরীক্ষা" শব্দটি প্রয়োগ করেছিল।
লুনিভোর

নিবন্ধটির লেখক হলেন ড্যান নর্থ, যিনি প্রথমে ধারণাটি নিয়ে এসেছিলেন। একটি জিনিস তিনি লক্ষ্য করেছেন যে "পরীক্ষা" শব্দটি আমাদের বাস্তবায়ন (সমাধান ডোমেন) পরীক্ষা করার দিকে পরিচালিত করে যেখানে প্রকৃতপক্ষে, পরীক্ষাগুলি অন্বেষণ এবং সংজ্ঞায়িত করা আমাদের সত্যই সমস্যা ডোমেনে রাখে। ডেন বিডিডিকে "টিডিডি বলতে কী বোঝায়" বলে বর্ণনা করেছেন। আরও তথ্যের জন্য এটি পড়ুন: dannorth.net/2012/05/31/bdd-is- Like
tdd-
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.