আমার কি সত্যই কোনও ইউনিট পরীক্ষার কাঠামো দরকার?


19

বর্তমানে আমার চাকরিতে, আমাদের সি ++ অ্যাপ্লিকেশনটির জন্য ইউনিট পরীক্ষার একটি বড় স্যুট রয়েছে। তবে আমরা একটি ইউনিট পরীক্ষার কাঠামো ব্যবহার করি না। তারা কেবলমাত্র একটি সি ম্যাক্রো ব্যবহার করে যা মূলত একটি দাবী এবং একটি কৌটকে আবৃত করে। কিছুটা এইরকম:

VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << __FILE__ << "," << __LINE__; asserst(false)}

তারপরে আমরা কেবল আমাদের প্রতিটি পরীক্ষার জন্য ফাংশন তৈরি করি

void CheckBehaviorYWhenXHappens()
{
    // a bunch of code to run the test
    //
    VERIFY(blah != blah2);
    // more VERIFY's as needed
}

আমাদের সিআই সার্ভারটি "ইউনিট পরীক্ষা ব্যর্থ হয়েছে" এবং বিকাশকারীকে বার্তা ইমেল করে বিল্ডটি ব্যর্থ করে the

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

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

উত্তর:


8

অন্যরা যেমন ইতিমধ্যে বলেছে, ইতিমধ্যে আপনার নিজের, সরল, বাড়ির তৈরি কাঠামো রয়েছে।

এটি একটি তৈরি করা তুচ্ছ মনে হয়। তবে, ইউনিট-পরীক্ষার কাঠামোর আরও কিছু বৈশিষ্ট্য রয়েছে যা বাস্তবায়ন করা এত সহজ নয়, কারণ তারা ভাষার কিছু উন্নত জ্ঞান গ্রহণ করে। আমি সাধারণত পরীক্ষার কাঠামোর থেকে প্রয়োজনীয় বৈশিষ্ট্যগুলি এবং হোমব্রিউয়ের পক্ষে এত সহজ নয় are

  • পরীক্ষার কেসগুলির স্বয়ংক্রিয় সংগ্রহ। অর্থাৎ নতুন পরীক্ষা পদ্ধতি নির্ধারণ এটি কার্যকর করার জন্য যথেষ্ট হতে হবে। JUnit সমস্ত নাম স্বয়ংক্রিয়ভাবে সংগ্রহ করে যার নাম দিয়ে শুরু হয় test, NUnit এ [Test]টিকা আছে, বুস্ট T টেস্ট BOOST_AUTO_TEST_CASEএবং BOOST_FIXTURE_TEST_CASEম্যাক্রোগুলি ব্যবহার করে ।

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

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

    বলুন আপনি সবেমাত্র বাগ রিপোর্ট পেয়েছেন # 4211 এবং এটি ইউনিট পরীক্ষার মাধ্যমে পুনরুত্পাদন করা যেতে পারে। সুতরাং আপনি একটি লিখুন, তবে রানারকে ঠিক সেই পরীক্ষাটি চালানোর জন্য আপনাকে বলার দরকার রয়েছে, যাতে আপনি সেখানে আসলে কী ভুল তা ডিবাগ করতে পারেন।

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

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


ধন্যবাদ আমি মনে করি এটিই সেরা উত্তর। এই মুহুর্তে আমার ম্যাক্রো এটির কাজটি করে তবে আপনি উল্লিখিত বৈশিষ্ট্যগুলির মধ্যে আমি কিছুই করতে পারি না।
ডগ টি।

1
@ জ্যান হুডেক "এটি বেশিরভাগ সুবিধার্থে, তবে প্রতিটি সুবিধামত সুবিধা আপনি পেতে পারেন বিকাশকারীরা আসলে তাদের যে পরীক্ষাগুলি করা উচিত তা লিখে ফেলবেন এবং তারা তাদেরকে সঠিকভাবে সংযুক্ত করবেন।"; সমস্ত টেস্টিং ফ্রেমওয়ার্কগুলি ইনস্টল করার জন্য নিরঙ্কুশ, প্রায়শই তারিখের বৈধ নির্দেশাবলীর চেয়ে বেশি পুরানো বা অজানা ইনস্টলেশন নির্দেশাবলী থাকে; (২) যদি আপনি কোনও মধ্যবর্তী ইন্টারফেস ছাড়াই সরাসরি কোনও পরীক্ষার কাঠামোর প্রতিশ্রুতিবদ্ধ হন তবে আপনি এটির সাথে বিবাহবন্ধনে আবদ্ধ হন, ফ্রেমওয়ার্কগুলি স্যুইচিং করা সবসময় সহজ নয়।
দিমিত্রি

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

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

@ লোথার, হ্যাঁ, এটি অনেক কাজ এবং শেখার অনেক কিছুই তবে এখনও বার বার সহজ বয়লারপ্লেট লিখতে হবে কারণ আপনার বেশ কয়েকটি দরকারী উপকারিতার অভাব কাজটিকে অনেক কম আনন্দদায়ক করে তোলে এবং এটি কার্যকারিতাটিতে লক্ষণীয় পার্থক্য তৈরি করে।
জানু হুডেক

27

দেখে মনে হচ্ছে আপনি ইতিমধ্যে একটি কাঠামো ব্যবহার করেছেন, একটি গৃহ-নির্মিত।

আরও জনপ্রিয় ফ্রেমওয়ার্কের যুক্ত মূল্য কী? আমি বলব যে তারা যে পরিমাণ যুক্ত করে তা হ'ল যখন আপনাকে আপনার সংস্থার বাইরের লোকের সাথে কোড বিনিময় করতে হয়, আপনি এটি করতে পারেন, যেহেতু এটি কাঠামোর ভিত্তিতে যা পরিচিত এবং ব্যাপকভাবে ব্যবহৃত হয়

অন্যদিকে, একটি গৃহ-তৈরি কাঠামো আপনাকে অন্যথায় কখনও আপনার কোডটি ভাগ করে না নিতে বা ফ্রেমওয়ার্কটি নিজেই সরবরাহ করতে বাধ্য করে, যা কাঠামোর বিকাশের ফলে নিজেই জটিল হয়ে উঠতে পারে।

যদি আপনি কোনও কোডিকে কোনও ব্যাখ্যা এবং কোনও ইউনিট পরীক্ষার কাঠামো না দিয়ে কোনও সহকর্মীকে আপনার কোডটি দেন তবে তিনি এটি সংকলন করতে সক্ষম হবেন না।

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

সর্বশেষে তবে অন্তত নয়, বৃহত্তর ফ্রেমওয়ার্কগুলি আপনার নিজের কাঠামোর মধ্যে একদিন প্রয়োগ করার প্রয়োজন হতে পারে আরও বেশি বৈশিষ্ট্য সরবরাহ করেAssert.AreEqual(expected, actual)সবসময় যথেষ্ট হয় না। আপনার যদি প্রয়োজন হয়:

  • নির্ভুলতা পরিমাপ?

    Assert.AreEqual(3.1415926535897932384626433832795, actual, 25)
    
  • অকার্যকর পরীক্ষা যদি এটি দীর্ঘ সময় চলে? একটি সময়সীমা পুনরায় বাস্তবায়ন এমনকি অ্যাসিক্রোনাস প্রোগ্রামিং সহজতর ভাষায় সোজা নাও হতে পারে।

  • এমন একটি পদ্ধতি পরীক্ষা করুন যা ব্যতিক্রম ছুঁড়ে ফেলার আশা করে?

  • আরও মার্জিত কোড আছে?

    Assert.Verify(a == null);
    

    ঠিক আছে, তবে এর পরিবর্তে পরবর্তী লাইনটি লেখার জন্য আপনার অভিপ্রায়টি কি আরও প্রকাশক নয়?

    Assert.IsNull(a);
    

আমরা যে "কাঠামো" ব্যবহার করি তা সবই খুব ছোট শিরোনামের ফাইলে থাকে এবং দৃsert়তার শব্দার্থবিজ্ঞান অনুসরণ করে। সুতরাং আপনার তালিকাভুক্ত অপূর্ণতাগুলি সম্পর্কে আমি খুব বেশি চিন্তিত নই।
ডগ টি।

4
আমি দৃser়তাকে পরীক্ষার কাঠামোর সবচেয়ে তুচ্ছ অংশ বিবেচনা করি। রানার যা পরীক্ষার কেসগুলি এবং ফলাফলগুলি পরীক্ষা করে সংগ্রহ করে এবং পরিচালনা করে তা অ-তুচ্ছ গুরুত্বপূর্ণ অংশ।
জানু হুডেক

@ জন আমি অনুসরণ করি না আমার রানার প্রতিটি সি ++ প্রোগ্রামের মধ্যে একটি সাধারণ রুটিন common ইউনিট পরীক্ষার কাঠামোর রানার কি আরও পরিশীলিত এবং দরকারী কিছু করে?
ডগ টি।

1
আপনার কাঠামো কেবলমাত্র একটি প্রধান পদ্ধতিতে পরীক্ষা চালানো এবং চালানোর শব্দার্থতাকে অনুমতি দেয় ... এখন পর্যন্ত। প্রাথমিক
জেমস কিংসবারি

@ ডগটি: হ্যাঁ, শালীন ইউনিট পরীক্ষার কাঠামো চালক আরও কিছু পরিশীলিত দরকারী কাজ করেন। আমার সম্পূর্ণ উত্তর দেখুন।
জানু হুডেক

4

অন্যরা ইতিমধ্যে বলেছে, ইতিমধ্যে আপনার নিজের, গৃহ তৈরি কাঠামো রয়েছে।

আমি অন্য কিছু পরীক্ষার কাঠামো ব্যবহারের জন্য দেখতে পাচ্ছি কেবলমাত্র কারণটি একটি শিল্প "সাধারণ জ্ঞান" দৃষ্টিকোণ থেকে। নতুন বিকাশকারীদের আপনার ঘরে তৈরি উপায় শিখতে হবে না (তবে এটি খুব সহজ দেখাচ্ছে)।

এছাড়াও, অন্যান্য পরীক্ষার ফ্রেমওয়ার্কগুলিতে আরও বৈশিষ্ট্য থাকতে পারে যা আপনি নিতে পারেন।


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

3

আপনার যদি ইতিমধ্যে একটি কাঠামো থাকে তবে এটি সাধারণ কোনও।

বড় আকারের কাঠামোর মূল সুবিধা যেমন আমি দেখছি সেগুলি হ'ল বিভিন্ন ধরণের দৃser়তা (যেমন উত্থাপন উত্সাহ দেওয়া), ইউনিট পরীক্ষাগুলির জন্য একটি যৌক্তিক আদেশ এবং কেবলমাত্র ইউনিট পরীক্ষার একটি উপ-সেট চালানোর ক্ষমতা is একটি সময়. এছাড়াও, xUnit পরীক্ষার ধরণটি অনুসরণ করতে পারলে মোটামুটি সুন্দর example উদাহরণস্বরূপ সেটআপ () এবং টিয়ারডাউন () এক। অবশ্যই, এটি আপনাকে বলা ফ্রেমওয়ার্কে লক করে। মনে রাখবেন যে কয়েকটি ফ্রেমওয়ার্কগুলিতে অন্যের তুলনায় আরও ভাল মক ইন্টিগ্রেশন রয়েছে - উদাহরণস্বরূপ গুগল মক এবং পরীক্ষা।

আপনার সমস্ত ইউনিট পরীক্ষাগুলিকে নতুন কাঠামোর কাছে রিফ্যাক্টর করতে কত সময় লাগবে? দিন বা কয়েক সপ্তাহ এটির পক্ষে মূল্যবান হতে পারে তবে সম্ভবত এটি এত বেশি নয়।


2

আমি এটি যেভাবে দেখছি, আপনার উভয়েরই সুবিধা রয়েছে এবং আপনি একটি "অসুবিধা" (sic) এ আছেন।

সুবিধাটি হ'ল আপনার এমন একটি সিস্টেম রয়েছে যা আপনি স্বাচ্ছন্দ্য বোধ করেন এবং এটি আপনার পক্ষে কার্যকর। আপনি খুশি যে এটি আপনার পণ্যের বৈধতা নিশ্চিত করেছে এবং আপনি সম্ভবত কোনও ভিন্ন কাঠামো ব্যবহার করে এমন কোনও কিছুর জন্য আপনার সমস্ত পরীক্ষার পরিবর্তন করার প্রয়াসে কোনও ব্যবসায়িক মূল্য খুঁজে পাবেন না। আপনি যদি নিজের কোডটি রিফ্যাক্টর করতে পারেন এবং আপনার পরীক্ষাগুলি পরিবর্তনগুলি গ্রহণ করতে পারে - বা আরও ভাল, আপনি যদি নিজের পরীক্ষাগুলি সংশোধন করতে পারেন এবং আপনার বিদ্যমান কোডটি পরীক্ষাগুলি পুনরায় সঞ্চার না করা পর্যন্ত ব্যর্থ হয়, তবে আপনার সমস্ত ঘাঁটি coveredাকা থাকবে। যাহোক...

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

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

আমি যে বিষয়ে কথা বলছি তার উদাহরণ হিসাবে নীচের তুলনা করুন:

জমিদারি ব্যবহার:

Assert(variable_A == expected_value_1); // if this fails...
Assert(variable_B == expected_value_2); // ...this will not execute
Assert(variable_C == expected_value_3); // ...and nor will this!

একটি সাবলীল বিডিডি এপিআই ব্যবহার করে: (ধারণা করুন যে ইতালিযুক্ত বিটগুলি মূলত পদ্ধতি পয়েন্টার)

WithScenario("Test Scenario")
    .Given(*AConfiguration*) // each method
    .When(*MyMethodToTestIsCalledWith*, variable_A, variable_B, variable_C) // in the
    .Then(*ExpectVariableAEquals*, expected_value_1) // Scenario will
        .And(*ExpectVariableBEquals*, expected_value_2) // indicate if it has
        .And(*ExpectVariableCEquals*, expected_value_3) // passed or failed execution.
    .Execute();

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

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

নুনিট ব্যবহার :

[Test]
void TestMyMethod()
{
    const int theExpectedValue = someValue;

    GivenASetupToTestMyMethod();

    var theActualValue = WhenIExecuteMyMethodToTest();

    Assert.That(theActualValue, Is.EqualTo(theExpectedValue)); // nice, but it's not BDD
}

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


1

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

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

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

  • নামকরণের কনভেনশন, টীকা / বৈশিষ্ট্য ইত্যাদি ব্যবহার করে পরীক্ষার কেসগুলি স্বয়ংক্রিয়ভাবে চালানো
  • আরও বিভিন্ন সুনির্দিষ্ট জোর, যাতে আপনার সমস্ত দাবিগুলির জন্য আপনাকে শর্তাধীন লজিক লিখতে না হয় বা তাদের প্রকারটি দৃsert়রূপে বলার জন্য ব্যতিক্রমগুলি ধরতে হয় না।
  • পরীক্ষার কেসগুলির শ্রেণিবদ্ধকরণ, যাতে আপনি সহজেই সেগুলির সাবসেট চালাতে পারেন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.