টিডিডি করার সময় কেন সমস্ত পরীক্ষা একবারে লিখবেন না?


54

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

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


20
আপনার জন্য সর্বোত্তম কাজ করে (কিছু পরীক্ষার পরে) করুন after অন্ধভাবে অনুসরণ করে ডগমা অনুসরণ করা কখনও ভাল জিনিস নয়।
মাইকেল বর্গওয়ার্ট

6
আমি সাহস করি যে আপনার সমস্ত পরীক্ষা একবারে লেখার মতো আপনার অ্যাপ্লিকেশন কোড একবারে লেখার মতো writing
মাইকেল হরেন


3
"মস্তিষ্কের ডাম্প" ইস্যুটিকে সম্বোধন করা: আপনি যখন বিভিন্ন নির্দিষ্ট ইনপুট পরীক্ষার প্রয়োজনীয়তা অনুধাবন করেন তখন কখনও কখনও টেস্টিং / কোডিংয়ের পয়েন্টগুলি উপস্থিত থাকে এবং আপনার সাথে বিভ্রান্ত হওয়ার আগে সেই উপলব্ধির স্পষ্টতাকে বোঝাতে চাইলে একটি প্রবণতা থাকে the কোডিং এর minutiae। আমি সাধারণত একটি পৃথক তালিকা বজায় রেখে এটি পরিচালনা করি (যেমন মাইলিন), অথবা অন্যথায় টেস্ট ক্লাসে মন্তব্যগুলির একটি তালিকা সহ আমি পরীক্ষা করতে মনে রাখতে চাই (যেমন // পরীক্ষা নাল কেস) remember যাইহোক, আমি এখনও একবারে কেবল একটি পরীক্ষার কোড করি এবং পরিবর্তে তালিকাভুক্তভাবে পদ্ধতিতে পদ্ধতিতে কাজ করি।
স্যাম গোল্ডবার্গ

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

উত্তর:


49

পরীক্ষা চালিত ডিজাইনটি আপনার এপিআই অধিকার পাওয়ার বিষয়ে , কোড নয়।

প্রথমে সবচেয়ে সহজ ব্যর্থ পরীক্ষাগুলি লেখার সুবিধাটি হ'ল আপনি যতটা সম্ভব আপনার API (যা মূলত আপনি ফ্লাইয়ের নকশা করছেন) পান। সামনে।

ভবিষ্যতের যে কোনও ব্যবহার (যা আপনি পরের পরীক্ষাগুলি লিখেন) প্রাথমিক জটিল নকশার চেয়ে আরও জটিল কেসগুলির সাথে মোকাবিলা করার পরিবর্তে সাব্পটিমাল ডিজাইন থেকে চলে যাবে।


দুর্দান্ত পয়েন্ট! আমরা কখনও কখনও কোডটি পরীক্ষায় এত নিমগ্ন হয়ে থাকি যে কখনও কখনও আপনার প্রথম পরীক্ষা লেখার আগেও API এবং ডোমেন মডেলটি কতটা গুরুত্বপূর্ণ হতে পারে তা উপেক্ষা করি।
maple_shaft

টেস্ট চালিত বিকাশের উদ্দেশ্য সম্পর্কে সম্বোধন করার জন্য +1 ।
জোশুয়া ড্রাক

76

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


8
কে এটাকে হ্রাস করবে ?!
ক্যাফগিকে

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

7
আমি এটাকে কম করে দেখি না; আমি এটা সম্পর্কে চিন্তা. এটি একটি জটিল প্রশ্নের উত্তর খুব সংক্ষিপ্ত।
ওয়েস্টনকে 15

2
একবারে একটি জিনিসে মনোনিবেশ করার জন্য +1, আমাদের মাল্টিটাস্ক করার ক্ষমতা ওভাররেটেড হয়েছে।
cctan

এটি সবচেয়ে সহজ উত্তর যা সম্ভবত কাজ করতে পারে।
ডিএনএ 21

26

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

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

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


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

17

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


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

5
@ ম্যাপেল_শ্যাফ্ট - টেকনোলজিটি তুচ্ছ হতে পারে, তবে ব্যবসায়ের নিয়মগুলি এটি নয়। আপনার বিভিন্ন সরল, মার্জিত, কম-বেশি-বেশি, ন্যূনতমতা নকশা সম্পর্কে কিছু বিএস শোনার জন্য অস্বীকার করেছেন এমন সমস্ত ম্যানেজারের জন্য অ্যাপটি তৈরির চেষ্টা করুন যাঁর বিভিন্ন প্রয়োজনীয়তা রয়েছে all
জেফো

5
@ জেফো ১) এটি বিএস নয়। 2) একটি মার্জিত মিনিমালিস্ট ডিজাইনের জন্য ভাল সফ্টওয়্যার বিকাশ দক্ষতা প্রয়োজন। 3) আপনার সাথে নষ্ট করার জন্য সপ্তাহে 5 মিনিটের বেশি না থাকা এবং এখনও একটি ন্যূনতম নকশাকে টেনে তোলার জন্য 5 টি বিভিন্ন পরিচালক থেকে প্রয়োজনীয়তা হ্রাস করার দক্ষতার জন্য একটি দুর্দান্ত সফ্টওয়্যার বিকাশকারী প্রয়োজন। প্রো টিপ: সফটওয়্যার বিকাশ কেবল কোডিং দক্ষতার চেয়ে বেশি, এটি আলোচনা, কথোপকথন এবং মালিকানা গ্রহণ। আপনি আলফা কুকুর হতে হবে এবং কখনও কখনও ফিরে কামড়ান।
ম্যাপেল_শ্যাফ্ট

1
আমি যদি সঠিকভাবে বুঝতে পারি তবে এই উত্তরটি প্রশ্নটি করছে।
কনরাড রুডল্ফ

1
@ ম্যাপেল_শ্যাফ্ট আমি মনে করি জেফ ও তাঁর মন্তব্য নিয়ে যা পেয়েছিলেন, না?
ZweiBlumen

10

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

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

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

এখন আপনি যদি পরীক্ষার “ইংরাজী” তে লিখিত থাকে যখন আপনি নির্দিষ্ট প্রবাহের মতো একটি সিস্টেম ব্যবহার করছেন আপনি কেবলমাত্র একটি একক পরীক্ষা তৈরির পরিবর্তে গ্রাহকদের সময় দেওয়ার সময় কয়েকটি পরীক্ষার সেটটিতে সম্মতি জানাতে চাইতে পারেন।


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

10

টিডিডির পিছনে ধারণাটি দ্রুত পুনরাবৃত্তি।

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

সহজ কোড রিফ্যাক্টরিং ছাড়াই আপনি টিডিডির অনেক সুবিধা হারাবেন।


5

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

আপনার যদি ব্রেইন ড্যাম্পের তথ্যের প্রয়োজন হয় তবে আপনার কাছে প্রচুর বিকল্প রয়েছে:

  • হোয়াইটবোর্ড
  • ব্যবহারকারীর গল্প
  • মন্তব্য
  • ভাল ওল 'কলম এবং কাগজ

লক্ষ্য করুন যে এই তালিকার কোথাও সংকলক নেই। :-)


5

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

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


টিডিডি ধরে নিয়েছে যে আপনার কোডটি খুব ছোট লেখার আগে এটি কী আকারের হবে তা আপনি জানেন।
মাইকেল শ

4

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

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

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


4

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

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

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

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


3

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

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


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

2

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

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


1

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

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

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

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

লাল-সবুজ-রিফ্যাক্টর শৃঙ্খলার প্রচুর উপকার রয়েছে এবং আপনি কেবল সামনে উল্টিয়ে টাইপ করে আশা করতে পারেন কেবল বিরতি।


1

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

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

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

আমি অনুমান করতে পারি যে আমরা যদি সাধারণ ব্যবসায়িক অ্যাপ্লিকেশনগুলিতে আরও সংকীর্ণ হয়ে থাকি তবে তার দ্রুততম-পরীক্ষামূলক ও ত্রুটির পদ্ধতির সাথে টিডিডি সাধারণত কার্যকারিতার দিক দিয়ে জিততে পারে।


1

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

describe "Your API" do

  it "should foo" do
    pending "braindump from 4/2"
  end

  it "should bar" do
    pending "braindump from 4/2"
  end

  it "should not biz" do
    pending "braindump from 4/2"
  end

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