Mocking এবং Stubbing এর ব্যবহার

Computer Programming - গ্রুভি (Groovy) Testing in Groovy (টেস্টিং) |
161
161

Mocking এবং Stubbing এর ব্যবহার

Mocking এবং Stubbing টেস্টিংয়ের গুরুত্বপূর্ণ কৌশল, যা unit testing এবং integration testing এর সময় ব্যবহার করা হয়। Groovy তে এবং বিশেষত Spock Framework ব্যবহার করে আপনি সহজেই mocking এবং stubbing এর মাধ্যমে কোডের বিভিন্ন অংশের আচরণ চেক করতে পারেন। এই দুটি টেস্টিং কৌশল আপনাকে বাইরের ডিপেন্ডেন্সি, যেমন ডাটাবেস, API, অথবা সার্ভিস কলের প্রভাব এড়িয়ে যেতে সহায়তা করে।


1. Mocking

Mocking হল একটি টেস্টিং কৌশল, যেখানে আপনি কোনো নির্দিষ্ট অবজেক্ট বা ক্লাসের আচরণ জেনেশুনে নির্ধারণ করেন, যাতে আপনি তার ফলাফল এবং আচরণগুলি নিয়ন্ত্রণ করতে পারেন। এটি সাধারণত টেস্টের জন্য অবজেক্টের বা মেথডের আচরণ “প্রত্যাশা” নির্ধারণ করে।

Mocking এর মাধ্যমে আপনি নির্দিষ্ট অবজেক্টের method calls এবং তাদের return values নির্ধারণ করতে পারেন, যা আসল অ্যাপ্লিকেশন কোডের জন্য নির্দিষ্ট করা হয় না।

Mocking এর উদাহরণ:

import spock.lang.Specification

class MyService {
    def getData() {
        // এখানে ডেটা ফেচিং বা API কল হতে পারে
        return "Real Data"
    }
}

class MyServiceTest extends Specification {
    def "test mocked service"() {
        given:
        def mockService = Mock(MyService)

        when:
        mockService.getData() >> "Mocked Data"  // মক করা হচ্ছে

        then:
        mockService.getData() == "Mocked Data"  // প্রত্যাশিত ফলাফল
    }
}

এখানে:

  • Mock(MyService) একটি মক অবজেক্ট তৈরি করেছে, যা getData() মেথডকে "Mocked Data" রিটার্ন করতে নির্দেশ দিয়েছে।
  • >> এর মাধ্যমে মক অবজেক্টের রিটার্ন ভ্যালু নির্ধারণ করা হয়।

Mocking এর সুবিধা:

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

2. Stubbing

Stubbing হল আরেকটি টেস্টিং কৌশল, যেখানে আপনি একাধিক মেথড বা অবজেক্টের আচরণ সেট করতে পারেন, কিন্তু এই কৌশলে আপনি ফাংশনের ফলাফল বা return value নির্ধারণ করে থাকেন। স্টাবিং সাধারণত মকিংয়ের তুলনায় একটু সহজ এবং এটি প্রধানত ব্যবহৃত হয় যখন আপনি কোনও নির্দিষ্ট ফাংশন বা মেথডের আউটপুট নিয়ন্ত্রণ করতে চান।

Stubbing আপনার মেথড কলগুলোকে সত্যিই কার্যকর না করে, তাদের প্রাক-নির্ধারিত রিটার্ন ভ্যালু দিয়ে স্টাব করে।

Stubbing এর উদাহরণ:

import spock.lang.Specification

class MyService {
    def getData() {
        // API বা অন্য ডিপেন্ডেন্সি কলের জন্য বাস্তব কাজ
        return "Real Data"
    }
}

class MyServiceTest extends Specification {
    def "test stubbed service"() {
        given:
        def stubbedService = Stub(MyService)

        when:
        stubbedService.getData() >> "Stubbed Data"  // স্টাবিং করা হচ্ছে

        then:
        stubbedService.getData() == "Stubbed Data"  // প্রত্যাশিত ফলাফল
    }
}

এখানে:

  • Stub(MyService) ব্যবহার করে একটি স্টাব অবজেক্ট তৈরি করা হয়েছে, যা getData() মেথডে "Stubbed Data" রিটার্ন করবে।
  • >> ব্যবহার করে স্টাব মেথডের আউটপুট নির্ধারণ করা হয়েছে।

Stubbing এর সুবিধা:

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

Mocking এবং Stubbing এর মধ্যে পার্থক্য

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

Spock Framework এ Mocking এবং Stubbing এর ব্যবহার

Spock Framework Groovy তে একটি অত্যন্ত জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক, যা Mocking এবং Stubbing সহজভাবে এবং সুশৃঙ্খলভাবে পরিচালনা করতে সহায়তা করে। Spock এর মাধ্যমে আপনি নিম্নলিখিত কৌশলগুলির মধ্যে পার্থক্য করতে পারবেন এবং প্রয়োগ করতে পারবেন:

  • Mocking: টেস্টে ডিপেন্ডেন্সি বা অবজেক্টের আচরণ মক করা।
  • Stubbing: টেস্টের জন্য মেথড কলের ফলাফল স্টাব করা।

সারসংক্ষেপ

  • Mocking এবং Stubbing হল টেস্টিং কৌশল, যা বাইরের ডিপেন্ডেন্সি বা মেথড কলের আচরণ নিয়ন্ত্রণ করে।
  • Mocking প্রধানত অবজেক্টের মেথড কলের আচরণ নির্ধারণে ব্যবহৃত হয়, যেখানে আপনি মক অবজেক্টের মেথডের কিভাবে কাজ করবে তা নির্ধারণ করেন।
  • Stubbing হল মেথড কলের আউটপুট নির্ধারণ করার কৌশল, যেখানে আপনি ফলাফল সরাসরি নির্ধারণ করেন।
  • Groovy তে Spock Framework ব্যবহার করে আপনি সহজেই Mocking এবং Stubbing প্রয়োগ করতে পারেন, যা দ্রুত এবং কার্যকর টেস্টিং প্রক্রিয়া নিশ্চিত করে।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion