আপনার কি সত্যিই প্রথম কোনও পরীক্ষায় বিডিডি / টিডিডি করতে হবে?


11

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

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

অবশ্যই আপনার পরীক্ষার সাথে এটি পরিপূরক করা উচিত যা বৈশিষ্ট্যটি যেমন বৈশিষ্ট্যটির মতোই কাজ করছে তা নিশ্চিত করতে ব্যবহৃত হয়।

কোন চিন্তা?


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

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

1
@ ম্যাকনাইল: এটি একটি সাধারণ ভুল ধারণা। টিডিডি পরীক্ষা ইউনিট পরীক্ষা নয়। টিডিডি বৈশিষ্ট্যগুলি পরীক্ষা করে , যার কোনও সেট স্কেল নেই।
স্টিভেন এ। লো

2
তবে একটি সেট স্কেল রয়েছে: টেডিকে টিডিডিতে দ্রুত সম্পাদন করতে হবে। এমন পরীক্ষাগুলি রয়েছে যা অবশ্যই টিডিডির বাইরে নয়। সব মিলিয়ে টিডিডি একটি উন্নয়ন পরিকল্পনা, পরীক্ষার পরিকল্পনা নয়।
ম্যাকনিল

@ ম্যাকনিল: "দ্রুত" একটি আপেক্ষিক শব্দ। আমার শেষ প্রকল্পের পরীক্ষার স্যুটটি প্রায় 30 মিনিটের মধ্যে কার্যকর করে। এটি 8 ঘন্টা ম্যানুয়াল পরীক্ষার প্রতিস্থাপন করে । এটাই "দ্রুত" যথেষ্ট!
স্টিভেন এ। লো

উত্তর:


8

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

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

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

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

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


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

17

হ্যাঁ! অন্যথায়, আপনি যা পান তা হ'ল উন্নয়ন-চালিত পরীক্ষা

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


3
প্রথম লাইন দুর্দান্ত।
EpsilonVector

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

15

আপনি যদি প্রথমে আপনার পরীক্ষা না লিখে থাকেন তবে আপনি আপনার পরীক্ষার মাধ্যমে উন্নয়ন চালাচ্ছেন না। তবে, আপনি পরীক্ষা চালিত উন্নয়ন করছেন না!


ন্যায্য হওয়ার জন্য বিডিডি করার সময় (টিডিডি নয়) আমাদের প্রথমে পরীক্ষা লিখতে হবে কিনা তা নিয়ে প্রশ্নটি আরও সঠিক নয়?
বাইটেদেভ

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

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

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

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

4

আপনি যদি এইভাবে কাজ করতে চান তবে এটির জন্য যান। তবে এটি পরীক্ষা-চালিত-বিকাশ নয়।


3

আপনি যা বর্ণনা করছেন তা অনেকটা সামনের দিকের নকশার পদ্ধতির মতো শোনাচ্ছে । দুর্ভাগ্যক্রমে, সামনের দিকের নকশাটি চৌকস পদ্ধতিতে অ্যালেক্স পাপাদিমুলিসের ব্যঙ্গাত্মক ছুরিকাঘাত।


আমি ভাবছিলাম যে আপনারা এমন কোনও নিবন্ধ সম্পর্কে জানেন যা এফএডি-তে ফিরে লড়াই করে, এর বিদ্রূপাত্মক ছুরিকাঘাতে অস্বীকার করবে?
সিএল 22

3

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

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

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