ইন্টিগ্রেশন এবং ইউনিট পরীক্ষার মধ্যে পার্থক্য কী?


307

আমি ইউনিট পরীক্ষা এবং ইন্টিগ্রেশন পরীক্ষার তথাকথিত পাঠ্যপুস্তক সংজ্ঞা জানি। আমি যে বিষয়ে কৌতূহলী তা হ'ল যখন ইউনিট পরীক্ষা লেখার সময় হয় ... আমি যতটা সম্ভব ক্লাসের অনেক সেট কভার করার জন্য তাদের লিখব।

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

এই পরীক্ষাগুলি কি মূলত এই 2 টি শ্রেণীর সংহতকরণের পরীক্ষা করার কারণে এটি ইন্টিগ্রেশন টেস্টে পরিণত হয়েছে, বা এটি কেবলমাত্র একটি ইউনিট পরীক্ষা যা 2 শ্রেণি বিস্তৃত?

সাধারণভাবে, এই অনিশ্চিত লাইনের কারণে, আমি খুব কমই বাস্তবে ইন্টিগ্রেশন টেস্টগুলি লিখব ... বা আমার তৈরি পণ্যটি ব্যবহার করে দেখুন যে সমস্ত টুকরা সঠিকভাবে সত্যিকারের ইন্টিগ্রেশন টেস্টগুলি কার্যকর করে কিনা, যদিও তা ম্যানুয়াল এবং সুযোগের বাইরে খুব কমই পুনরাবৃত্তি হয় repeated প্রতিটি স্বতন্ত্র বৈশিষ্ট্য?

আমি কি ইন্টিগ্রেশন পরীক্ষার ভুল বোঝাবুঝি করছি, বা ইন্টিগ্রেশন এবং ইউনিট পরীক্ষার মধ্যে সত্যিই খুব কম পার্থক্য রয়েছে?

উত্তর:


300

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

বিপরীতে, একটি একক পরীক্ষার একটি ইউনিট পরীক্ষাটি (প্রায়শই ভুল) এই ধারণার উপর নির্ভর করে যে বাকি সফ্টওয়্যারটি সঠিকভাবে কাজ করছে, কারণ এটি স্পষ্টভাবে প্রতিটি নির্ভরতাটিকে ঠাট্টা করে।

অতএব, যখন কোনও বৈশিষ্ট্য প্রয়োগকারী কোনও পদ্ধতির ইউনিট পরীক্ষা সবুজ হয়, তার অর্থ এই নয় যে বৈশিষ্ট্যটি কাজ করছে।

বলুন আপনার কোথাও এর মতো একটি পদ্ধতি রয়েছে:

public SomeResults DoSomething(someInput) {
  var someResult = [Do your job with someInput];
  Log.TrackTheFactYouDidYourJob();
  return someResults;
}

DoSomethingআপনার গ্রাহকের কাছে এটি অত্যন্ত গুরুত্বপূর্ণ: এটি একটি বৈশিষ্ট্য, একমাত্র বিষয় যা গুরুত্বপূর্ণ। এ কারণেই আপনি সাধারণত একটি শসার স্পেসিফিকেশন লিখুন এটি দৃser় করে: আপনি যাচাই করতে এবং যোগাযোগ করতে চান বৈশিষ্ট্যটি কাজ করছে কি না or

Feature: To be able to do something
  In order to do something
  As someone
  I want the system to do this thing

Scenario: A sample one
  Given this situation
  When I do something
  Then what I get is what I was expecting for

সন্দেহ নেই: যদি পরীক্ষাটি পাস হয় তবে আপনি দৃ as়ভাবে বলতে পারেন যে আপনি একটি কাজের বৈশিষ্ট্য সরবরাহ করছেন। এটিই আপনি ব্যবসায়িক মান বলতে পারেন ।

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

অনুশীলনে, আপনি যেমন কিছু করেন:

public SomeResults DoSomething(someInput) {
  var someResult = [Do your job with someInput];
  FakeAlwaysWorkingLog.TrackTheFactYouDidYourJob(); // Using a mock Log
  return someResults;
}

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

সেখানে একটি বাগ এর ধরুন Log.DoSomething()। ভাগ্যক্রমে, ঘেরকিন স্পেক এটি আবিষ্কার করবে এবং আপনার শেষ থেকে শেষের পরীক্ষাগুলি ব্যর্থ হবে।

বৈশিষ্ট্যটি কাজ করবে না, কারণ Logভাঙা, কারণ [Do your job with someInput]এটি কাজ করছে না। এবং, [Do your job with someInput]যাইহোক , সেই পদ্ধতির একমাত্র দায়িত্ব।

এছাড়াও, ধরুন Log100 অন্যান্য ক্লাসের 100 টি অন্যান্য পদ্ধতিতে 100 টি অন্যান্য বৈশিষ্ট্যগুলিতে ব্যবহৃত হয়।

হ্যাঁ, 100 টি বৈশিষ্ট্য ব্যর্থ হবে। তবে, ভাগ্যক্রমে, 100 টি-টু-এন্ড টেস্টগুলি পাশাপাশি ব্যর্থ হচ্ছে এবং সমস্যাটি প্রকাশ করছে। এবং, হ্যাঁ: তারা সত্য বলছে

এটি খুব দরকারী তথ্য: আমি জানি আমার একটি ভাঙা পণ্য রয়েছে। এটি খুব বিভ্রান্তিকর তথ্য: এটি সমস্যাটি কোথায় তা সম্পর্কে আমাকে কিছুই বলেনি। এটি আমার লক্ষণগুলি যোগাযোগ করে, মূল কারণটি নয়।

তবুও, DoSomethingএর ইউনিট পরীক্ষা সবুজ, কারণ এটি একটি নকল ব্যবহার করে Log, যা কখনও ভেঙে ফেলার জন্য নির্মিত। এবং, হ্যাঁ: এটি স্পষ্টভাবে মিথ্যা বলছে । এটি ভাঙা বৈশিষ্ট্যটি কাজ করছে বলে যোগাযোগ করছে। কিভাবে এটি দরকারী হতে পারে?

(যদি DoSomething()ইউনিটের পরীক্ষাটি ব্যর্থ হয় তবে নিশ্চিত হন: [Do your job with someInput]কিছু বাগ রয়েছে))

ধরুন এটি একটি ভাঙ্গা শ্রেণি সহ একটি সিস্টেম: একটি ভাঙ্গা শ্রেণি সহ একটি সিস্টেম

একটি একক বাগ বেশ কয়েকটি বৈশিষ্ট্য ভঙ্গ করবে এবং কয়েকটি সংহতকরণ পরীক্ষা ব্যর্থ হবে।

একটি একক বাগ বেশ কয়েকটি বৈশিষ্ট্য ভঙ্গ করবে এবং কয়েকটি সংহতকরণ পরীক্ষা ব্যর্থ হবে

অন্যদিকে, একই বাগটি কেবল একটি ইউনিটের পরীক্ষা ভঙ্গ করবে।

একই বাগটি কেবলমাত্র একটি ইউনিট পরীক্ষা ভঙ্গ করবে

এখন, দুটি পরিস্থিতিতে তুলনা করুন।

একই বাগটি কেবলমাত্র একটি ইউনিট পরীক্ষা ভঙ্গ করবে।

  • ভাঙা ব্যবহার করে আপনার সমস্ত বৈশিষ্ট্য Logলাল
  • আপনার সমস্ত ইউনিট পরীক্ষা সবুজ, কেবলমাত্র ইউনিট পরীক্ষা Logলাল

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

পার্থক্য

ইন্টিগ্রেশন টেস্টগুলি কী কাজ করছে না তা জানায় । তবে সমস্যাটি কোথায় হতে পারে তা অনুমান করার ক্ষেত্রে তাদের কোনও লাভ নেই ।

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

সে কারণেই আমি মনে করি যে আপনার বাক্য "বা এটি কি কেবলমাত্র একটি ইউনিট পরীক্ষা যা 2 শ্রেণি বিস্তৃত" কোনওভাবে বাস্তুচ্যুত হয়। একটি ইউনিট পরীক্ষা কখনও 2 ক্লাস স্প্যান করা উচিত।

এই উত্তরটি মূলত আমি এখানে যা লিখেছি তার একটি সংক্ষিপ্তসার: ইউনিট পরীক্ষাগুলি মিথ্যা বলে, এ কারণেই আমি তাদের ভালবাসি


6
সত্যিই ভাল উত্তর! তবে আমি কেবল যুক্ত করতে চাই যে উপহাস কেবল ইউনিট পরীক্ষার জন্য নয়। এটি অনেকগুলি ইন্টিগ্রেশন পরীক্ষার ক্ষেত্রেও খুব কার্যকর হতে পারে।
n.Stenvang

1
দুর্দান্ত উত্তর! আমি কেবল দুটি পয়েন্টের সাথে একমত নই: 1) যে ইন্টিগ্রেশন পরীক্ষাগুলি "সমস্যাটি কোথায় হতে পারে তা অনুমান করার ক্ষেত্রে কোনও উপকারে আসে না"; এবং 2) "ইউনিট পরীক্ষায় কখনই 2 শ্রেণি বিস্তৃত হওয়া উচিত নয়"। আমি প্রচুর ইন্টিগ্রেশন টেস্ট তৈরি করেছি এবং যখন তারা ভেঙে যায় তখন সমস্যার উত্সটি চিহ্নিত করা সাধারণত কঠিন হয় না, তবে আপনি যদি একটি সম্পূর্ণ স্ট্যাক ট্রেস বা একটি ব্যর্থ দাবী (এমন ক্ষেত্রে উত্স খুঁজে পাওয়া আরও কঠিন হতে পারে তবেই পান) এতটা নয়, যেমন ইন্টিগ্রেশন টেস্টটি ডিবাগিংয়ের জন্য একটি অন্তর্ভুক্ত প্রসঙ্গ সরবরাহ করে)। (অবিরত)
Rogério

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

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

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

62

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

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


43

আমার 10 বিট: ডি

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

ইন্টিগ্রেশন টেস্ট পরবর্তী ধাপে আপ, তার এক বা একাধিক উপাদান এবং তারা হিসাবে তারা উচিত একসঙ্গে কাজ উপার্জন গ্রহণ .. তোমার সম্পর্কে চিন্তিত এর intricacies উপরে তারপর হয় কিভাবে উপাদান পৃথকভাবে কাজ করে, কিন্তু যখন আপনি আপনার মধ্যে এইচটিএমএল প্রবেশ HtmlEditControl , এটা কোনওভাবে যাদুতে এটি কার্যকর বা না তা জানে ..

যদিও এটি একটি বাস্তব অস্থাবর লাইন .. আমি বরং rather _ ^ ^ _ ^ অভিঘাতমূলক কোডটি পাওয়ার জন্য অভিযুক্ত কোডটি পাওয়ার দিকে আরও মনোনিবেশ করব ^


23

ইউনিট টেস্টে মক ব্যবহার হয়

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


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

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

17

আমি মনে করি আপনি যখন ইন্টিগ্রেশন পরীক্ষার বিষয়ে চিন্তা শুরু করবেন, আপনি লজিক্যাল স্তরগুলির চেয়ে শারীরিক স্তরগুলির মধ্যে ক্রস সম্পর্কে বেশি কথা বলছেন।

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

প্রযুক্তিগতভাবে আপনি যেভাবেই কেবল এক-শ্রেণীর পরীক্ষা করতে পারবেন না। আপনার ক্লাসটি যদি আরও কয়েকটি ক্লাসের সমন্বয়ে তৈরি হয় তবে কী হবে? এটি কি স্বয়ংক্রিয়ভাবে এটি একটি সংহতকরণ পরীক্ষা করে তোলে? আমি তাই মনে করি না.


8
"টেকনিক্যালি আপনি যেভাবেই কেবল এক-শ্রেণির পরীক্ষা করতে পারবেন না। যদি আপনার ক্লাসটি আরও কয়েকটি ক্লাসের সমন্বয়ে গঠিত হয় তবে কী হবে?" ঠিক আছে, "কঠোর" ইউনিট পরীক্ষাটি সমস্ত নির্ভরতাগুলিকে কেবল বিদ্রূপ / অনড় করে দেবে। যাইহোক, এটি সর্বদাই ব্যবহারিক কিনা তা বিতর্কযোগ্য ...
sleske

2
এটাই সত্য সিস্ক - গুরুত্বপূর্ণ বিটটি হ'ল নির্ভরতা সর্বনিম্ন ন্যূনতমের উপর রাখতে সক্ষম হয়।
জন লিমাজাপ

-1, একটি ইউনিট পরীক্ষা একটি বৈশিষ্ট্য পরীক্ষা করে না, তবে একটি একক সফ্টওয়্যার ফাংশন বা ক্লাস, অর্থাৎ এটি সফ্টওয়্যারটির একটি লজিকাল ইউনিট পরীক্ষা করে।
চার্লসবি

12

একক দায়িত্ব নকশা ব্যবহার করে, এটি কালো এবং সাদা। 1 টিরও বেশি দায়িত্ব, এটি একটি ইন্টিগ্রেশন টেস্ট।

হাঁসের পরীক্ষা দ্বারা (চেহারা, কোয়াক্স, ভ্যাডলস, এটি একটি হাঁস), এটির মধ্যে কেবলমাত্র এক ইউনিট পরীক্ষায় এটির মধ্যে 1 টিরও বেশি নতুন নতুন বস্তু রয়েছে।

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


10

আপনার পরীক্ষার প্রকৃতি

একটি ইউনিট পরীক্ষা মডিউল এক্স একটি পরীক্ষা যে আশা (এবং চেক) শুধুমাত্র মডিউল এক্স সমস্যা

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

নিম্নলিখিত পরীক্ষায় আপনার পরীক্ষার প্রকৃতি সম্পর্কে চিন্তা করুন:

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

মনে রাখবেন যে একটি ইন্টিগ্রেশন পরীক্ষা এখনও তার কিছু নির্ভরতা অবিরাম / জাল / উপহাস করতে পারে । এটি ইউনিট টেস্ট এবং সিস্টেম টেস্টগুলির মধ্যে প্রচুর মাঝারি গ্রাউন্ড সরবরাহ করে (সর্বাধিক বিস্তৃত ইন্টিগ্রেশন টেস্টগুলি, সমস্ত সিস্টেমের পরীক্ষা করে)।

উভয় ব্যবহার করার জন্য ব্যবহারিক পদ্ধতির

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


10

ইউনিট পরীক্ষায় আপনি প্রতিটি অংশ বিচ্ছিন্নভাবে পরীক্ষা করেন: এখানে চিত্র বর্ণনা লিখুন

ইন্টিগ্রেশন পরীক্ষায় আপনি আপনার সিস্টেমের অনেকগুলি মডিউল পরীক্ষা করেন:

এখানে চিত্র বর্ণনা লিখুন

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

এখানে চিত্র বর্ণনা লিখুন

সূত্র: উত্স 1 উত্স 2


আপনার কাছে তিনটি চিত্র রয়েছে তবে কেবল দুটি উত্স।
অঙ্কিত

1
@gerrit প্রথম উত্সটি একবার দেখুন - দুটি ছবি সেখান থেকে এসেছে
মিচু

1
এই উত্তরটি
ভালবাসুন 👏

8

আমার মতে উত্তরটি "এটি কেন গুরুত্বপূর্ণ?"

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

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

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

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

এটির কোনও গুরুত্ব নেই।

পরীক্ষা গুরুত্বপূর্ণ, FIRST গুরুত্বপূর্ণ, সংজ্ঞা সম্পর্কে কেশ বিভক্ত করা সময়ের অপচয় যা কেবলমাত্র আগতদেরকে পরীক্ষায় বিভ্রান্ত করে।


5
-1 সংজ্ঞাটি হ'ল লোকেরা কী বোঝায় সেগুলি সর্বদা ব্যাখ্যা না করে একই শর্তগুলি ব্যবহার করতে সক্ষম করে এবং সহযোগিতার জন্য প্রয়োজনীয় essential এটি উভয় ধারণার মধ্যে পার্থক্য বুঝতে প্রয়োজনীয়।
চার্লসবি

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

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

পেশাদার পরিবেশে একটি সাধারণ ভাষা তৈরি করার সময় এটি সহায়তা করে না। বেশিরভাগ ক্ষেত্রেই, আপনি ঠিক বলেছেন, এটি এতটা গুরুত্বপূর্ণ নয়, একটি সাধারণ ভাষা না থাকলে দলের মধ্যে ভুল বোঝাবুঝি ও বিভ্রান্তি তৈরি হয়। আমি মনে করি সেরা বিকল্পটি হ'ল দলটি তাদের শর্তাবলী এবং সংজ্ঞাগুলির সাথে একমত হতে পারে।
ব্যবহারকারী 924272

4

আমি মনে করি আমি এখনও ইন্টারেক্টিভ ক্লাসের কয়েকটিকে ইউনিট পরীক্ষার জন্য কল করব তবে শর্ত দেওয়া যে ক্লাস 1 এর ইউনিট পরীক্ষাগুলি ক্লাস 1 এর বৈশিষ্ট্যগুলি পরীক্ষা করছে এবং ক্লাস 2 এর ইউনিট পরীক্ষাগুলি এর বৈশিষ্ট্যগুলি পরীক্ষা করছে, এবং এটিও যে তারা ডেটাবেসকে আঘাত করছে না।

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

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


4

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

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

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


4

ইউনিট টেস্টিং হল টেস্টের এমন একটি পদ্ধতি যা উত্স কোডের পৃথক ইউনিটগুলি সঠিকভাবে কাজ করছে তা যাচাই করে।

ইন্টিগ্রেশন টেস্টিং হ'ল সফটওয়্যার পরীক্ষার পর্ব যেখানে স্বতন্ত্র সফ্টওয়্যার মডিউলগুলি একত্রিত করে এবং গ্রুপ হিসাবে পরীক্ষা করা হয়।

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


4

সংহতকরণ পরীক্ষা: ডাটাবেস অধ্যবসায় পরীক্ষা করা হয়।
ইউনিট পরীক্ষা: ডাটাবেস অ্যাক্সেস উপহাস করা হয়। কোড পদ্ধতি পরীক্ষা করা হয়।


3

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

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

সুতরাং আপনি যে ইউনিটটি তৈরি করেছেন তার ইউনিট কাজ করছে তা যাচাই করার জন্য আপনি আপনার ইউনিট টেস্টিং করেন এবং তারপরে ইন্টিগ্রেশন টেস্টটি যাচাই করে যে আপনি সংগ্রহস্থলে যা কিছু যুক্ত করেছেন তা অন্য কিছু ভঙ্গ করেনি।


2

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

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

কন্ট্রোলারের ইন্টিগ্রেশন টেস্টগুলিতে কল করব না যদি না তাদের নির্ভরতাগুলির মধ্যে একটি আসল হয় (যেমন নকল হয় না) (যেমন IformsAuthentication)।

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

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


2

অ্যানালগিসহ সহজ ব্যাখ্যা

উপরের উদাহরণগুলি খুব ভাল করে এবং আমার সেগুলি পুনরাবৃত্তি করার দরকার নেই। সুতরাং আমি আপনাকে বুঝতে সাহায্য করার জন্য উদাহরণগুলি ব্যবহারের উপর ফোকাস করব।

ইন্টিগ্রেশন টেস্ট

ইন্টিগ্রেশন টেস্টগুলি পরীক্ষা করে দেখুন যে সবকিছু এক সাথে কাজ করছে কিনা। একটি ঘড়িতে একসাথে কাজ করার জন্য কয়েকটি সিরিজের কগের কল্পনা করুন। একটি ইন্টিগ্রেশন পরীক্ষা হবে: ঘড়ি সঠিক সময় বলছে? এটি এখনও 3 দিনের মধ্যে সঠিক সময়টি বলছে?

সামগ্রিক অংশটি কাজ করছে কিনা তা এটি আপনাকে জানায়। যদি এটি ব্যর্থ হয়: এটি কোথায় ব্যর্থ হচ্ছে তা আপনাকে সঠিকভাবে জানায় না।

ইউনিট টেস্ট

এগুলি সত্যই নির্দিষ্ট ধরণের পরীক্ষা। একটি নির্দিষ্ট জিনিস কাজ করছে বা ব্যর্থ হচ্ছে কিনা তা তারা আপনাকে জানায়। এই ধরণের পরীক্ষার চাবিকাঠিটি হ'ল এটি অনুমিত করার সময় কেবলমাত্র একটি নির্দিষ্ট জিনিস পরীক্ষা করে যা অন্য সমস্ত কিছু ঠিকঠাকভাবে কাজ করছে। এটি মূল বিষয়।

উদাহরণ: আসুন একটি উদাহরণ ব্যবহার করে এই পয়েন্টটি বিস্তারিতভাবে বর্ণনা করা যাক:

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

স্টাব ব্যবহার করে

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

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

  • ইঞ্জিনের সমস্যা, নাকি জ্বালানী ইঞ্জেকশন সিস্টেম নিয়ে?

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


1

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


1

এখন এই 2 টি শ্রেণির সংহতকরণের পরীক্ষা করার কারণে এই পরীক্ষাগুলি কী মূলত ইন্টিগ্রেশন টেস্টে পরিণত হয়েছে? বা এটি কি কেবল একটি ইউনিট পরীক্ষা যা 2 ক্লাস বিস্তৃত?

আমি হ্যাঁ এবং হ্যাঁ মনে করি। আপনার ইউনিট পরীক্ষা যা 2 টি শ্রেণি বিস্তৃত ছিল একটি ইন্টিগ্রেশন টেস্টে পরিণত হয়েছিল।

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

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

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


1

তদ্ব্যতীত, এটি মনে রাখাও গুরুত্বপূর্ণ যে উভয় ইউনিট পরীক্ষা এবং ইন্টিগ্রেশন টেস্টগুলি স্বয়ংক্রিয়ভাবে ব্যবহার করে এবং লিখিত হতে পারে, উদাহরণস্বরূপ, জুনিট। JUnit ইন্টিগ্রেশন পরীক্ষায়, org.junit.Assumeবর্গ পরিবেশের উপাদানগুলির উপলব্ধতার (যেমন, ডাটাবেস সংযোগ) বা অন্যান্য শর্তাদি পরীক্ষা করতে শ্রেণিটি ব্যবহার করতে পারে ।


0

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

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

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