ইউনিট টেস্টিং কি? [বন্ধ]


211

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

  • এটা কি?
  • এটা আমার জন্য কি করে?
  • আমি কেন এটি ব্যবহার করব?
  • আমি কখন এটি ব্যবহার করব (যখন নেই তখনও)?
  • কিছু সাধারণ সমস্যা এবং ভুল ধারণা কী কী

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

পরিষ্কার কোড আলোচনা: youtube.com/watch?v=wEhu57pih5w
Kieran

1
এটি 1 নির্দিষ্ট প্রশ্ন নয়। এটি 5 বিস্তৃত প্রশ্ন।
রায়েডওয়াল্ড

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

উত্তর:


197

ইউনিট টেস্টিং মোটামুটিভাবে বলতে হয়, পরীক্ষার কোডের সাথে বিচ্ছিন্নভাবে আপনার কোডের বিটগুলি পরীক্ষা করে। অবিলম্বে সুবিধাগুলি যা মাথায় আসে সেগুলি হ'ল:

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

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

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

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

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

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


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


2
আপনি কীভাবে টিডিডি উন্নয়নের গতি বাড়ানোর বিষয়ে আপনার বক্তব্যটি প্রসারিত করবেন?
মার্টিন

70

আমি ড্যানের সাথে একমত নই (যদিও এর চেয়ে ভাল পছন্দটি উত্তর নাও দেওয়া যেতে পারে) ... তবে ...

ইউনিট টেস্টিং আপনার সিস্টেমের আচরণ এবং কার্যকারিতা পরীক্ষা করার জন্য কোড লেখার প্রক্রিয়া।

স্পষ্টতই পরীক্ষাগুলি আপনার কোডের মান উন্নত করে তবে এটি ইউনিট পরীক্ষার কেবল একটি অতিমাত্রায় সুবিধা। আসল উপকারিতা হ'ল:

  1. আপনি আচরণ (রিফ্যাক্টরিং) পরিবর্তন করবেন না তা নিশ্চিত করে কারিগরি বাস্তবায়ন পরিবর্তন করা সহজ করে দিন। যথাযথভাবে ইউনিট পরীক্ষিত কোডটি আক্রমণাত্মকভাবে রিফ্যাক্টর / পরিষ্কার করা যায় কোনও কিছু না ভেবে সামান্য সুযোগের সাথে chance
  2. আচরণ যুক্ত করা বা সংশোধন করার সময় বিকাশকারীদের আত্মবিশ্বাস দিন।
  3. আপনার কোড নথি
  4. আপনার কোডের এমন অঞ্চলগুলিকে ইঙ্গিত করুন যা দৃly়ভাবে একত্রিত হয়েছে। দৃ test়ভাবে একত্রে মিশ্রিত টেস্ট কোড করা শক্ত hard
  5. আপনার এপিআই ব্যবহার করার উপায় সরবরাহ করুন এবং তাড়াতাড়ি অসুবিধাগুলি সন্ধান করুন
  6. এমন পদ্ধতি এবং শ্রেণিগুলি নির্দেশ করে যা খুব মিলিত হয় না

আপনার পরীক্ষা ইউনিট করা উচিত কারণ এটি আপনার ক্লায়েন্টকে একটি রক্ষণাবেক্ষণযোগ্য এবং মানসম্পন্ন পণ্য সরবরাহ করার পক্ষে আপনার আগ্রহ।

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

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

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


44

ইউনিট পরীক্ষার মূল পার্থক্য, "কেবলমাত্র একটি নতুন প্রকল্প খোলার এবং এই নির্দিষ্ট কোডটি পরীক্ষা করার" বিপরীতে হ'ল এটি স্বয়ংক্রিয় , সুতরাং পুনরাবৃত্তিযোগ্য

আপনি যদি নিজের কোডটি ম্যানুয়ালি পরীক্ষা করেন তবে এটি আপনাকে বোঝাতে পারে যে কোডটি সঠিকভাবে কাজ করছে - তার বর্তমান অবস্থায় । তবে এক সপ্তাহ পরে আপনি যখন এতে কিছুটা পরিবর্তন আনলেন? আপনি যখনই নিজের কোডটিতে কিছু পরিবর্তন করেন তখন আপনি কি আবার হাত দিয়ে এটিকে পরীক্ষা করতে রাজি হন ? সম্ভবত না :-(

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

এটি হ্যান্ড টেস্টিংয়ের উপর ইউনিট পরীক্ষার প্রধান সুবিধা। তবে অপেক্ষা করুন, আরো আছে:

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

ইউনিট টেস্টিং ফ্রেমওয়ার্কগুলি ঘুরে দেখা যায় আপনার পক্ষে আপনার পরীক্ষা লিখতে ও চালানো সহজ করে তোলে।


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

34

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

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

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

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


13

ইউনিট টেস্টিং এবং টিডিডি-র দার্শনিক উপাখ্যানগুলি এখানে রইল এখানে কয়েকটি "কীটলব্লব" পর্যবেক্ষণ যা টিডিডি আলোকিতকরণের পথে আমার অস্থায়ী প্রথম পদক্ষেপে আমাকে আঘাত করেছিল (আসল বা অগত্যা কোনও খবর নয়) ...

  1. টিডিডি মানে কোডের দ্বিগুণ নয় writing টেস্ট কোডটি লেখার পক্ষে সাধারণত তাত্পর্যপূর্ণ এবং বেদনাদায়ক এবং এটি আপনার নকশা প্রক্রিয়া এবং সমালোচনামূলকভাবে একটি মূল অংশ।

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

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

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

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

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

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

এই উপস্থাপনাটি সমস্ত মুখরোচক ধার্মিকতা পরীক্ষার জন্য প্রয়োজনীয় একটি দুর্দান্ত ভূমিকা।


7

আমি জেরার্ড মেসজারোসের xUnit টেস্টিং প্যাটার্নস বইটি সুপারিশ করতে চাই। এটি বড় তবে ইউনিট পরীক্ষার একটি দুর্দান্ত সংস্থান। এখানে তার ওয়েবসাইটে একটি লিঙ্ক দেওয়া হয়েছে যেখানে তিনি ইউনিট পরীক্ষার মূল বিষয়গুলি নিয়ে আলোচনা করেছেন। http://xunitpatterns.com/XUnitBasics.html


5

আমি সময় বাঁচাতে ইউনিট পরীক্ষা ব্যবহার করি।

ব্যবসায় যুক্তি তৈরি করার সময় (বা ডেটা অ্যাক্সেস) পরীক্ষার কার্যকারিতা প্রায়শই অনেকগুলি স্ক্রিনে টাইপিং স্টাফকে জড়িত করতে পারে যা এখনও শেষ নাও হতে পারে। এই পরীক্ষাগুলি স্বয়ংক্রিয়ভাবে সময় সাশ্রয় করে।

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

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

আমার নতুন কোডটি আমার ইউনিট পরীক্ষায় কিছুটা ব্রেক করে তারপরে কোডটি চেক করতে এবং কিছু ফ্রন্ট-এন্ড বিকাশকারীকে একটি সমস্যা খুঁজে পেতে পারে তা আবিষ্কার করা আমার পক্ষে খুব দ্রুত।

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

ইউনিট পরীক্ষাগুলি সমস্ত পরীক্ষার প্রয়োজনীয়তাগুলি সমাধান করতে সক্ষম হবে না। তারা উন্নয়নের সময় এবং অ্যাপ্লিকেশনের মূল অংশগুলি পরীক্ষা করতে সক্ষম হবে।


4

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

সমস্ত ইউনিট পরীক্ষা স্বয়ংক্রিয়ভাবে চালানো যেতে পারে এটি সবচেয়ে কার্যকর।

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

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

কিছু দল তাদের বিবর্তন ভান্ডার থেকে হুক লেখেন যাতে আপনি যখনই পরিবর্তন করেন তখন ইউনিট পরীক্ষা স্বয়ংক্রিয়ভাবে চালিত হয়।

আপনার ইউনিটের পরীক্ষাগুলি আপনার প্রয়োগের মতো একই ভান্ডারে রাখা ভাল অনুশীলন।


4

মত লাইব্রেরি NUnit , xUnit বা JUnit শুধু বাধ্যতামূলক আপনি ব্যবহার আপনার প্রকল্পের বিকাশ করতে চান তাহলে হয় TDD- এ পদ্ধতির কেন্ট Beck দ্বারা জনপ্রিয়:

আপনি টেস্ট ড্রাইভেন ডেভলপমেন্ট (টিডিডি) বা কেন্ট বেকের বই টেস্ট ড্রাইভেন ডেভলপমেন্ট: উদাহরণ অনুসারে পড়তে পারেন ।

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


3

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

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

সুতরাং একটি ইউনিট পরীক্ষা ডেটাবেস আপডেটের পার্শ্ব প্রতিক্রিয়া ছাড়াই আপনি পরীক্ষা করছেন এমন "ফাংশন"-এ সংযুক্ত কার্যকারিতাটি ব্যবহার করবে।

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

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


3

ইউনিট টেস্টিং লিখিত কোড সম্পর্কে যা আপনার অ্যাপ্লিকেশন কোডটি পরীক্ষা করে।

নামের ইউনিট অংশটি একবারে ছোট ছোট ইউনিট (উদাহরণ হিসাবে একটি পদ্ধতি) পরীক্ষা করার উদ্দেশ্য সম্পর্কে।

xUnit এই পরীক্ষার সাহায্য করার জন্য আছে - তারা ফ্রেমওয়ার্ক যা এটিতে সহায়তা করে। এর একটি অংশ স্বয়ংক্রিয় পরীক্ষার রানার যা আপনাকে জানায় যে কোন পরীক্ষাটি ব্যর্থ হয় এবং কোনটি পাস করে।

হাতের আগে প্রতিটি পরীক্ষায় আপনার প্রয়োজনীয় সাধারণ কোড সেটআপ করার সুবিধা রয়েছে এবং সমস্ত পরীক্ষা শেষ হয়ে গেলে এটি ছিঁড়ে ফেলুন।

সম্পূর্ণ পরীক্ষা না করে নিজেকে ব্লক করে ফেলুন, কোনও প্রত্যাশিত ব্যতিক্রম ছুঁড়েছে কিনা তা পরীক্ষা করার জন্য আপনার পরীক্ষা হতে পারে।


3

আমি মনে করি যে বিন্দুটি আপনি বুঝতে পারছেন না সেটি হল ইউনিট টেস্টিং ফ্রেমওয়ার্ক যেমন নুনিট (এবং এর মতো) ছোট থেকে মাঝারি আকারের পরীক্ষাগুলি স্বয়ংক্রিয় করতে আপনাকে সহায়তা করবে । সাধারণত আপনি একটি জিইউআইতে পরীক্ষা করতে পারেন ( উদাহরণস্বরূপ, এটি নুনিটের ক্ষেত্রে) কেবলমাত্র একটি বোতামটি ক্লিক করে এবং তারপরে - আশা করা যায় - অগ্রগতি বার সবুজ থাকতে দেখুন। যদি এটি লাল হয়ে যায়, ফ্রেমওয়ার্কটি আপনাকে দেখায় যে কোন পরীক্ষাটি ব্যর্থ হয়েছে এবং ঠিক কী ভুল হয়েছে। একটি সাধারণ ইউনিট পরীক্ষায়, আপনি প্রায়শই Assert.AreEqual(expectedValue, actualValue, "some description")দৃser়তাগুলি ব্যবহার করেন, উদাহরণস্বরূপ - সুতরাং যদি দুটি মান অসম হয় তবে আপনি "কিছু বিবরণ: প্রত্যাশিত <expectedValue> তবে <<<<<<<" বলে একটি ত্রুটি দেখতে পাবেন।

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



3

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

xUnit , NUnit , mbUnit ইত্যাদি এমন একটি সরঞ্জাম যা পরীক্ষাগুলি লেখার ক্ষেত্রে আপনাকে সহায়তা করে।


2

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

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

তারপরে সমস্ত উপাদান কীভাবে একসাথে কাজ করে তা পরীক্ষা করে আপনি সংহত বা সিস্টেম টেস্টিংয়ে চলে যেতে পারেন।


2

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


1

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

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

আমি শেষ পর্যন্ত পেলাম না, কারণ আমার এখনকার রুটিন-এখন-দাম্পত্যের দরকার ছিল, তবে এটি ছিল একটি ভাল অনুশীলন।


1

আপনি যদি কর্কশতার গাদা হয়ে থাকেন এবং মনে হয় আপনি কোনও নূতন বৈশিষ্ট্য বা কোড সংযোজন করে জানেন যে আপনি কোনও ক্লিনআপের চিরস্থায়ী অবস্থায় আটকে আছেন তবে আপনি কী করবেন কারণ বর্তমান সফ্টওয়্যারটি একটি বাড়ির মতো তাস?

আমরা কীভাবে ইউনিট টেস্টিং করতে পারি?

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

এই মুহুর্তে আমরা ৪০% এর উপরে চলে এসেছি এবং আমরা বেশিরভাগ নিম্ন-স্তব্ধ ফলটি বেছে নিতে পেরেছি।

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


1

আপনার কেন ইউনিট পরীক্ষা করা উচিত তা উত্তর দেয়।


জাভাস্ক্রিপ্টে কভার ইউনিটের পরীক্ষার নীচে 3 টি ভিডিও রয়েছে তবে সাধারণ নীতিগুলি বেশিরভাগ ভাষায় প্রয়োগ হয়।

ইউনিট পরীক্ষার: মিনিটগুলি এখন ঘন্টাগুলি পরে সংরক্ষণ করবে - এরিক মান - https://www.youtube.com/watch?v=_UmmaPe8Bzc

জেএস ইউনিট পরীক্ষা (খুব ভাল) - https://www.youtube.com/watch?v=-IYqgx8JxlU

পরীক্ষণযোগ্য জাভাস্ক্রিপ্ট লিখন - https://www.youtube.com/watch?v=OzjogCFO4Zo


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

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


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

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


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

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


0

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.