টিডিডির লন্ডন এবং শিকাগো বিদ্যালয়গুলি কী কী?


88

আমি টেস্ট ড্রাইভেন ডেভলপমেন্ট (টিডিডি) এর লন্ডন স্টাইল বনাম শিকাগো স্টাইল (কখনও কখনও ডেট্রয়েট স্টাইল নামেও) শুনে আসছি।

ইউটা এক্সট্রিম প্রোগ্রামিং ব্যবহারকারীর গ্রুপের কর্মশালা:

মিথস্ক্রিয়া শৈলী TDD- এ এছাড়াও বলা হয় mockist-শৈলী , অথবা লন্ডন-শৈলী লন্ডনের চরম মঙ্গলবার ক্লাব পর যেখানে এটি জনপ্রিয় হয়ে ওঠে। এটি সাধারণত ডেট্রয়েট-স্টাইল বা ক্লাসিক টিডিডির সাথে বিপরীতে থাকে যা আরও রাষ্ট্র-ভিত্তিক।

জেসন গোরম্যানের কর্মশালা :

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

The post ক্লাসিক টিডিডি নাকি "লন্ডন স্কুল"? জেসন গোরম্যান দ্বারা সহায়ক ছিল, কিন্তু তার উদাহরণগুলি আমাকে বিভ্রান্ত করেছিল, কারণ তিনি উভয় পদ্ধতির সাথে একটি উদাহরণের পরিবর্তে দুটি ভিন্ন উদাহরণ ব্যবহার করেন। পার্থক্য কি? আপনি প্রতিটি শৈলী কখন ব্যবহার করবেন?

উত্তর:


76

ধরুন আপনার কাছে "খাত্তর" নামে একটি পদ্ধতি রয়েছে যা "ক্যালকুলেট" নামে পরিচিত একটি পদ্ধতি যা "ক্যালকুলেট" হিসাবে পাস হওয়া আর্গুমেন্টের উপর নির্ভর করে বিভিন্ন ধরণের গণনা করতে "ক্যালকুলেটর" ব্যবহার করে, উদাহরণস্বরূপ "গুণা (x, y)" বা "বিয়োগ ( x, y) "।

এখন, ধরুন আপনি যখন লেজার ক্যালকুলেট ("5 * 7") কল করেন তখন কী হয় তা পরীক্ষা করতে চান।

লন্ডন / ইন্টারঅ্যাকশন স্কুলটি আপনার কাছে ক্যালকুলেটর.মલ્ટিপ্লাই (5,7) কল পেয়েছিল কিনা তা জোর দিয়েছিল। বিভিন্ন উপহাসের ফ্রেমওয়ার্কগুলি এটির জন্য দরকারী, এবং এটি খুব কার্যকর হতে পারে যদি উদাহরণস্বরূপ, আপনার "ক্যালকুলেটর" অবজেক্টের মালিকানা নেই (ধরুন এটি কোনও বাহ্যিক উপাদান বা পরিষেবা যা আপনি সরাসরি পরীক্ষা করতে পারবেন না, তবে আপনি এটি করেন আপনি একটি নির্দিষ্ট উপায়ে কল করতে হবে জানি)।

শিকাগো / রাজ্য বিদ্যালয়ের ফলাফল 35 হ'ল কিনা তা আপনার দাবি করাতে হবে।

উভয়ই বৈধ এবং গুরুত্বপূর্ণ পরীক্ষা।


খুব সুন্দর উদাহরণ।
সেভেনসিয়াট

1
আমি প্রতিটি ব্যবহারের জন্য আরও কয়েকটি কারণ যুক্ত করব: যদি গুরুত্বপূর্ণ বিষয়টি নির্ধারণ করা হয় যে ব্যবস্থা নেওয়া হচ্ছে তার উপর ভিত্তি করে কিছু পরিবর্তন হয়েছে বা পরিবর্তিত হয়নি (উদাহরণস্বরূপ, খাত্তয়.বুকিট.মূল্য 35 বছর বয়সী হয়ে যখন লেজারক্যালকুলেট ("5 * 7 ") বলা হয়), আপনি রাষ্ট্রের প্রতিবেদন (শিকাগো স্কুল) ব্যবহার করতে চান। পদ্ধতিটি বলার আগে সিস্টেমের অবস্থার উপরে যখন আপনার সম্পূর্ণ নিয়ন্ত্রণ থাকে এবং পদ্ধতিটি কী করে তা আপনি যখন নিয়ন্ত্রণ করেন তখন এটি সর্বাধিক সহায়ক।
ম্যাথু ফ্লিন

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

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

1
লন্ডন পদ্ধতির এছাড়াও পরিষ্কার প্রতিক্রিয়া সংকেত প্রদান যুক্তি, কারণ যদি Calculatorএ regresses multiply, দুই পরীক্ষার ব্যর্থ দেখতে পাবেন: খতিয়ান পরীক্ষা এবং ক্যালকুলেটর পরীক্ষা, কিন্তু শুধুমাত্র একটি পরীক্ষা ব্যর্থ যদি আপনি ক্যালকুলেটর বের উপহাস। এটি বাগের উত্‍পত্তিটি চিহ্নিত করা আরও সহজ করে তুলবে, বিশেষত যদি সিস্টেমটি জটিল হয়।
ম্যাথিয়াস

30

মার্টিন ফওলারের মকস আরেন্ট স্টবস নিবন্ধটি এই বিষয়ের একটি ভাল পরিচয় নয়।

আপনি যে নকশা শৈলীটি চয়ন করেছেন তার উপর নির্ভর করে (এবং আপনি যে নকশার নীতিগুলি ভিত্তিতে আপনি আপনার প্রোগ্রামগুলি তৈরি করেন) তার কোনও অবজেক্ট দেখার কমপক্ষে দুটি উপায় রয়েছে:

  1. ইনপুটগুলির উপর ভিত্তি করে গণনা সম্পাদন করে এমন একক হিসাবে। এই গণনার ফলস্বরূপ বস্তু কোনও মান ফেরত দিতে বা তার অবস্থার পরিবর্তন করতে পারে।
  2. সক্রিয় উপাদান হিসাবে যা ম্যাসেজের মাধ্যমে সিস্টেমের অন্যান্য উপাদানগুলির সাথে যোগাযোগ করে।

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

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

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

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