Unit Testing এর জন্য EUnit এবং Common Test Framework

Testing এবং Test-Driven Development (টেস্টিং এবং টেস্ট-ড্রিভেন ডেভেলপমেন্ট) - এরল্যাং (Erlang) - Computer Programming

411

Erlang-এ Unit Testing এর জন্য EUnit এবং Common Test Framework

Erlang প্রোগ্রামিং ভাষার শক্তিশালী ফিচারগুলির মধ্যে একটি হল তার পরীক্ষার (testing) সক্ষমতা। সিস্টেমের কোডের কার্যকারিতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে unit testing খুবই গুরুত্বপূর্ণ। Erlang-এ unit testing করার জন্য দুটি প্রধান ফ্রেমওয়ার্ক রয়েছে: EUnit এবং Common Test Framework। এই দুটি ফ্রেমওয়ার্ক কোডের মান যাচাই করতে ব্যবহৃত হয় এবং সিস্টেমের উন্নয়ন প্রক্রিয়ায় সহায়ক।

এখানে EUnit এবং Common Test Framework এর ব্যবহার এবং তাদের মধ্যে পার্থক্য নিয়ে আলোচনা করা হবে।


1. EUnit (Unit Testing Framework)

EUnit হল Erlang এর জন্য একটি সহজ এবং লাইটওয়েট ইউনিট টেস্টিং ফ্রেমওয়ার্ক। এটি ছোট ছোট ফাংশনের জন্য টেস্ট কেস লিখতে এবং কার্যকারিতা যাচাই করতে ব্যবহৃত হয়। EUnit এর সাহায্যে আপনি দ্রুত টেস্ট কেস তৈরি করতে পারেন, যা সিস্টেমের কোডের লজিক্যাল ভুল এবং ত্রুটি সনাক্ত করতে সহায়ক।

1.1 EUnit এর মূল বৈশিষ্ট্য

  • Lightweight: EUnit একটি লাইটওয়েট টেস্টিং ফ্রেমওয়ার্ক, যা কোডের ছোট ছোট ইউনিটগুলির জন্য টেস্ট তৈরি করে।
  • Simple to Use: এটি খুবই সহজে ব্যবহৃত হয় এবং ত্রুটি সনাক্ত করতে সহায়ক।
  • Integration with Erlang: Erlang পরিবেশে EUnit সহজে ইন্টিগ্রেট করা যায় এবং অন্য টেস্টিং ফ্রেমওয়ার্কের তুলনায় দ্রুত টেস্ট চালানো যায়।

1.2 EUnit এর ব্যবহার

EUnit ব্যবহার করার জন্য একটি মডিউল তৈরি করা হয় এবং তারপর টেস্ট কেসগুলো লিখে পরীক্ষা চালানো হয়।

EUnit টেস্টের উদাহরণ:

-module(my_module).
-include_lib("eunit/include/eunit.hrl").

add(A, B) -> A + B.
subtract(A, B) -> A - B.

% Unit tests
add_test() ->
    ?assertEqual(4, add(2, 2)),
    ?assertEqual(0, add(-1, 1)).

subtract_test() ->
    ?assertEqual(1, subtract(3, 2)),
    ?assertEqual(-5, subtract(-3, 2)).

এখানে:

  • add/2 এবং subtract/2 ফাংশন দুটি টেস্ট করা হয়েছে।
  • ?assertEqual/2 ব্যবহার করে আমরা পরীক্ষিত আউটপুট এবং প্রত্যাশিত আউটপুটের মধ্যে সমতা যাচাই করছি।
  • EUnit টেস্ট রান করতে আপনি eunit মডিউল ব্যবহার করতে পারেন।

Test run:

1> c(my_module).
{ok,my_module}
2> eunit:test(my_module).

এখানে, eunit:test/1 ফাংশনটি my_module মডিউলটির সমস্ত টেস্ট চালাবে এবং ফলাফল দেখাবে।

1.3 EUnit Best Practices

  • ছোট এবং একক ফাংশনের জন্য EUnit ব্যবহার করুন, যা দ্রুত টেস্টিং এবং ডিবাগিং করতে সহায়ক।
  • Assert functions: assertEqual, assertNotEqual, assertTrue ইত্যাদি ব্যবহার করুন টেস্ট কেসে পরীক্ষা করার জন্য।
  • টেস্ট কেসের মধ্যে ফাংশনগুলো স্বতন্ত্রভাবে পরীক্ষা করতে এবং নির্দিষ্ট ফলাফল প্রাপ্তি নিশ্চিত করতে হবে।

2. Common Test Framework

Common Test Erlang-এর একটি শক্তিশালী এবং পূর্ণাঙ্গ টেস্ট ফ্রেমওয়ার্ক যা বড় পরিসরের সিস্টেমের জন্য ব্যবহৃত হয়। এটি integration testing এবং system-level testing এর জন্য খুবই উপযোগী, এবং এটি distributed systems এর টেস্টিং সমর্থন করে। Common Test ফ্রেমওয়ার্কটি test suites এবং test cases তৈরি করতে সহায়ক এবং complex test scenarios পরিচালনা করার জন্য ডিজাইন করা হয়েছে।

2.1 Common Test এর মূল বৈশিষ্ট্য

  • Full-featured: Common Test অনেক বিস্তৃত, এবং এটি একটি সিস্টেমের সব অংশের পরীক্ষার জন্য উপযোগী।
  • Integration Testing: এটি ডিস্ট্রিবিউটেড এবং ইন্টিগ্রেটেড সিস্টেমের জন্য উপযুক্ত টেস্টিং ফ্রেমওয়ার্ক।
  • Parallel Testing: কমপ্লেক্স এবং বড় টেস্ট কেসের জন্য parallel testing সমর্থন করে।
  • Test Suites: আপনি একাধিক টেস্ট কেস গ্রুপিং করতে পারেন এবং একটি সুনির্দিষ্ট test suite তৈরি করতে পারেন।

2.2 Common Test Framework এর ব্যবহার

Common Test ব্যবহার করতে হলে ct মডিউল ব্যবহার করতে হয় এবং test suitestest cases এর মাধ্যমে টেস্টগুলো পরিচালনা করতে হয়।

Common Test উদাহরণ:

-module(my_test).
-include_lib("common_test/include/ct.hrl").

% Test case 1
test_add() ->
    ?assertEqual(5, add(2, 3)).

% Test case 2
test_subtract() ->
    ?assertEqual(1, subtract(3, 2)).

এখানে:

  • test_add/0 এবং test_subtract/0 ফাংশন দুটি পরীক্ষিত হচ্ছে।
  • ct.hrl হেডার ফাইল ব্যবহার করা হয়েছে।

2.3 Running the Test Suite

Test Suite তৈরি করার জন্য:

-module(my_test_suite).
-include_lib("common_test/include/ct.hrl").

all_tests() ->
    [{my_test, test_add},
     {my_test, test_subtract}].

এখানে, all_tests/0 ফাংশনটি টেস্ট কেসের একটি তালিকা প্রদান করছে।

এখন, ct:run/0 কমান্ড ব্যবহার করে পুরো টেস্ট স্যুট চালানো হবে:

ct:run().

2.4 Common Test Best Practices

  • Test Suites ব্যবহার করুন, যেখানে একাধিক টেস্ট কেস একত্রিত থাকে এবং পরিচালনা করা সহজ হয়।
  • প্রতিটি সিস্টেম স্তরের ফিচার বা অংশের জন্য পৃথক টেস্ট কেস তৈরি করুন।
  • Assertions এর মাধ্যমে ফাংশনের প্রত্যাশিত আউটপুট যাচাই করুন।

3. EUnit এবং Common Test এর মধ্যে পার্থক্য

বৈশিষ্ট্যEUnitCommon Test
ফোকাসUnit testing (ফাংশন ভিত্তিক)System-level and Integration testing
ব্যবহারছোট ফাংশন, একক ইউনিট পরীক্ষার জন্য উপযুক্তবড় সিস্টেম, ডিস্ট্রিবিউটেড টেস্টিং
পরীক্ষার পরিসরফাংশনের পরীক্ষাসিস্টেম এবং এপ্লিকেশন স্তরের পরীক্ষা
কনফিগারেশনসহজ এবং লাইটওয়েটজটিল এবং সম্পূর্ণ কাঠামো সহ
টেস্ট রানিংeunit:test/1 ব্যবহারct:run() ব্যবহার
প্রকারUnit level testsIntegration, system-level tests

উপসংহার

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

Content added By
Promotion

Are you sure to start over?

Loading...