User Stories এবং Specifications থেকে টেস্ট তৈরি

Behavior-driven Development (BDD) এবং Jasmine - জ্যাসমিনজেএস (JasmineJS) - Web Development

247

JasmineJS ব্যবহার করে User Stories (ব্যবহারকারী কাহিনী) এবং Specifications (বিশেষণ) থেকে Test Cases তৈরি করা একটি গুরুত্বপূর্ণ প্রক্রিয়া। এই প্রক্রিয়াটি সফটওয়্যার ডেভেলপমেন্ট লাইফসাইকলে Behavior-Driven Development (BDD) পদ্ধতির অংশ। JasmineJS একটি BDD ফ্রেমওয়ার্ক, যার মাধ্যমে আপনি ব্যবহারকারী কাহিনীগুলি এবং তাদের সম্পর্কিত কার্যক্রম থেকে সরাসরি টেস্ট তৈরি করতে পারেন।


User Stories কি?

User Story হলো একটি সরল বর্ণনা যা একটি সফটওয়্যার ফিচারের ব্যবহারকারী দৃষ্টিকোণ থেকে কীভাবে কাজ করবে তা ব্যাখ্যা করে। এটি সাধারণত তিনটি অংশে ভাগ করা হয়:

  1. Who (কার জন্য): ব্যবহারকারী বা গ্রাহক কে।
  2. What (কি কাজ করবে): ব্যবহৃত ফিচার বা কার্যক্রম কি হবে।
  3. Why (কেন): এই ফিচারের উদ্দেশ্য বা লক্ষ্য কী।

উদাহরণ:
"যখন আমি একটি নতুন প্রোডাক্টে যোগ করতে চাই, তখন আমি একটি ফর্ম পূরণ করতে চাই যাতে আমি আমার প্রোডাক্টের বিস্তারিত তথ্য দিতে পারি।"


Specifications কি?

Specification (বিশেষণ) হলো ব্যবহারকারী কাহিনীর আরও বিস্তারিত এবং কার্যকর বর্ণনা যা টেস্ট কেসের জন্য নির্দিষ্ট শর্তাবলী প্রদান করে। এটি ব্যবহারকারীর ইচ্ছা অনুযায়ী কার্যক্রম কীভাবে কাজ করবে তা বিস্তারিতভাবে বর্ণনা করে, যাতে টেস্ট কেস তৈরি করা যায়।


JasmineJS তে User Stories এবং Specifications থেকে টেস্ট তৈরি

JasmineJS এ describe() এবং it() ব্লক ব্যবহার করে আমরা ব্যবহারকারী কাহিনী এবং বিশেষণ থেকে টেস্ট তৈরি করতে পারি। এখানে describe() ব্লক ব্যবহার করা হয় টেস্ট সুইট (Test Suite) নির্ধারণ করতে, এবং it() ব্লক ব্যবহার করা হয় একটি নির্দিষ্ট টেস্ট কেস বা স্পেসিফিকেশন বর্ণনা করতে।

উদাহরণ: User Story থেকে Jasmine টেস্ট তৈরি

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

User Story:

"একজন ব্যবহারকারী একটি নতুন প্রোডাক্ট ফর্ম পূরণ করতে চায় যাতে সে প্রোডাক্টের তথ্য যোগ করতে পারে।"

Specification:
  1. প্রোডাক্ট ফর্মে প্রয়োজনীয় ক্ষেত্র থাকবে যেমন প্রোডাক্টের নাম, বিবরণ, এবং মূল্য।
  2. ফর্ম সাবমিট হলে, ডেটা সঠিকভাবে সংরক্ষিত হবে।

JasmineJS টেস্ট কোড:

describe("Product Form", function() {
  it("should have fields for name, description, and price", function() {
    // ফর্মের ক্ষেত্রগুলি পরীক্ষা করা হচ্ছে
    const formFields = getFormFields();  // ফর্মের ক্ষেত্রগুলি পাওয়ার একটি ফাংশন
    expect(formFields).toContain("name");
    expect(formFields).toContain("description");
    expect(formFields).toContain("price");
  });

  it("should save product data when form is submitted", function(done) {
    // ফর্ম সাবমিট হওয়ার পরে ডেটা সঠিকভাবে সংরক্ষণ হচ্ছে কিনা পরীক্ষা করা হচ্ছে
    const productData = {
      name: "New Product",
      description: "This is a new product",
      price: 100
    };
    
    submitForm(productData, function(response) {
      expect(response.status).toBe(200);  // সঠিক HTTP স্ট্যাটাস কোড পরীক্ষা
      expect(response.data.name).toBe("New Product");
      done();  // অ্যাসিঙ্ক্রোনাস টেস্টের জন্য done() কল করা হচ্ছে
    });
  });
});

এখানে:

  • describe(): এটি পুরো "Product Form" টেস্ট সুইটের জন্য ব্যবহৃত হয়েছে, যা সম্পর্কিত সকল টেস্ট কেস ধারণ করবে।
  • it(): প্রতিটি Specification বা শর্তের জন্য আলাদা টেস্ট কেস তৈরি করা হয়েছে। এখানে আমরা যাচাই করছি যে ফর্মে প্রয়োজনীয় ক্ষেত্র রয়েছে এবং সাবমিটের পর ডেটা সঠিকভাবে সংরক্ষিত হচ্ছে।
  • done(): অ্যাসিঙ্ক্রোনাস ফাংশনের জন্য done() কল করা হয়েছে, যাতে JasmineJS জানে যে টেস্টটি শেষ হতে কিছু সময় লাগবে।

BDD (Behavior-Driven Development) পদ্ধতিতে টেস্ট তৈরি

BDD হলো একটি প্রক্রিয়া যার মাধ্যমে আপনি ব্যবহারকারী কাহিনী এবং বিশেষণের ভিত্তিতে টেস্ট লিখতে পারেন। এটি "Given-When-Then" প্যাটার্ন অনুসরণ করে।

  1. Given: বর্তমান অবস্থা বা প্রেক্ষাপট।
  2. When: কিভাবে কাজটি ঘটবে।
  3. Then: কাজটি ঘটার পর প্রত্যাশিত ফলাফল।

উদাহরণ: BDD প্যাটার্নে Jasmine টেস্ট তৈরি

User Story:

"একজন ব্যবহারকারী তার প্রোফাইল তথ্য আপডেট করতে চায়।"

Specification:
  1. ফর্মে নাম, ইমেইল এবং ফোন নম্বর থাকবে।
  2. ফর্মের সকল ক্ষেত্র সঠিকভাবে পূর্ণ হলে, সিস্টেম ব্যবহারকারীর তথ্য আপডেট করবে।

JasmineJS টেস্ট কোড:

describe("Profile Update", function() {
  it("should have fields for name, email, and phone number", function() {
    const formFields = getProfileUpdateFormFields(); // প্রোফাইল আপডেট ফর্মের ক্ষেত্রগুলি
    expect(formFields).toContain("name");
    expect(formFields).toContain("email");
    expect(formFields).toContain("phone");
  });

  it("should update user profile when form is submitted with valid data", function(done) {
    const profileData = {
      name: "John Doe",
      email: "john.doe@example.com",
      phone: "1234567890"
    };

    updateProfile(profileData, function(response) {
      expect(response.status).toBe(200);
      expect(response.data.name).toBe("John Doe");
      expect(response.data.email).toBe("john.doe@example.com");
      done();
    });
  });
});

এখানে:

  • "Given": ফর্মে নাম, ইমেইল, এবং ফোন নম্বর রয়েছে।
  • "When": ফর্মটি সাবমিট করা হয়।
  • "Then": ব্যবহারকারীর প্রোফাইল সফলভাবে আপডেট হয়।

User Stories এবং Specifications থেকে টেস্ট তৈরি করার উপকারিতা

  1. ব্যবহারকারীর দৃষ্টিকোণ থেকে টেস্ট তৈরি: ব্যবহারকারী কাহিনীর মাধ্যমে টেস্ট তৈরি করলে সফটওয়্যারটি সঠিকভাবে ব্যবহারকারীর চাহিদা পূরণ করছে কিনা নিশ্চিত হওয়া যায়।
  2. স্পষ্ট এবং বিস্তারিত টেস্ট: বিশেষণ থেকে পাওয়া শর্তগুলো স্পষ্টভাবে টেস্ট কেসে রূপান্তরিত করা হয়, যা সফটওয়্যার ডেভেলপমেন্টে সুনির্দিষ্টতা আনে।
  3. BDD পদ্ধতি: "Given-When-Then" প্যাটার্ন ব্যবহার করে আপনি একে একে প্রত্যাশিত ফলাফল যাচাই করতে পারেন এবং টেস্ট লেখার সময় কার্যকারিতা অনুসরণ করতে পারেন।

সারাংশ

  • User Stories এবং Specifications থেকে JasmineJSTest Cases তৈরি করা খুবই কার্যকরী, যা ব্যবহারকারীর চাহিদা এবং সফটওয়্যারের বাস্তব কার্যকারিতা পরীক্ষা করতে সাহায্য করে।
  • BDD পদ্ধতি অনুসরণ করে আপনি সুনির্দিষ্ট এবং পরিষ্কার টেস্ট তৈরি করতে পারেন, যা আপনার কোডের কর্মক্ষমতা যাচাইয়ের জন্য অত্যন্ত কার্যকর।
  • JasmineJS এর describe() এবং it() ব্লক ব্যবহার করে আপনি User Story এবং Specification থেকে সরাসরি টেস্ট তৈরি করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...