ইউনিট পরীক্ষাগুলি না লেখার পক্ষে যুক্তিযুক্ত কারণ তারা পরে মন্তব্য করার প্রবণতা বা ইন্টিগ্রেশন পরীক্ষাগুলি আরও মূল্যবান বলে মনে হয়?


35

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

তার পয়েন্টগুলি সংক্ষেপে:

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

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


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

1
@ রবার্ট হার্ভে - সম্মত - আমি এই সম্পত্তিগুলির একটি তালিকা দেখতে আগ্রহী।
জেফ লেভাইন

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


উত্তর:


62

আমি আপনার বন্ধুর সঙ্গে পাশ থেকে ঝোঁক সব খুব প্রায়ই, ইউনিট পরীক্ষা ভুল জিনিষ পরীক্ষা

ইউনিট পরীক্ষাগুলি সহজাত খারাপ নয়। তবে তারা প্রায়শই ইনপুট / আউটপুট প্রবাহের চেয়ে প্রয়োগের বিশদটি পরীক্ষা করে। যখন এটি ঘটে তখন আপনি সম্পূর্ণ অর্থহীন পরীক্ষা দিয়ে শেষ করেন। আমার নিজস্ব নিয়মটি হ'ল একটি ভাল ইউনিট পরীক্ষা আপনাকে বলে যে আপনি কেবল কিছু ভেঙে দিয়েছেন; একটি খারাপ ইউনিট পরীক্ষা কেবল আপনাকে বলে যে আপনি সবেমাত্র কিছু পরিবর্তন করেছেন।

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

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

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

যেমন এটি ভাল বা খারাপ হওয়ার বিষয়ে নয়। এটি ঠিক যে এক ভুল করা খুব সহজ, এবং বাস্তবে খুব প্রায়ই ভুল হয়।


13
এটি, এটি, একশ বার এটি। এটি পরীক্ষা চালিত বিকাশের বিষয়ে একটি দুর্দান্ত বিষয়। প্রথমে পরীক্ষাগুলি লিখতে আপনাকে এমন পরীক্ষাগুলি লিখতে সহায়তা করবে যা আপনার বাস্তবায়নের বিশদ পরীক্ষা করে না তবে আপনি যে উদ্দেশ্যে ব্যবহারের চেষ্টা করছেন সে উদ্দেশ্যে ব্যবহার করা হচ্ছে।
ওয়ার্লবেল

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

2
@ ডকব্রাউন: আসলে না। আমার অভিপ্রেতটি হ'ল এটি প্রায়শই ভুল হয়েছে যে ওপির সহকর্মীর বেশিরভাগ ক্ষেত্রেই এটি সঠিক ছিল - বা কমপক্ষে সব ক্ষেত্রেই আমি ইউনিট-পরীক্ষা আবেগপ্রবণ সংস্থাগুলিতে অংশ নিয়েছি।
ডেনিস ডি বার্নার্ডি

3
@ ডেনিসেডবার্নার্ডি: আমার বক্তব্যটি: আপনি যা লিখেছেন তা অবশ্যই অনুশীলন থেকে প্রচুর জ্ঞানের সাথে সঠিক, তবে "সহীকরণের পরীক্ষার" হিসাবে ইন্টিগ্রেশন টেস্টের পরামর্শের প্রসঙ্গে তাঁর সহকর্মীর সাথে ওপিএস মামলার অর্থ কী তা আমি একটি অনুপস্থিতি অনুভব করছি। উন্নত বিকল্প "।
ডক ব্রাউন

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

38

যখন প্রধান কোড পরিবর্তন ঘটে, ইউনিট পরীক্ষাগুলি পুনরায় কাজ করার পরিবর্তে মন্তব্য করার প্রবণতা থাকে।

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

সময় ব্যবহারের ক্ষেত্রে কভার ইন্টিগ্রেশন টেস্টগুলিতে ভাল ব্যয় করা হয় যা ছোট স্কোপযুক্ত পরীক্ষাগুলি কম / না-গুরুত্বপূর্ণ করে তোলে।

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


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

+1 "আপনার সংজ্ঞাটি সম্পন্ন করার জন্য আপনাকে কাজ করতে হবে" এর জন্য। ভাল বলেছ!
আন্দ্রেস এফ।

14

আমি জানি না যে আমি আপনার সহকর্মীর যুক্তি গ্রহণ করি।

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

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

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

আপনি যদি সংক্ষিপ্ত এবং দার্শনিক পেতে চান তবে অনেক দুর্দান্ত সংস্থান রয়েছে:


এই নিবন্ধটির জন্য +1, আমরা এখানে যা লিখতে পারি তার চেয়ে ওপিএস মামলার উত্তম উত্তর হতে পারে-
ডক ব্রাউন

অলসতা একটি অজুহাত সম্পর্কে পয়েন্ট নম্বর 1 জন্য +1। আমি হতাশাজনক যে যথেষ্ট চাপ দিতে পারছি না। আমি সেখানে ছিলাম. সম্প্রতি, আসলে।
গ্রেগ বার্গার্ড্ট

3
কারণ 1 ইউনিট পরীক্ষার ত্রুটি নয়, তবে এটি এখনও ইউনিট পরীক্ষার বিরুদ্ধে একটি কারণ।
ব্যবহারকারী 253751

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

6

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

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


4

ইউনিট পরীক্ষাগুলি পুনরায় কাজ করার পরিবর্তে মন্তব্য করা যায়।

এই পর্যায়ে কোড পর্যালোচনা প্রক্রিয়াটি "ইউনিট পরীক্ষাগুলি ঠিক করুন" বলে এবং এটি আর কোনও সমস্যা নয় :-) যদি আপনার কোড পর্যালোচনা প্রক্রিয়া জমা দেওয়া কোডগুলিতে এই ধরণের বড় ত্রুটিটি ধরা না দেয় তবে সমস্যাটি।


3

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

আমি সবসময় রিফ্যাক্টরিং এবং কার্যকারিতা পরিবর্তনের চেষ্টা করি। যখন আমার দুটোই করার দরকার হয়, আমি সাধারণত প্রথমে রিফ্যাক্টরিংটি করি।

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

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

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

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

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

ব্যবহারের ক্ষেত্রে কভার করার জন্য ইন্টিগ্রেশন টেস্টগুলিতে সময় আরও ভালভাবে ব্যয় করা হয়, যা ছোট স্কোপযুক্ত পরীক্ষাগুলি কম / না-গুরুত্বপূর্ণ করে তোলে।

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

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


3

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

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

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

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

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

ইউনিট টেস্টগুলি টুলবক্সের একটি সরঞ্জাম। তারা আপনাকে সেবা দেওয়ার জন্য, অন্যদিকে নয়। আপনি যতটা .োকালেন তত কমপক্ষে সেগুলি থেকে বেরিয়ে আসার বিষয়টি নিশ্চিত করুন।


3

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

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

আপনার বন্ধুর দ্বারা তৈরি পয়েন্টগুলি উল্লেখ করে:

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

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

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


2

আমি ইউনিট পরীক্ষার বিরুদ্ধে কেবল একটি যুক্তিই ভাবতে পারি এবং এটি বেশ দুর্বল।

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

তবে: লেখার পরীক্ষার সময় প্রথম স্থানে (স্বল্প) ব্যয় হয়।

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


যে প্রশ্ন জিজ্ঞাসা করা হয়েছিল আন্তরিকতার সাথে উত্তর দেওয়ার চেষ্টা করার জন্য +1।
রাবারডাক

2
ইউনিট পরীক্ষার ব্যয় অবশ্যই কম নয়। ভাল ইউনিট পরীক্ষাগুলি সাধারণত তারা যা পরীক্ষা করে তার চেয়ে বেশি সময় নেয়। বেশিরভাগ সময় সুবিধাগুলি ব্যয় ছাড়িয়ে যায়।
একে_

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

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