প্রদত্ত কখন (জিডব্লিউটি) এবং অ্যারেঞ্জ অ্যাক্ট অ্যা্যাসেট (এএএ) মধ্যে পার্থক্য?


13

টিডিডিতে অ্যারেঞ্জ অ্যাক্ট অ্যাসেট (এএএ) সিনট্যাক্স রয়েছে:

[Test]
public void Test_ReturnItemForRefund_ReturnsStockOfBlackSweatersAsTwo_WhenOneInStockAndOneIsReturned()
{
    //Arrange
    ShopStock shopStock = new ShopStock();
    Item blackSweater = new Item("ID: 25");
    shopStock.AddStock(blackSweater);
    int expectedResult = 2;
    Item blackSweaterToReturn = new Item("ID: 25");

    //Act
    shopStock.ReturnItemForRefund(blackSweaterToReturn);
    int actualResult = shopStock.GetStock("ID: 25");

    //Assert
    Assert.AreEqual(expectedResult, actualResult);
}

বিডিডি-তে লেখার পরীক্ষাগুলি একই ধরণের কাঠামো ব্যবহার করে তবে হ্যাভেন হ্যাভ থুথ (জিডাব্লুটি) সিনট্যাক্স সহ:

    [Given(@"a customer previously bought a black sweater from me")]
    public void GivenACustomerPreviouslyBoughtABlackSweaterFromMe()
    { /* Code goes here */   }

    [Given(@"I currently have three black sweaters left in stock")]
    public void GivenICurrentlyHaveThreeBlackSweatersLeftInStock()
    { /* Code goes here */   }

    [When(@"he returns the sweater for a refund")]
    public void WhenHeReturnsTheSweaterForARefund()
    { /* Code goes here */   }

    [Then(@"I should have four black sweaters in stock")]
    public void ThenIShouldHaveFourBlackSweatersInStock()
    { /* Code goes here */   }

যদিও এগুলি প্রায়শই একই হিসাবে বিবেচিত হয় সেখানে বিভিন্ন পার্থক্য রয়েছে। কয়েকটি মূল বিষয়গুলি হ'ল:

  1. জিডাব্লুটিটি বিডিডি ফ্রেমওয়ার্কগুলিতে একটি বৈশিষ্ট্য ফাইলের স্পেসিফিকেশনে সরাসরি ম্যাপ করা যায়

  2. সরল ইংরাজির ব্যবহারকে উত্সাহিত করে এবং প্রতিটি অংশটি কী করছে তার একটি সংক্ষিপ্ত বিবরণ রেখে জি -ডব্লিউটি অ-বিকাশকারীদের পক্ষে বোঝা সহজ is

  3. প্রদত্ত কখন এবং তারপরে বিভিন্ন বিডিডি ফ্রেমওয়ার্ক যেমন স্পেসফ্লো এবং শসাবারের কীওয়ার্ড রয়েছে

আমার প্রশ্ন হ'ল এএএ এবং জিডব্লিউটি-এর মধ্যে (নামগুলি বাদে) অন্য কোনও পার্থক্য রয়েছে? এবং উপরে উল্লিখিত বিষয়গুলি ছাড়াও কি অন্য কোনও কারণে অন্যটির চেয়ে বেশি পছন্দ করা উচিত?


3
'আরও প্রাকৃতিক ভাষার মতো পড়া' বাদে আমি কোনও পার্থক্য দেখছি না। একটি ব্যবস্থা দেওয়া হয়েছে, যখন কোনও পদক্ষেপ হয়, তারপরে নতুন রাজ্য সম্পর্কে বিষয়গুলি জোর দিন ''
সুজোরড জব পোস্টমাস 24'16

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

উত্তর:


9

আমি মনে করি আপনি আপনার প্রশ্নের মধ্যে পার্থক্যগুলি খুব ভালভাবে তালিকাভুক্ত করেছেন, তবে আমি কীভাবে দুটি পদ্ধতির প্রতি দৃষ্টিপাত করব সে সম্পর্কে আমার কিছু মতামত যুক্ত করব।

আমি যখন নিজের কোডটি পরীক্ষা করছি তখন এএএ আমার জন্য খুব দরকারী। আমি যদি নিজের জন্য কোনও প্রকল্প বা একটি লাইব্রেরিতে কাজ করি তবে এএএই আমি যাব way এটি আমাকে আমার পরীক্ষা চালানোর জন্য যা প্রয়োজন তা সেট আপ করতে দেয় এবং তারপরে কেবল এটি পরীক্ষা করে । এটি সেটআপ করা দ্রুত এবং আমার কোডটি আমার প্রত্যাশা অনুযায়ী কাজ করছে তা যাচাই করা দ্রুত।

জিডাব্লুটিটি ব্যবসায়িক পরিবেশে কার্যকর, যেখানে প্রোগ্রামারদের দ্বারা করা কাজগুলি ব্যবসায়ের মূল্যে ম্যাপ করা দরকার। ব্যবসায়ের মান বৈশিষ্ট্য দ্বারা ম্যাপ করা হয় এবং আশা করা যায় যে বৈশিষ্ট্যগুলি বাগগুলি প্রবর্তন করে না। প্রোগ্রামিং কার্যগুলিতে বৈশিষ্ট্যগুলি ম্যাপ করার জন্য অনেক কৌশল রয়েছে তবে সেগুলির মধ্যে একটি প্রয়োজনীয়তার মাধ্যমে through আমার অভিজ্ঞতায়, প্রয়োজনীয়তাগুলি ব্যবহারকারীর সম্পাদনের জন্য ছোট স্তরের সমস্ত স্তরের ব্যবহারকারীর স্তরের প্রয়োজনীয়তা থেকে শুরু করে। এটি দরকারী কারণ প্রোগ্রামাররা যে কাজটি করছে তা তাদের গ্রাহক / ব্যবহারকারীদের উপর কীভাবে প্রভাব ফেলছে তা ম্যানেজারদের পক্ষে এটি সহজেই বোঝা যায় এবং প্রোগ্রামাররা তাদের ব্যবসায়িক মূল্য কেন বাড়িয়ে দিচ্ছে?

  • ব্যবহারকারীর স্তরের প্রয়োজনীয়তা: প্রদত্ত গুদামটিতে ন্যূনতম এন আইটেম (গুলি) রয়েছে, যখন কোনও ব্যবহারকারী এন আইটেম কিনে, তখন গুদামটি ব্যবহারকারীকে এন আইটেম (গুলি) সরবরাহ করে
  • সিস্টেম-স্তরীয় প্রয়োজনীয়তা 1: ইনভেন্টরি সিস্টেমে এনট্রুমেন্টিতে এন আইটেম (গুলি) দেওয়া থাকে, যখন এন আইটেমগুলির জন্য একটি অনুরোধ ইনভেন্টরি সিস্টেমে ইনপুট থাকে তখন ইনভেন্টরি সিস্টেম সেই ধরণের আইটেমের জন্য ইনভেন্টরি গণনা হ্রাস করে ases
  • সিস্টেম-স্তরের প্রয়োজনীয়তা 2: প্রদত্ত পেমেন্ট সিস্টেমের ইনভেন্টরিতে এন আইটেম রয়েছে, যখন এন আইটেমগুলির জন্য অনুরোধ অর্থ প্রদানের সিস্টেমে ইনপুট হয় তখন পেমেন্ট সিস্টেম ব্যবহারকারীকে এন আইটেমের জন্য চার্জ করে দেয়
  • ...
  • প্রোগ্রামার-স্তরের প্রয়োজনীয়তা 1: প্রদত্ত 5 সোয়েটারগুলি ইনভেন্টরিতে রয়েছে, যখন 3 টি সোয়েটারগুলি ইনভেন্টরি থেকে সরানো হয় তখন 2 সিটার অনুসন্ধানের মধ্যে রেখে যায়
  • ...

এই ধরণের প্রয়োজনীয়তা কাঠামো একটি গাছের মতো নকশার জন্য অনুমতি দেয় যেখানে প্রোগ্রামার-স্তর প্রয়োজনীয়তাগুলি সমস্ত গাছটিকে ব্যবহারকারী-স্তরের প্রয়োজনীয়তাতে ম্যাপ করে। এইভাবে, যখন কোনও প্রোগ্রামার-স্তরের প্রয়োজনীয়তা ব্যর্থ হয় তখন আপনি জানেন যে কোন ব্যবহারকারী-স্তরের প্রয়োজনীয়তা প্রভাবিত হয়।

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

public void Test_CaseWhereThereAreEnoughSweatersLeft() {
    // Arrange
    // setup Sweater Inventory mock (DB mocks, etc)
    // count = 5
    // when The number of sweaters remaining is request, return count
    // when Inventory is requested to remove N items, then count = count - N

    // Act
    // call the Unit Under Test to remove 3 items from inventory

    // Assert
    // the number of sweaters in the inventory is 2
    // the removal should return indicating a successful removal of items from the inventory
}

public void Test_CaseWhereThereAreNotEnoughSweatersLeft() {
    // Arrange
    // setup Sweater Inventory mock (DB mocks, etc)
    // count = 2
    // when The number of sweaters remaining is request, return count
    // when Inventory is requested to remove N items, then count = count - N

    // Act
    // call the Unit Under Test to remove 3 items from inventory

    // Assert
    // the number of sweaters remaining is still 2
    // the removal should return an error indicating not enough items in the inventory
}

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

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

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

4

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


2

কোনও পার্থক্য নেই।
পরীক্ষার তিনটি অবস্থা:
প্রদত্ত = সাজানো,
যখন = আইন,
তারপরে = জোড় করানো।

প্রশ্নটিতে আপনি যে পার্থক্য দিয়েছেন তা হ'ল জিডিডাব্লুটি এবং এএএ নয় টিডিডি এবং বিডিডি-র মধ্যে পার্থক্য।

টিডিডিতে আপনার একটি পরীক্ষার জন্য তিনটি পৃথক পদ্ধতি থাকতে পারে

public class TestsOfFormatMethod
{        
    public void Arrange() { // set dependencies }
    public string Act() { // return formattted result }
    public string AssertThatFormatIsEmpty()
    {
        Arrange();
        var actual = Act();
        Assert.IsEmpty(actual);
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.