প্রোগ্রামিংয়ের অর্থ "স্টাব" বলতে কী বোঝায়?


117

উদাহরণস্বরূপ, এই উদ্ধৃতিটির অর্থ কী?

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


9
আপনি "স্টাব" কীসে গৃহীত উত্তরটি একবার দেখেছেন? ?
নিক

উত্তর:


104

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

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

নীচের কোডে ফরেক্স নমুনা:

public void Analyze(string filename)
    {
        if(filename.Length<8)
        {
            try
            {
                errorService.LogError("long file entered named:" + filename);
            }
            catch (Exception e)
            {
                mailService.SendEMail("admin@hotmail.com", "ErrorOnWebService", "someerror");
            }
        }
    }

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


9
ইংরেজি? বিদ্যমান নির্ভরতা কী?
Jwan622

17
@ জওয়ান 22২২ লেমন শর্তাবলী: কোড ব্যবহার করে যে কোনও কিছুই। আপনি যদি "শ্রেণি" বা "ফাংশন" বা যে কোনও কিছুই (আপনার পটভূমির উপর নির্ভর করে) "নির্ভরতা" পুনরায় পড়েন এবং প্রতিস্থাপন করেন তবে এটি বুঝতে সহায়তা করতে পারে। কখনও কখনও বিদ্যমান বর্গ / ফাংশন ব্যবহার করা একটি কার্যকর বিকল্প নয় এবং আপনার একটি স্টাবের প্রয়োজন (যেমন সিস্টেমের বর্তমান তারিখ এবং সময় যেমন পরিবেশের উপর নির্ভর করে এমন ফাংশনগুলির জন্য স্বয়ংক্রিয় ইউনিট-পরীক্ষার ক্ষেত্রে)।
মাস্টারমাস্টিক

101

এই প্রসঙ্গে একটি স্টাবের অর্থ একটি মক বাস্তবায়ন।

এটি হ'ল একটি সাধারণ, জাল বাস্তবায়ন যা ইন্টারফেসের সাথে সামঞ্জস্য হয় এবং এটি পরীক্ষার জন্য ব্যবহার করা হয়।


3
মার্টিন ফওলারের বিখ্যাত মকস আরেন্ট স্টবসের নিবন্ধে আরও বিশদ সরবরাহ করা হয়েছে : "তবে যতবার না দেখি ততই অবহেলিত বস্তুগুলি খারাপভাবে বর্ণিত হয় না particular
পিবিএ

61

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

কর্মচারী ডাটাবেস প্রস্তুত না? জেন ডো, জন ডো ... ইত্যাদির সাহায্যে একটি সহজ উপকরণ তৈরি করুন। এপিআই প্রস্তুত নয়? জাল ডেটাযুক্ত একটি স্ট্যাটিক .json ফাইল তৈরি করে একটি জাল তৈরি করুন।


1
উদাহরণের জন্য আপনাকে ধন্যবাদ :)
ক্যাপচারড

8

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

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

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

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

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

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


4

স্টাব একটি ফাংশন সংজ্ঞা যা সঠিক ফাংশন নাম, পরামিতিগুলির সঠিক সংখ্যা এবং সঠিক ধরণের ডামি ফলাফল তৈরি করে।

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


3

এ জাতীয় স্টাব তৈরি করার জন্য আপনার কাছে খুব ভাল টেস্টিং ফ্রেমওয়ার্ক রয়েছে। আমার preferrable এক Mockito রয়েছে EasyMock এবং অন্যদের ... কিন্তু Mockito মহান আপনি এটা পড়তে হবে - খুব মার্জিত এবং শক্তিশালী প্যাকেজ


3

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

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


0

আরপিসি স্টাবস

  • মূলত, ক্লায়েন্ট-সাইড স্টাব এমন একটি প্রক্রিয়া যা ক্লায়েন্টকে দেখে মনে হয় যেন এটি কলযোগ্য সার্ভার পদ্ধতি।
  • একটি সার্ভার-সাইড স্টাব সার্ভারকে এমনভাবে দেখে যেন এটি একটি কলিং ক্লায়েন্ট।
  • ক্লায়েন্ট প্রোগ্রাম মনে করে যে এটি সার্ভারটি কল করছে; আসলে, এটি ক্লায়েন্ট স্টাব কল করছে।
  • সার্ভার প্রোগ্রাম মনে করে যে এটি ক্লায়েন্ট দ্বারা ডাকা হয়েছে; আসলে, এটি সার্ভার স্টাব বলে।
  • স্টিপগুলি আরপিসিটি ঘটানোর জন্য একে অপরকে বার্তা পাঠায়।

উৎস


0

"কোনও ফাংশন স্টাব-আউট করা মানে আপনি কেবলমাত্র যথেষ্ট পরিমাণে লিখবেন যে ফাংশনটি ডাকা হয়েছিল তা দেখানোর জন্য, যখন আপনার আরও সময় থাকবে তখন বিশদটি পরে রাখবেন" "

থেকে: এসএএমএস নিজেকে সি ++, জেসি লিবার্টি এবং ব্র্যাডলি জোন্স শেখান

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