সফটওয়্যার টেস্টিং

নতুনদের জন্য ইউনিট টেস্টিং টিউটোরিয়াল

30 অক্টোবর, 2021

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

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

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

একটি ইউনিট হল কম্পিউটার সফ্টওয়্যারের সবচেয়ে ছোট পরীক্ষাযোগ্য অংশ। প্রক্রিয়ায় সহায়তা করার জন্য, বিকাশকারীরা ইউনিট টেস্টিং ফ্রেমওয়ার্ক, ড্রাইভার, স্টাব, মক/ফেক অবজেক্টের মতো টুল ব্যবহার করে।

যদি একটি ইউনিট পরীক্ষা ব্যর্থ হয়, এটি একটি ত্রুটি বা পরীক্ষা নিজেই একটি পরিবর্তিত কোড বিবেচিত হয়.

অংশ পরিক্ষাকরণ

সুচিপত্র

পরীক্ষার স্তর:

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

কেন ইউনিট পরীক্ষা গুরুত্বপূর্ণ?

পরীক্ষা করার দ্রুত এবং আরও কার্যকর উপায়:

ইউনিট টেস্টিং হল কোড লেখার প্রক্রিয়া, এটি পরীক্ষা করা এবং তারপর স্বয়ংক্রিয়ভাবে অন্যান্য পরীক্ষাগুলি সম্পাদন করা। এটি প্রোগ্রাম লজিক পরীক্ষা করার একটি দ্রুত উপায়, কারণ ইউনিট পরীক্ষাগুলি সম্পাদন করতে ম্যানুয়াল পরীক্ষা বা QA টিমের দ্বারা পরিচালিত সমন্বিত পরীক্ষার চেয়ে কম সময় লাগে।

মান নিয়ন্ত্রণ:

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

কোড পরিচালনাযোগ্য এবং সম্পাদনা করতে আরও আরামদায়ক করে তোলে:

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

সমস্যাটি চিহ্নিত করা আরও স্বাভাবিক:

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

ইউনিট পরীক্ষার সুবিধা:

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

ইউনিট পরীক্ষার অসুবিধা:

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

ইউনিট পরীক্ষার কৌশল:

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

ইউনিট টেস্টিং টুলস:

  • নুনিত : xunit পরিবারের একটি পরিবার, Nunit হল একটি ওপেন-সোর্স ইউনিট পরীক্ষার জন্য ডিজাইন করা হয়েছে। NET এবং মনো ফ্রেমওয়ার্ক এটি ইউনিট টেস্ট কেসিং লেখার জন্য সবচেয়ে বেশি ব্যবহৃত টুল।
  • জমকিট : JMockit আরেকটি ওপেন সোর্স সফটওয়্যার লাইব্রেরি। এটি উপহাস, জাল, এবং ইন্টিগ্রেশন পরীক্ষার জন্য API এবং একটি কোড কভারেজ টুল অন্তর্ভুক্ত করে। লাইব্রেরিটি একটি পরীক্ষার কাঠামো যেমন JUnit বা Nunit এর সাথে একসাথে ব্যবহার করা হবে।
  • জুনিট: ঠিক যেমন Nunit, এটি একটি ওপেন-সোর্স ইউনিট পরীক্ষা কিন্তু জাভার জন্য ডিজাইন করা হয়েছে। এটি Xunit এর পরিবার থেকেও এসেছে। ডেভেলপারদের পুনরাবৃত্তিযোগ্য পরীক্ষা লিখতে ব্যবহৃত হয়, এটি ইউনিট পরীক্ষার জন্য একটি শক্তিশালী ভিত্তি রয়েছে।
  • টাইপমক : TypeMock ইন্টারফেসের মাধ্যমে প্রায় যেকোনো কিছুকে উপহাস করতে পারে। অধিকন্তু, স্ট্যাটিক পদ্ধতি এবং ক্লাসগুলিকে উপহাস করা সম্ভব যা একটি আদর্শ ওপেনসোর্স টুল উপহাস করতে পারে না। সাজানো, অভিনয়, নিশ্চিতকরণ এবং পরীক্ষার নিদর্শনগুলি বাস্তবায়িত হয় এবং সেগুলি থেকে অন্তরক তৈরি করা হয়।
  • এমবুনিট : এমবেডেড ইউনিট টেস্ট ফ্রেমওয়ার্ক এমবুনিট এমবেডেড সিস্টেমের জন্য একটি নতুন ফ্রেমওয়ার্ক। এটি সি-তে লেখা সফ্টওয়্যার অ্যাপ্লিকেশনগুলির জন্য একটি পরীক্ষার কাঠামো হিসাবে ডিজাইন করা হয়েছে /C++ এবং সমস্ত নেটওয়ার্ক ভাষা সমর্থন করে। এই ফ্রেমওয়ার্ক জাভাতে JUnit এর মতো একই উদ্দেশ্যে কাজ করে, কিন্তু একটি ভিন্ন লক্ষ্য নিয়ে: একটি ওপেন-সোর্স, ক্রস-প্ল্যাটফর্ম টেস্টিং ফ্রেমওয়ার্ক হিসাবে পরিবেশন করা।

ইউনিট পরীক্ষার টিপস:

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

সম্পর্কিত বিষয়

ইন্টিগ্রেশন টেস্টিং সিস্টেম টেস্টিং স্বীকৃতি যাচাইকরণ