পরীক্ষা-চালিত বিকাশ (টিডিডি) এবং উন্নয়ন-চালিত পরীক্ষার (ডিডিটি) নয় কেন কেন চটজল?


74

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

আমি এইভাবে টিডিডি কল্পনা করি এবং কেন এটি আমাকে বিভ্রান্ত করে। আমি যদি টিডিডি ঠিকাদার হিসাবে একটি বাড়ি তৈরি করতাম।

  1. আপনার সমস্ত চশমা (গল্প) আমাকে দিন।

  2. চশমা অনুমোদন পান।

  3. পরিদর্শন করার জন্য সমস্ত চশমা ভাঙ্গা আমি মনে করি আমার প্রয়োজন হবে (ভবিষ্যতে দেখুন)।

  4. এই পয়েন্টগুলি দেখতে কোনও ইন্সপেক্টরকে কল করুন এবং এখনই আমাকে বলুন আমি পরিদর্শনটি ব্যর্থ করছি (জি থ্যাঙ্কস)।

  5. বাড়ি তৈরি শুরু করুন।

  6. প্রতিদিন পরিদর্শককে কল করুন (2/100 উত্তীর্ণ)।

  7. ওহ গুলি, আমার বোঝার সাথে একটি সমস্যা ছিল এবং এখন আমাকে আরও 9 টি পরিদর্শন যোগ করতে হবে এবং সেগুলির 27 টি পরিবর্তন করতে হবে।

  8. কল পরিদর্শক 1/109 পাস করে।

  9. ধুর! ছাই. ইন্সপেক্টর কেন এটি পছন্দ করে না ... ওহ আমি সেই পদ্ধতির নামটি আপডেট করেছি ...

  10. আরও কিছু নির্মাণ।

  11. UGGGHHHH আরও পরিবর্তনগুলি আমাকে অভিশাপক ইন্সপেক্টর আপডেট করতে দিন। ওহ আমি কোনও এস ** টি ব্যর্থ করছি।

  12. আমি কি এখনও শেষ করেছি?

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

যা আরও উপযুক্ত বলে মনে হয় তা হ'ল ডিডিটি বা বিকাশ-চালিত পরীক্ষা যা এটি সম্প্রদায়টি ভুলে গিয়েছিল যা মনে হয় তা মনে হয় না।

আমার বোঝাপড়া থেকে কোনও বাড়ির জন্য ডিডিটি দেখতে পাবেন:

  1. আপনার সমস্ত চশমা (গল্প) আমাকে দিন।

  2. চশমাগুলিতে অনুমোদন পান এবং সেগুলি ভেঙে ফেলুন।

  3. একটি ইউনিট (ভিত্তি) শুরু করুন।

  4. কিছু কৌতুকপূর্ণ যুক্তির নোট (মন্তব্য) নিন।

  5. পরবর্তী ইউনিট শুরু করার আগে শেষে পরিদর্শন (একটি পরীক্ষা তৈরি করুন) করুন।

  6. পাওয়া কোন সমস্যা ঠিক করুন এবং আবার পরীক্ষা করুন।

  7. পরের দিকে এই ইউনিট সরানো অনুমোদিত হয়েছে।

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


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

33
রূপক একটি প্রতিরোধী হয়! লোকেরা আপনার প্রকৃত উদ্বেগের সমাধানের চেয়ে আপনার রূপকটি কেন এই বিষয়টির সাথে খাপ খায় না তা বোঝাতে বেশি সময় ব্যয় করবে। এই ক্ষেত্রে আপনার আসল উদ্বেগ বলে মনে হয় আপনার মনে হয় আপনাকে সমস্ত পরীক্ষা সামনে রেখে লিখতে হবে
জ্যাকবিবি 3'16

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

35
রেকর্ডের জন্য, বাড়ি তৈরির সাথে সফ্টওয়্যার বিকাশের তুলনা করা অর্থহীন। পড়াশোনা হয়ে গেছে। ফলাফলগুলি আছে। উত্তরটি পরিষ্কার। আপনি যেমন ঘর তৈরি করেন ঠিক তেমনভাবে আপনি সফ্টওয়্যার তৈরি করেন না। দ্য. দুই। হয়। আলাদা।
রিওয়ালক

14
চটপটি সমস্ত দ্রুত প্রতিক্রিয়া লুপ সম্পর্কে, টিডিডি কেবলমাত্র একটি নির্দিষ্ট ধরণের প্রতিক্রিয়া লুপ
জেকে।

উত্তর:


83

টিডিডি পদ্ধতির একটি সুবিধা কেবল তখনই উপলব্ধি করা হয় যখন আপনি জরুরী নকশাও করেন।

সুতরাং আপনার প্রথম উপমা অনুসারে আপনি 100 টি পরীক্ষা লিখবেন না, কারণ আপনার সফ্টওয়্যারটি দেখতে কেমন হবে তা আপনি জানেন না way

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

এখন উপরের প্রক্রিয়াটি পুনরাবৃত্তি করে পরবর্তী পরীক্ষা লিখুন।

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

একটি পদ্ধতি হিসাবে, এটি জোড়া প্রোগ্রামিংয়ের সাথে একসাথে যায়; একজোড়া পরীক্ষা লেখেন, পরেরটি পাস করার জন্য কোডটি লিখে রাখেন, তারপরে পরের পরীক্ষাটি লেখেন, ইত্যাদি।

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

একবার আপনি মানসিকতায় getুকলে, এটির মধ্যে না থাকা এবং "পুরানো ফ্যাশন" পদ্ধতিতে কোড করা খুব কঠিন।

আমি এটি শিখতে একটি ভাল চৌকস পরিবেশে কাজ করার পরামর্শ দিই বা আরও ভালভাবে বোঝার জন্য কয়েকটি ভাল চতুর বই (ক্লিন কোড এবং ক্লিন কোডার উভয়ই খুব ভাল) পড়ার পরামর্শ দিচ্ছি।


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

28
@ আওয়ার্ডলিস্ট: তবে ডিজাইনের কথা ভুলে যাবেন না। আপনার এখনও সফ্টওয়্যার ডিজাইন করতে হবে; ভাল ডিজাইন কেবল প্রাকৃতিকভাবেই লাল-সবুজ-চুল্লী থেকে উদ্ভূত হয় না। টিডিডি ভাল ডিজাইনকে উত্সাহ দেয়, তবে এটি এটি তৈরি করে না।
রবার্ট হার্ভে

19
@ রবার্টহারভে, আমি আপনার "ইমারজেনেন্ট ডিজাইন" শব্দটির সাথে সম্পূর্ণরূপে একমত নই যাতে আপনি পরীক্ষাগুলি পাস করে কোনও সফ্টওয়্যার ডিজাইন বাড়িয়ে নিতে পারেন can আপনি "বিবৃতিতে পারবেন না "। বেশ কয়েকটি অনুষ্ঠানে কেবল এটি করেই আমি আপনাকে আশ্বাস দিতে পারি যে এটি করা সম্ভব।
ডেভিড আরনো

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

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

86

সফটওয়্যার একটি বাড়ি নয়। অন্তর্দৃষ্টি ভাল, কিন্তু বুঝতে যে এটি সর্বদা সঠিক নয়।

পরিদর্শন করার জন্য সমস্ত চশমা ভাঙ্গা আমি মনে করি আমার প্রয়োজন হবে (ভবিষ্যতে দেখুন)।

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

প্রতিদিন পরিদর্শককে কল করুন (2/100 উত্তীর্ণ)।

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

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

দেখে মনে হচ্ছে পরিবর্তনগুলি দ্রুত করা যেতে পারে এবং ওভারহেড ছাড়া টিডিডি তৈরি বলে মনে হচ্ছে।

ওভারহেডটি আপনার বোঝার চেয়ে কম মনে হচ্ছে। পরীক্ষাগুলি চালাতে কয়েক সেকেন্ডে সামগ্রিক বিকাশের সময়টি অর্ধ ডজন বার অপ্রয়োজনীয়।

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

কলেজের আমার অধ্যাপকরা তখন টেস্টের কোড, তারপরে টেস্টের ধারণা সম্পর্কে ছিলেন।

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


18
শুধুমাত্র শেষ অনুচ্ছেদের জন্য +1। আপনার ঘরের উদাহরণগুলি সত্যই হাইলাইট করে যে "ধর্মীয় ডিটিডি" কীভাবে হতে পারে।
রবার্ট হার্ভে

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

1
@ ট্রেভরবয়েডস্মিথ আপনি প্রয়োজনীয়তার চেয়ে দস্তাবেজটি লেখবেন না be
নার্ডলিস্ট

8
যেহেতু টিডিডি কোডটির ব্যবহারকারীর দৃষ্টিভঙ্গি রাখে , [সেরা ক্ষেত্রে] এটি আরও ভাল ইন্টারফেসের প্রচার করে। উদাহরণস্বরূপ, আমি যখন ফোন open_doorকরি তখন আমার জন্য একটি পতাকা পাস করা উচিত নয় toilet_flushed; সুতরাং আমি সেভাবে আমার পরীক্ষাটি লিখি না এবং সেইজন্য আমার কোডে এই "রুক্ষ প্রান্তগুলি" নেই। এটিকে কীভাবে বলা হয় তার জন্য যথেষ্ট বিবেচনা ছাড়াই পুরোপুরি লিখিত কোডটিতে অদ্ভুত ইন্টারফেস বা অনুমান / পূর্বশর্ত রয়েছে।
brian_o

3
@ ট্র্যাভারবয়েডস্মিথ এটির একটি নাম রাখার জন্য, আমি শুনেছি যে "স্পাইক অ্যান্ড স্ট্যাবিলাইজ" বলা হয়েছে এবং হ্যাঁ, কীভাবে আপনি কীভাবে কীভাবে করতে হয় তা কীভাবে করতে হবে তা আবিষ্কার করার সময় এটি একটি সহজ কৌশল।
রাবারডাক

13

একটি শারীরিক জিনিস তৈরি এবং সফ্টওয়্যার লেখার মধ্যে মিলগুলি বেশ ন্যূনতম।

এটি বলেছিল, এখানে একটি বড় পার্থক্য উল্লেখ করার মতো মূল্য রয়েছে:

"একটি পরীক্ষা লেখার" এবং "একটি পরীক্ষা চালানো" এর মধ্যে পার্থক্য রয়েছে।

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

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

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

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

এবং এটা ঠিক আছে। কঠোর পরীক্ষার আগে সব কিছু করার দরকার নেই।

TL; ড

যদিও নির্মাণ! = রাইটিং সফটওয়্যার: নির্মাণ পরীক্ষা-চালিত ফ্যাশনে কাজ করে। প্রত্যেক ইউনিট জন্য "পাশ করার" অবস্থার কি তাদের buildout বসে।

"রাইটিং টেস্টগুলি" দিয়ে "এক্সিকিউটিং টেস্টগুলি" কে জড়ান না।

সব কিছুই টিডিডি হওয়ার দরকার নেই।


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

@ আওয়ার্ডলিস্ট একটি উপায়ে হ্যাঁ তবে, যদি আপনার পরীক্ষাগুলি "সঠিক" জিনিসগুলি পরীক্ষা করে দেখছে তবে এটি একটি "বাধা" আপনি চান
এসভিডজেন

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

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

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

11

লেখার জন্য একটি সফটওয়্যার বাড়ি তৈরির সাথে মিলে যায় এমন বাজে ধারণা বিশ্বাসের ফাঁদে আপনি পড়ে গেছেন। এটা না। এটি স্থপতি অঙ্কন এবং কাঠামোগত প্রকৌশলীদের গণনা তৈরি করার সাথে আরও সাদৃশ্যপূর্ণ।

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

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

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


1
আমি দেখতে তারপর আপনি বিল্ডিং কন্ট্রোল সঙ্গেই মোকাবিলা করেছি ... :)
জুলে

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

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

7

প্রথম এবং সর্বাগ্রে আপফ্রন্ট ব্যয় তত বেশি নয় যতটা আপনার মনে হয় । হ্যাঁ, আপনি যদি পরীক্ষা না করে থাকেন তার চেয়ে বেশি সময় আপনি পরীক্ষার উদ্দেশ্যে ব্যয় করেন। তবে আপনি যদি "পরীক্ষার পরে" পদ্ধতিটি করেন তবে আপনি আসলে কী নষ্ট করছেন? ধরা যাক টিডিডি 10 ঘন্টা সময় নেয় এবং ডিডিটি 6 ঘন্টা সময় নেয়। আপনার "অতিরিক্ত" সামনের ব্যয়গুলি কেবল 4 ঘন্টা। এখন আপনি যদি 90% কভারেজের মতো কোনও কোড মেট্রিক বা প্রয়োজনীয়তা প্রয়োগ করেন তবে আপনার টিডিডি এবং ডিডিটি ব্যয়ের ক্ষেত্রে আরও কাছাকাছি হয়ে যায়।

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

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

আপনি জানেন না যে এটি কাজ করে না। কোনও পরীক্ষার স্যুট ছাড়াই আপনি জানেন না যে আপনার কোডটি আপনার মনে হয় যেভাবে এটি কাজ করছে বা এটি কেবলমাত্র কাজ করছে বলে মনে হচ্ছে।

var foo = function(in) {
    if(in == 0) {
      return true
    }
}

এখন আপনার সমস্ত অ্যাপ্লিকেশন জুড়েই আপনি কল করবেন if(foo()){ doStuff() }আমি ফু ফিক্স করার পরে কি হবে?

var foo = function(in) {
    if(in === 0) {
      return true
    }
}

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

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

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

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

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

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

সংক্ষেপে, টিডিডি কীভাবে কাজ করবে সে সম্পর্কে আপনার বোঝার (তালিকা) বন্ধ রয়েছে। আপনার কখনই 2/100 পাস করা উচিত নয়। আপনার 1/1 পাশ করা উচিত, তারপরে 2/2 পাসিং, তারপরে 3/3 পাসিং, তারপরে 4/4 পাসিং, এবং আরও কিছু হওয়া উচিত।

আপনার জন্য একটি সংশোধিত তালিকা

  1. সমস্ত স্পেসিফিকেশন পান
  2. একটি স্পেসিফিকেশন চয়ন করুন
  3. এটা পরীক্ষা করো
  4. কোড দিন
  5. এটা পরীক্ষা করো
  6. পরীক্ষাগুলি পাস হলে 7 এ যান 4 এ যান
  7. আপনি যদি সমস্ত চশমাটি করে থাকেন তবে 8 তে যান 2 এ
  8. গ্রাহকের সাথে স্পেসিফিকেশনগুলি পর্যালোচনা করুন এবং যেখানে প্রয়োজন সেখানে নতুন স্পেসিফিকেশন যুক্ত করুন। যদি সঠিকভাবে করা হয় তবে আপনাকে কোনও পরীক্ষা কোনও পরিবর্তন করতে হবে না। শুধু নতুন একটি যোগ করুন। কখনও কখনও প্রয়োজনীয়তা জমায়েত হওয়াগুলি পৃথক হয়ে যেতে পারে এবং আপনাকে এমন পরীক্ষাগুলি যুক্ত করতে হবে যা পূর্ববর্তী পরীক্ষাগুলির সাথে দ্বন্দ্ব করে তবে আপনার পরীক্ষা খুব কমই করা উচিত।

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

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

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

4

এমন কিছু কী রয়েছে যা আমি অনুভব করি যে অন্য উত্তরগুলি অনুপস্থিত।

তিনটি সুবিধা

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

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

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

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

খরচ বিশ্লেষণ

তাই কিছু উপায়ে আপনি ঠিক বলেছেন। বাড়ি তৈরির সময় আমরা এই কৌশলটি নিয়ে পালাতে পারিনি। এটা খুব ব্যয়বহুল হবে। তবে সফটওয়্যারটি বাড়ি নয়। সফটওয়্যার সস্তা।

একটি বাড়ির সাথে সাদৃশ্য হ'ল একটি সফ্টওয়্যার সংকলক বনাম ঘর একত্রিত করার শ্রম।

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

টিডিডি একই নীতি, কেবল ঘোরানো হয় যাতে পরীক্ষা সামনে যায়। যদি টেস্টিংটি সস্তা সস্তা করা যায় (তাই এটি সেকেন্ডে সমস্ত চালিত হয়), তবে বড় চিত্রের মাধ্যমে চিন্তা করার ব্যয়, একক বিগ-ব্যাং কোডিং পুনরাবৃত্তির সামগ্রিক সমাধান রিফ্যাক্টরিংয়ের তুলনায় অনেক বেশি।

ছাড়া ...

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


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

4

আমি টিডিডির কয়েকটি প্রকল্প না করা পর্যন্ত আমি এ সম্পর্কে অনেক কিছু ভাবছিলাম। একটি খুব সংক্ষিপ্ত এবং বিস্তৃত ব্যাখ্যা আছে যা আমি যখন এটি করি তখন তা আমার কাছে ছড়িয়ে পড়ে:

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

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

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

সুতরাং আপনি নিজের কাজকে কীভাবে বৈধতা দিন তা দেখার জন্য টিডিডি একটি চূড়ান্ত উপায়।


4

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

আপনি যখন নতুন কিছু লিখছেন, এমন কিছু যা আপনি আগে কখনও করেননি, টিডিডি এবং টিডিডি না করার মধ্যে কোনও উল্লেখযোগ্য পার্থক্য নেই।

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

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

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


2

পরীক্ষা-চালিত বিকাশ (টিডিডি) এবং উন্নয়ন-চালিত পরীক্ষার (ডিডিটি) নয় কেন কেন চটজল?

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

https://en.wikedia.org/wiki/Agile_software_development#Agile_methods একটি ভাল ডজন বা আরও বিভিন্ন বিকাশের মডেলগুলি তালিকাভুক্ত করে।

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

সুতরাং আমার উত্তর ist:

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

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

(টিডিডি-র অবশ্যই তার জায়গা রয়েছে, উদাহরণস্বরূপ, এপিআইগুলিতে, তবে আমরা এখানে যা বলছি তা নয়))

আবার, আমি এখানে অন্য সমস্ত উত্তর দুলালঙ্ক করার চেষ্টা করছি না, কেবল এটি নির্দেশ করে যে প্রশ্নটি বরং সংকীর্ণ, এবং ক্ষেত্রটি অফার করার জন্য আরও অনেক কিছু রয়েছে।


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

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

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

0

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

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

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

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

পূর্ববর্তী স্থাপত্য জ্ঞান, নিদর্শন, বিধিবিধি এবং গণিত যে আমাদের বর্তমানে আমাদের সেতুগুলি নির্মাণের আগে কাজ করবে তা প্রমাণ করার জন্য আপনাকে যদি একটি সিরিজ ব্রীজ তৈরি করতে হত, তবে আপনি সম্ভবত আপনার সেতুগুলি প্রচুর পরিমাণে পরীক্ষা করে পুনর্নির্মাণ করছেন।

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

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