ইউনিট, কার্যকরী, গ্রহণযোগ্যতা এবং ইন্টিগ্রেশন পরীক্ষার মধ্যে পার্থক্য কী? [বন্ধ]


799

ইউনিট, কার্যকরী, গ্রহণযোগ্যতা, এবং ইন্টিগ্রেশন পরীক্ষার (এবং আমি উল্লেখ করতে ব্যর্থ যে কোনও অন্যান্য ধরণের পরীক্ষার) মধ্যে পার্থক্য কী?


1
এছাড়াও দেখুন sqa.stackexchange.com/a/23396/8992
মাইকেল

1
আমি মনে করি আপনি লোড টেস্টিং অন্তর্ভুক্ত করতে ভুলে গেছেন!
টক সস্তা হয় আমাকে

উত্তর:


1350

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

ইউনিট টেস্ট

কার্যকারিতার ক্ষুদ্রতম ইউনিট পরীক্ষা করে, সাধারণত একটি পদ্ধতি / ফাংশন (উদাহরণস্বরূপ কোনও শ্রেণীর দেওয়া হয় একটি নির্দিষ্ট রাষ্ট্রের সাথে, ক্লাসে এক্স মেথডকে কল করার ফলে y ঘটতে পারে)। ইউনিট পরীক্ষাগুলি একটি নির্দিষ্ট বৈশিষ্ট্যে ফোকাস করা উচিত (উদাহরণস্বরূপ, যখন স্ট্যাক ফাঁকা থাকে তখন পপ পদ্ধতিটি কল করা উচিত InvalidOperationException)। এটি স্পর্শ করে এমন সমস্ত কিছুই স্মৃতিতে করা উচিত; এর অর্থ হল পরীক্ষার কোড এবং পরীক্ষার অধীনে থাকা কোডটি হওয়া উচিত নয়:

  • (অ-তুচ্ছ) সহযোগীদের কল করুন
  • নেটওয়ার্ক অ্যাক্সেস করুন
  • একটি ডাটাবেস হিট
  • ফাইল সিস্টেমটি ব্যবহার করুন
  • একটি থ্রেড স্পিন
  • প্রভৃতি

যে ধরণের নির্ভরতা ধীরে / ধীরে ধীরে বুঝতে / শুরুতে / কৌশলগতভাবে চালিত হয় সেগুলি উপযুক্ত কৌশলগুলি ব্যবহার করে স্ট্যাব / মশকরা / ঘায়েল করা উচিত যাতে আপনি কোডের ইউনিট কী করছে, তার নির্ভরতাগুলি কী করে না তার দিকে মনোনিবেশ করতে পারেন।

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

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

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

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

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

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

কার্যকরী পরীক্ষা

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

গ্রহণের পরীক্ষা

স্বীকৃতি পরীক্ষা দুটি ধরণের মধ্যে বিভক্ত বলে মনে হচ্ছে:

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

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

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

উপসংহার

তারা সবাই পরিপূরক। কখনও কখনও এক ধরণের উপর ফোকাস করা বা সেগুলি সম্পূর্ণরূপে বন্ধ করা সুবিধাজনক। আমার জন্য প্রধান পার্থক্য হ'ল কিছু পরীক্ষাগুলি কোনও প্রোগ্রামারের দৃষ্টিকোণ থেকে জিনিসগুলিকে দেখে তবে অন্যরা গ্রাহক / শেষ ব্যবহারকারীর ফোকাস ব্যবহার করে।


19
+1 টি। @ মার্ক সিম্পসন "সিস্টেম টেস্টিং" হিসাবে সংক্ষিপ্ততর হিসাবে কার্যকরী ও গ্রহণযোগ্যতা পরীক্ষা করতে পারেন? শেষ-থেকে-শেষের পরীক্ষাগুলি কোথায় ফিট করে? (আমার স্বাদের জন্য খুব আলাদা শব্দভাণ্ডার)
টর্স্টেন এঞ্জেলব্র্যাচট

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

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

7
@ সিডুন ২০০২: চিন্তা করবেন না, গঠনমূলক সমালোচনা সবসময়ই ভাল :) আপনার মন্তব্য আমাকে এমন কিছু জিনিস শিখিয়েছিল যা আমি জানতাম না এবং আমার পরিভাষাটি কিছুটা পরিষ্কার করে ফেললাম। আমি বরাবরই বিকাশকারীদের কাছ থেকে নতুন জিনিস শিখতে আগ্রহী। আমার মনে আছে আমি মিয়াকো হেভেরির ব্লগটি প্রথম আবিষ্কার করেছি - এটি ছিল ধনকুবের মতো :)
মার্ক সিম্পসন

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

90

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

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

http://googletesting.blogspot.com/2010/12/test-sizes.html

আমি আপনার বর্তমান কর্মক্ষেত্রের জন্য ছোট, মাঝারি এবং বৃহত্তর মধ্যে পার্থক্যটি Google এর থেকে আলাদা হতে পারি imagine

তবে এটি কেবল সুযোগ সম্পর্কে নয়, উদ্দেশ্য সম্পর্কে। পরীক্ষাগুলির জন্য ভিন্ন দৃষ্টিভঙ্গি সম্পর্কে মার্কের বক্তব্য, যেমন প্রোগ্রামার বনাম গ্রাহক / শেষ ব্যবহারকারী, সত্যই গুরুত্বপূর্ণ is


6
গুগল পরীক্ষার নামকরণের জন্য +1 এটি বিভিন্ন সংস্থাগুলি / লোকদের কেন পরীক্ষার জন্য বিভিন্ন সংজ্ঞা রাখে সে সম্পর্কে কিছুটা দৃষ্টিভঙ্গি দিতে সহায়তা করে।
মার্ক সিম্পসন

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

63

http://martinfowler.com/articles/microservice-testing/

মার্টিন ফওলারের ব্লগ পোস্টে কোড পরীক্ষা করার কৌশল সম্পর্কে কথা বলেছে (বিশেষত একটি মাইক্রো-সার্ভিসেস আর্কিটেকচারে) তবে এটি বেশিরভাগ ক্ষেত্রেই প্রয়োগ হয়।

আমি তার সংক্ষিপ্ত স্লাইডটি থেকে উদ্ধৃত করব:

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

এটি উপায় দ্বারা একটি দুর্দান্ত নিবন্ধ। তবে চুক্তি পরীক্ষার জন্য কী তা আমি পুরোপুরি বুঝতে পারি না। তারা উপাদান এবং ইন্টিগ্রেশন পরীক্ষার আলোতে নিরর্থক নয়?
হিলিফ

কিছু ভাষায় (যা মিঃ ফোলার ব্যবহার করেন) আপনি এমন একটি ইন্টারফেস প্রয়োগ করতে পারেন যা কোনও শ্রেণীর উদাহরণ হিসাবে অকার্যকর IMyInterface.MyMethod () ব্যবহার করে যখন উন্মুক্ত হয় না। যার পরিবর্তে যৌক্তিকভাবে তার নিজস্ব পরীক্ষা করা উচিত। যদিও সেই মুহুর্তে আপনি বিডিডির দিকে ফিরে যাচ্ছেন .. যে মিঃ ফওলারের জমিও দখল হয়েছে iron
স্কারসনিক

2
এটি ফওলার নিবন্ধ বিটিডব্লিউ নয়, কেবল সেখানে পোস্ট করা হয়েছে। চুক্তি পরীক্ষাগুলি এমন টেস্ট হয় যা ক্লায়েন্টরা আপনার পরিষেবা ব্যবহার শুরু করার পরে তৈরি করা হয়, আপনি তারপরে এমন পরীক্ষাগুলি লিখেন যা আপনি যদি সেই নির্দিষ্ট ক্লায়েন্টদের জন্য কিছু না ভাঙেন, তবে সার্ভিস এপিআই পরিবর্তন করে।
রাফাł Łużyński

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

31

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

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

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

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

1) টপ-ডাউন
2) নীচে আপ


টপ-ডাউন এবং ডাউন-আপ বলতে কী বোঝ? ইন্টিগ্রেশন পরীক্ষা শেষ পরীক্ষা শেষ হিসাবে একই?
tamj0rd2

18

এটি খুব সহজ।

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

  2. কার্যকরী পরীক্ষা: এই পরীক্ষাটি টেস্টিং (কিউএ) পর্যায়ে করা হয় এবং এটি ব্ল্যাক বক্স পরীক্ষার একটি অংশ। পূর্বে লিখিত পরীক্ষার মামলার প্রকৃত ফাঁসি। এই পরীক্ষাটি প্রকৃতপক্ষে পরীক্ষকদের দ্বারা করা হয়, তারা সাইটে কোনও কার্যকারিতার আসল ফলাফল খুঁজে পায় এবং এই ফলাফলটিকে প্রত্যাশিত ফলাফলের সাথে তুলনা করে। যদি তারা কোনও বৈষম্য খুঁজে পায় তবে এটি একটি বাগ।

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

  4. ইন্টিগ্রেশন টেস্টিং: কোডের ইউনিটগুলি (পয়েন্ট 1 এ বর্ণিত) প্রকল্পটি সম্পূর্ণ করার জন্য একে অপরের সাথে একীভূত হয়। কোডগুলির এই ইউনিটগুলি বিভিন্ন কোডিং প্রযুক্তিতে লিখিত হতে পারে বা এগুলি বিভিন্ন সংস্করণের হতে পারে তাই কোডের সমস্ত ইউনিট অন্যের সাথে সামঞ্জস্যপূর্ণ এবং একীকরণের কোনও সমস্যা নেই তা নিশ্চিত করার জন্য এই পরীক্ষাটি ডেভেলপাররা দ্বারা করা হয়।


1
@ ওলেগটিসিবা প্রশ্নের উত্তর দেওয়ার 4 বছর পরে উত্তর এসেছিল।
বেনতেশা

1
"এটি খুব সহজ" দিয়ে আমাদের কখনই কোনও উত্তর শুরু করা উচিত নয়, বিশেষত যদি এটি একটি জটিল বিষয় যেমন one
মিলোস্মন্স

6

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

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

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

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

1
ক্ষুদ্রতম উন্মুক্ত কোড। বড় পার্থক্য.
cdunn2001

5

আমি এটি একটি ব্যবহারিক উদাহরণ এবং কোনও তত্ত্বের স্টাফ দিয়ে ব্যাখ্যা করব:

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

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

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

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


1
"একজন বিকাশকারী কোডটি লেখেন No কোনও জিইউআই এখনও প্রয়োগ করা হয়নি this এই স্তরের পরীক্ষার মাধ্যমে তা সঠিকভাবে কাজ করে এবং ডেটা প্রকারগুলি সঠিক তা যাচাই করে testing পরীক্ষার এই পর্বটিকে ইউনিট টেস্টিং বলা হয়" এটি সত্য নয়। জিইউআই আসলে একটি "প্লাগইন"। আপনি ইতিমধ্যে আপনার API আউটপুটে E2E পরীক্ষা লিখতে পারেন। (বা আপনি যে কোনও প্রতিক্রিয়ার বস্তু উত্পন্ন করেন)
ব্যবহারকারীর 3790897

4

ইউনিট পরীক্ষা: একটি অ্যাপ্লিকেশনটিতে পৃথক মডিউল বা স্বতন্ত্র উপাদানগুলির পরীক্ষা করা ইউনিট টেস্টিং হিসাবে পরিচিত, ইউনিট টেস্টিং বিকাশকারী দ্বারা করা হবে।

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

কোনও অ্যাপ্লিকেশনটির স্বতন্ত্র কার্যকারিতা পরীক্ষা করে ফানসিওনাল টেস্টকে কার্যক্ষম পরীক্ষা বলে বোঝানো হয়

এই পরীক্ষাটি গ্রহণযোগ্যতা পরীক্ষাটি শেষ ব্যবহারকারী বা গ্রাহক দ্বারা তৈরি করা হয় কিনা বিল্ড অ্যাপ্লিকেশনটি গ্রাহকের প্রয়োজন অনুসারে হয় এবং গ্রাহকের স্পেসিফিকেশন এটি গ্রহণযোগ্যতা পরীক্ষার হিসাবে পরিচিত

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