শীর্ষ ভোটের উত্তরের হিসাবে উল্লেখ করা হয়েছে, মার্টিন ফোলার মকস আরেনট স্টাবগুলিতে এবং বিশেষত মকস এবং স্টাবসের মধ্যে পার্থক্যটির সাব-শিরোনামটি নিয়ে আলোচনা করেছেন , সুতরাং নিবন্ধটি পড়ার বিষয়টি নিশ্চিত করুন।
এই জিনিসগুলি কীভাবে আলাদা তার দিকে মনোনিবেশ করার পরিবর্তে , আমি মনে করি কেন এগুলি স্বতন্ত্র ধারণা on প্রতিটি পৃথক উদ্দেশ্যে বিদ্যমান।
fakes
একটি জাল একটি বাস্তবায়ন যা "প্রাকৃতিকভাবে" আচরণ করে তবে এটি "আসল" নয়। এগুলি অস্পষ্ট ধারণা এবং তাই বিভিন্ন জিনিসগুলিকে কী জিনিস নকল করে তোলে তার আলাদা বোঝাপড়া থাকে।
জাল একটি উদাহরণ একটি ইন-মেমরি ডাটাবেস (যেমন স্টোরের সাথে স্ক্লাইট ব্যবহার করা :memory:
)। আপনি এটি কখনই উত্পাদনের জন্য ব্যবহার করবেন না (যেহেতু ডেটা বজায় থাকে না) তবে এটি পরীক্ষার পরিবেশে ব্যবহার করার জন্য ডাটাবেস হিসাবে পুরোপুরি পর্যাপ্ত। এটি একটি "রিয়েল" ডাটাবেসের তুলনায় অনেক বেশি লাইটওয়েট।
অন্য উদাহরণ হিসাবে, সম্ভবত আপনি উত্পাদনে কিছু ধরণের অবজেক্ট স্টোর (উদাঃ অ্যামাজন এস 3) ব্যবহার করেন তবে একটি পরীক্ষায় আপনি কেবলমাত্র ডিস্কের ফাইলগুলিতে বস্তুগুলি সংরক্ষণ করতে পারেন; তাহলে আপনার "ডিস্কে সেভ করুন" বাস্তবায়ন জাল হবে। (অথবা আপনি পরিবর্তে একটি মেমোরি ফাইল সিস্টেম ব্যবহার করে "ডিস্কে সংরক্ষণ করুন" অপারেশনটিকে নকলও করতে পারেন))
তৃতীয় উদাহরণ হিসাবে, এমন কোনও বস্তুর কল্পনা করুন যা ক্যাশে এপিআই সরবরাহ করে; একটি অবজেক্ট যা সঠিক ইন্টারফেস প্রয়োগ করে তবে কেবল কোনও ক্যাচিং সম্পাদন করে না তবে সর্বদা একটি ক্যাশে মিস ফিরিয়ে দেয় এটি এক ধরণের জাল।
জালির উদ্দেশ্য পরীক্ষার অধীনে সিস্টেমের আচরণকে প্রভাবিত করা নয় , বরং পরীক্ষার বাস্তবায়ন (অপ্রয়োজনীয় বা হেভিওয়েট নির্ভরতা অপসারণ করে) সহজ করা।
নিবন্ধসমূহ
একটি শহরের উপর অসম্পূর্ণ নিবন্ধ একটি বাস্তবায়ন যে আচরণ করবে "চরম নিষ্ঠুরভাবে" হয়। নির্দিষ্ট আউটপুটগুলির সাথে নির্দিষ্ট ইনপুটগুলিতে প্রতিক্রিয়া জানাতে পূর্বনির্ধারিত হয় (সাধারণত টেস্ট সেটআপ দ্বারা)।
স্টাবের উদ্দেশ্য হ'ল আপনার সিস্টেমটিকে একটি নির্দিষ্ট অবস্থায় পরীক্ষার অধীনে নিয়ে যাওয়া। উদাহরণস্বরূপ, যদি আপনি কিছু কোড যা বিশ্রাম এপিআই সাথে মিথস্ক্রিয়া, আপনি পারে একটি পরীক্ষামূলক লিখছেন যদি আউট শহরের উপর অসম্পূর্ণ নিবন্ধ বিশ্রাম এপিআই একটি API যে সবসময় একটি ক্যানড প্রতিক্রিয়া, বা একটি নির্দিষ্ট ত্রুটি সহ একটি API অনুরোধ যে সাড়া ফেরৎ সঙ্গে। এই পদ্ধতিতে আপনি কীভাবে পরীক্ষাগুলি লিখতে পারেন যা সিস্টেমগুলি এই রাজ্যে কীভাবে প্রতিক্রিয়া দেখায় তা জোর করে; উদাহরণস্বরূপ, যদি এআইপি 404 ত্রুটি ফেরত দেয় তবে আপনার ব্যবহারকারীরা যে প্রতিক্রিয়া পান তা পরীক্ষা করে।
আপনি যে প্রতিক্রিয়া জানাতে বলেছিলেন ঠিক সেই মিথস্ক্রিয়াগুলিতে সাড়া দেওয়ার জন্য সাধারণত একটি স্টাব প্রয়োগ করা হয়। তবে মূল বৈশিষ্ট্য যা কোনও কিছুকে স্টাব করে তোলে তা হ'ল তার উদ্দেশ্য : একটি স্টাব আপনার পরীক্ষার কেস সেটআপ করার জন্য।
ঠাট্টা
একজন উপহাস অনুরূপ অসম্পূর্ণ, কিন্তু সাথে আছেন যাচাইকরণ যোগ। একটি উপহাস উদ্দেশ্য সম্পর্কে কিভাবে পরীক্ষা অধীনে আপনার সিস্টেম নির্ভরতা সাথে ইন্টারঅ্যাক্ট গবেষকেরা করা হয় ।
উদাহরণস্বরূপ, আপনি যদি কোনও সিস্টেমে ফাইল আপলোড করে এমন কোনও সিস্টেমের জন্য পরীক্ষা লিখতে থাকেন তবে আপনি এমন একটি মক তৈরি করতে পারেন যা কোনও ফাইল গ্রহণ করে এবং আপনি আপলোড করা ফাইলটি সঠিক ছিল তা দৃsert়তার জন্য ব্যবহার করতে পারেন। বা, আরও ছোট স্কেলে, কোনও পরীক্ষার অধীনে সিস্টেমটি উপহাসকৃত অবজেক্টের নির্দিষ্ট পদ্ধতিগুলিকে কল করে তা যাচাই করতে কোনও বস্তুর মোক ব্যবহার করা সাধারণ।
মোকগুলি মিথস্ক্রিয়া পরীক্ষার সাথে যুক্ত , যা একটি নির্দিষ্ট পরীক্ষার পদ্ধতি। যে সমস্ত লোকেরা সিস্টেমের মিথস্ক্রিয়ের চেয়ে সিস্টেমের অবস্থা পরীক্ষা করতে পছন্দ করে তারা যদি কিছু না হয় তবে কিছুটা উপচে পড়বে ocks
টেস্ট দ্বিগুণ
জাল, স্টাবস এবং মকগুলি সমস্তই পরীক্ষার দ্বিগুণ শ্রেণির অন্তর্ভুক্ত । একটি পরীক্ষা ডাবল হ'ল কোনও পরীক্ষার জন্য আপনি অন্য কিছুর পরিবর্তে ব্যবহার করেন এমন কোনও বস্তু বা সিস্টেম । সর্বাধিক স্বয়ংক্রিয় সফ্টওয়্যার পরীক্ষায় কোনও না কোনও বা অন্যরকম পরীক্ষার দ্বিগুণ ব্যবহার জড়িত। অন্য কিছু ধরণের পরীক্ষার দ্বিগুণ মধ্যে ডামি মান , গুপ্তচর এবং আই / ও ব্ল্যাকহোলগুলি অন্তর্ভুক্ত ।