পরীক্ষা করা বা না পরীক্ষা করা, একটি প্রযুক্তিগত দৃষ্টিকোণ

আপনার কী পরীক্ষা করা দরকার এবং আপনি কী অস্বীকার করতে পারেন তা নির্ধারণ করুন।

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

কি পরীক্ষা করবেন কি পরীক্ষা করবেন না।

সাধারণ নির্দেশিকা এবং নিদর্শন

এটা লক্ষণীয় যে নির্দিষ্ট প্যাটার্ন এবং পয়েন্টগুলি গুরুত্বপূর্ণ, আপনি ইউনিট, ইন্টিগ্রেশন বা শেষ থেকে শেষ পরীক্ষা পরিচালনা করছেন কিনা তা নির্বিশেষে। এই নীতিগুলি উভয় ধরণের পরীক্ষার ক্ষেত্রে প্রয়োগ করা যেতে পারে এবং করা উচিত, তাই এগুলি শুরু করার জন্য একটি ভাল জায়গা।

সহজবোধ্য রাখো

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

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

পরীক্ষাগুলিকে জটিল করবেন না, তাদের এইভাবে অনুভব করা উচিত নয়।

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

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

এটা মূল্য কি পরীক্ষা

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

সব জিনিস পরীক্ষা করবেন না।

বাস্তবায়নের বিবরণ পরীক্ষা করবেন না

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

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

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

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

উপহাস: নিয়ন্ত্রণ হারাবেন না

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

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

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

আপনি শেষ থেকে শেষ পরীক্ষায় উপহাস করা উচিত?

সাধারণভাবে, না। যাইহোক, উপহাস কখনও কখনও একটি জীবন রক্ষাকারী হতে পারে - তাই আসুন এটিকে সম্পূর্ণভাবে বাতিল না করা যাক।

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

এই ক্ষেত্রে, আপনি যে পরিষেবাগুলি নিয়ন্ত্রণ করতে পারবেন না তার উপর নির্ভরতা হ্রাস করা আরও উপকারী হতে পারে। ইন্টিগ্রেশন বা এন্ড-টু-এন্ড পরীক্ষায় সতর্কতার সাথে উপহাস ব্যবহার করার পরামর্শ দেওয়া হয় কারণ এটি আপনার পরীক্ষার আত্মবিশ্বাসের মাত্রা হ্রাস করে।

পরীক্ষার সুনির্দিষ্ট: করণীয় এবং করণীয়

সুতরাং, সব মিলিয়ে, একটি পরীক্ষা কি ধারণ করে? এবং পরীক্ষার ধরনের মধ্যে পার্থক্য আছে? আসুন প্রধান পরীক্ষার ধরনগুলির জন্য তৈরি কিছু নির্দিষ্ট দিকগুলি ঘনিষ্ঠভাবে দেখে নেওয়া যাক।

একটি ভাল ইউনিট পরীক্ষার অন্তর্গত কি?

একটি আদর্শ এবং কার্যকর ইউনিট পরীক্ষা করা উচিত:

  • নির্দিষ্ট দিকগুলিতে মনোনিবেশ করুন।
  • স্বাধীনভাবে কাজ করুন।
  • ছোট আকারের পরিস্থিতিতে অন্তর্ভুক্ত.
  • বর্ণনামূলক নাম ব্যবহার করুন।
  • প্রযোজ্য হলে AAA প্যাটার্ন অনুসরণ করুন।
  • ব্যাপক পরীক্ষা কভারেজ গ্যারান্টি.
করুন ✅ না ❌
পরীক্ষা যতটা সম্ভব ছোট রাখুন। পরীক্ষার ক্ষেত্রে একটি জিনিস পরীক্ষা করুন। বড় ইউনিটে পরীক্ষা লিখুন।
পরীক্ষাগুলিকে সর্বদা বিচ্ছিন্ন রাখুন এবং আপনার ইউনিটের বাইরের জিনিসগুলিকে উপহাস করুন। অন্যান্য উপাদান বা পরিষেবা অন্তর্ভুক্ত করুন।
পরীক্ষাগুলিকে স্বাধীন রাখুন। পূর্ববর্তী পরীক্ষার উপর নির্ভর করুন বা পরীক্ষার ডেটা ভাগ করুন।
বিভিন্ন দৃশ্যকল্প এবং পথ কভার করুন। নিজেকে সুখী পথ বা সর্বোচ্চ নেতিবাচক পরীক্ষায় সীমাবদ্ধ রাখুন।
বর্ণনামূলক পরীক্ষার শিরোনাম ব্যবহার করুন, যাতে আপনি অবিলম্বে দেখতে পারেন আপনার পরীক্ষাটি কী। শুধুমাত্র ফাংশনের নাম দ্বারা পরীক্ষা করুন, ফলে যথেষ্ট বর্ণনামূলক নয়: testBuildFoo() বা testGetId()
ভাল কোড কভারেজ বা পরীক্ষার ক্ষেত্রে বিস্তৃত পরিসরের জন্য লক্ষ্য করুন, বিশেষ করে এই পর্যায়ে। প্রতিটি ক্লাস থেকে ডাটাবেস (I/O) স্তর পর্যন্ত পরীক্ষা করুন।

একটি ভাল ইন্টিগ্রেশন পরীক্ষার অন্তর্গত কি?

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

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

কি একটি ভাল শেষ থেকে শেষ পরীক্ষার অন্তর্গত?

একটি বিস্তৃত শেষ থেকে শেষ পরীক্ষা করা উচিত:

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