ইউনিট, কার্যকরী, গ্রহণযোগ্যতা, এবং ইন্টিগ্রেশন পরীক্ষার (এবং আমি উল্লেখ করতে ব্যর্থ যে কোনও অন্যান্য ধরণের পরীক্ষার) মধ্যে পার্থক্য কী?
ইউনিট, কার্যকরী, গ্রহণযোগ্যতা, এবং ইন্টিগ্রেশন পরীক্ষার (এবং আমি উল্লেখ করতে ব্যর্থ যে কোনও অন্যান্য ধরণের পরীক্ষার) মধ্যে পার্থক্য কী?
উত্তর:
আপনি কোথায় তাকান তার উপর নির্ভর করে আপনি কিছুটা আলাদা উত্তর পাবেন। আমি বিষয়টি সম্পর্কে অনেক পড়েছি, এবং এখানে আমার পাতন; আবার এগুলি সামান্য পশমী এবং অন্যরা দ্বিমত পোষণ করতে পারে।
ইউনিট টেস্ট
কার্যকারিতার ক্ষুদ্রতম ইউনিট পরীক্ষা করে, সাধারণত একটি পদ্ধতি / ফাংশন (উদাহরণস্বরূপ কোনও শ্রেণীর দেওয়া হয় একটি নির্দিষ্ট রাষ্ট্রের সাথে, ক্লাসে এক্স মেথডকে কল করার ফলে y ঘটতে পারে)। ইউনিট পরীক্ষাগুলি একটি নির্দিষ্ট বৈশিষ্ট্যে ফোকাস করা উচিত (উদাহরণস্বরূপ, যখন স্ট্যাক ফাঁকা থাকে তখন পপ পদ্ধতিটি কল করা উচিত InvalidOperationException
)। এটি স্পর্শ করে এমন সমস্ত কিছুই স্মৃতিতে করা উচিত; এর অর্থ হল পরীক্ষার কোড এবং পরীক্ষার অধীনে থাকা কোডটি হওয়া উচিত নয়:
যে ধরণের নির্ভরতা ধীরে / ধীরে ধীরে বুঝতে / শুরুতে / কৌশলগতভাবে চালিত হয় সেগুলি উপযুক্ত কৌশলগুলি ব্যবহার করে স্ট্যাব / মশকরা / ঘায়েল করা উচিত যাতে আপনি কোডের ইউনিট কী করছে, তার নির্ভরতাগুলি কী করে না তার দিকে মনোনিবেশ করতে পারেন।
সংক্ষেপে, ইউনিট পরীক্ষাগুলি যথাসম্ভব সহজ, ডিবাগ করা সহজ, নির্ভরযোগ্য (বহিরাগত কারণগুলি হ্রাসের কারণে), দ্রুত কার্যকর করা যায় এবং প্রমাণ করতে সহায়তা করে যে আপনার প্রোগ্রামের ক্ষুদ্রতম বিল্ডিং ব্লকগুলি একত্রে রাখার আগেই উদ্দেশ্য হিসাবে কাজ করেছে। সতর্কবাণীটি হ'ল, যদিও আপনি প্রমাণ করতে পারেন যে তারা বিচ্ছিন্নভাবে পুরোপুরি কাজ করে, কোডের ইউনিটগুলি সংহত হওয়ার সাথে সাথে সংঘবদ্ধ হতে পারে যা আমাদের এনে দেয় ...
ইন্টিগ্রেশন টেস্ট
ইন্টিগ্রেশন টেস্টগুলি ইউনিটের পরীক্ষাগুলির উপর ভিত্তি করে কোডের ইউনিটগুলির সংমিশ্রণ করে এবং ফলাফলটি সংমিশ্রণটি সঠিকভাবে কাজ করে তা পরীক্ষা করে। এটি হয় একটি সিস্টেমের আভ্যন্তরীণ, বা একাধিক সিস্টেমকে একত্রিত করে দরকারী কিছু করতে পারে। এছাড়াও, আরেকটি জিনিস যা ইউনিট পরীক্ষাগুলি থেকে ইন্টিগ্রেশন পরীক্ষার পৃথক করে তা হ'ল পরিবেশ। ইন্টিগ্রেশন টেস্টগুলি থ্রেডগুলি ব্যবহার করতে পারে, ডাটাবেস অ্যাক্সেস করতে পারে বা কোড এবং বিভিন্ন পরিবেশের পরিবর্তনগুলি সঠিকভাবে কাজ করবে কিনা তা নিশ্চিত করার জন্য যা প্রয়োজন তা করতে পারে ।
যদি আপনি কিছু সিরিয়ালাইজেশন কোড তৈরি করে থাকেন এবং ইউনিটটি ডিস্কের স্পর্শ না করেই এর অভ্যন্তরের অভ্যন্তরীণ পরীক্ষা করে, আপনি কীভাবে জানবেন যে আপনি যখন ডিস্কে লোড এবং সঞ্চয় করার সময় এটি কাজ করবে? হতে পারে আপনি ফাইল স্ট্রিমগুলি ফ্লাশ এবং নিষ্পত্তি করতে ভুলে গেছেন। হতে পারে আপনার ফাইলের অনুমতিগুলি ভুল রয়েছে এবং আপনি মেমরি স্ট্রিমগুলি ব্যবহার করে অভ্যন্তরের পরীক্ষা করেছেন। নিশ্চিত হওয়ার সন্ধানের একমাত্র উপায় হ'ল উত্পাদনের নিকটতম পরিবেশের ব্যবহার করে এটি 'বাস্তবের জন্য' পরীক্ষা করা।
প্রধান সুবিধাটি হ'ল তারা এমন বাগগুলি খুঁজে পাবেন যা ইউনিট পরীক্ষাগুলি যেমন ওয়্যারিং বাগগুলি (যেমন ক্লাসের উদাহরণটি অপ্রত্যাশিতভাবে বি এর একটি নাল উদাহরণ গ্রহণ করে) এবং পরিবেশগত বাগগুলি (এটি আমার একক-সিপিইউ মেশিনে সূক্ষ্মভাবে চলে তবে আমার সহকর্মীর 4 কোর মেশিন পরীক্ষায় উত্তীর্ণ হতে পারে না)। প্রধান অসুবিধাটি হ'ল ইন্টিগ্রেশন টেস্টগুলি আরও কোড স্পর্শ করে, কম নির্ভরযোগ্য হয়, ব্যর্থতাগুলি নির্ণয় করা আরও কঠিন এবং পরীক্ষাগুলি বজায় রাখা আরও শক্ত।
এছাড়াও, একীকরণ পরীক্ষাগুলি অগত্যা প্রমাণ করে না যে কোনও সম্পূর্ণ বৈশিষ্ট্য কাজ করে। ব্যবহারকারীর আমার প্রোগ্রামগুলির অভ্যন্তরীণ বিশদ সম্পর্কে যত্ন নেই, তবে আমি তা করি!
কার্যকরী পরীক্ষা
কার্যকরী পরীক্ষাগুলি নির্দিষ্টকরণের বিপরীতে প্রদত্ত ইনপুটটির ফলাফলের তুলনা করে নির্ভুলতার জন্য একটি নির্দিষ্ট বৈশিষ্ট্য পরীক্ষা করে। কার্যকরী পরীক্ষাগুলি মধ্যবর্তী ফলাফল বা পার্শ্ব-প্রতিক্রিয়া নিয়ে নিজেদের উদ্বেগ দেয় না, কেবল ফলাফল (তারা যত্ন করে না যে এক্স করার পরে, অবজেক্ট y এর স্টেট জেড রয়েছে)। এগুলি স্পেসিফিকেশনের অংশ যেমন যেমন "কলিং ফাংশন স্কয়ার (এক্স) 2 টি রিটার্ন 4 দিয়ে দেয়" পরীক্ষা করার জন্য লিখিত হয়।
গ্রহণের পরীক্ষা
স্বীকৃতি পরীক্ষা দুটি ধরণের মধ্যে বিভক্ত বলে মনে হচ্ছে:
স্ট্যান্ডার্ড গ্রহণযোগ্যতা পরীক্ষারটিতে অ্যাপ্লিকেশনটির কার্যকারিতা স্পেসিফিকেশনটিকে সন্তুষ্ট করে কিনা তা পুরো সিস্টেমে পরীক্ষা করা (যেমন ওয়েব ব্রাউজারের মাধ্যমে আপনার ওয়েব পৃষ্ঠা ব্যবহার করা) জড়িত। উদাহরণস্বরূপ "একটি জুম আইকনে ক্লিক করার সাথে নথির দর্শন 25% বাড়ানো উচিত।" ফলাফলের আসল ধারাবাহিকতা নেই, কেবল একটি পাস বা ব্যর্থ ফলাফল।
সুবিধাটি হ'ল পরীক্ষাগুলি সরল ইংরাজীতে বর্ণিত হয় এবং সম্পূর্ণ সফ্টওয়্যারটি নিশ্চিত করে যে বৈশিষ্ট্য সম্পূর্ণ। অসুবিধাটি হ'ল আপনি পরীক্ষার পিরামিডের উপরে আরও একটি স্তর সরিয়ে নিয়েছেন। স্বীকৃতি পরীক্ষা কোডের পর্বতমালা স্পর্শ করে, তাই একটি ব্যর্থতা ট্র্যাকিং জটিল হতে পারে।
এছাড়াও, চতুর সফ্টওয়্যার বিকাশে, ব্যবহারকারী গ্রহণযোগ্যতা পরীক্ষার মধ্যে সফ্টওয়্যারটির গ্রাহক দ্বারা / বিকাশের সময় নির্মিত ব্যবহারকারী কাহিনীগুলি আয়না করার জন্য পরীক্ষা তৈরি করা জড়িত। যদি পরীক্ষাগুলি পাস হয় তবে এর অর্থ সফ্টওয়্যারটির গ্রাহকের প্রয়োজনীয়তা পূরণ করা উচিত এবং গল্পগুলি সম্পূর্ণ বিবেচনা করা যেতে পারে। একটি গ্রহণযোগ্যতা পরীক্ষার স্যুটটি মূলত একটি ডোমেন নির্দিষ্ট ভাষায় রচনামূলক একটি এক্সিকিউটেবল স্পেসিফিকেশন যা সিস্টেমের ব্যবহারকারীদের দ্বারা ব্যবহৃত ভাষায় পরীক্ষাগুলি বর্ণনা করে।
উপসংহার
তারা সবাই পরিপূরক। কখনও কখনও এক ধরণের উপর ফোকাস করা বা সেগুলি সম্পূর্ণরূপে বন্ধ করা সুবিধাজনক। আমার জন্য প্রধান পার্থক্য হ'ল কিছু পরীক্ষাগুলি কোনও প্রোগ্রামারের দৃষ্টিকোণ থেকে জিনিসগুলিকে দেখে তবে অন্যরা গ্রাহক / শেষ ব্যবহারকারীর ফোকাস ব্যবহার করে।
গুরুত্বপূর্ণ বিষয়টি হল আপনি জানেন যে এই শর্তাদি আপনার সহকর্মীদের কাছে কী বোঝায়। উদাহরণস্বরূপ, যখন তারা "সম্পূর্ণ শেষ থেকে শেষ" পরীক্ষার কথা বলছেন তখন তাদের বিভিন্ন অর্থের আলাদা আলাদা সংজ্ঞা থাকবে।
আমি সম্প্রতি তাদের পরীক্ষার জন্য গুগলের নামকরণ সিস্টেম জুড়ে এসেছি এবং আমি এটি পছন্দ করি - তারা কেবল ছোট, মাঝারি এবং বৃহত্তর ব্যবহার করে যুক্তিগুলি বাইপাস করে। কোন পরীক্ষায় কোন বিভাগটি ফিট করে তা সিদ্ধান্ত নেওয়ার জন্য, তারা কয়েকটি বিষয়গুলি দেখুন - এটি চালাতে কতক্ষণ সময় লাগে, এটি নেটওয়ার্ক, ডাটাবেস, ফাইল সিস্টেম, বাহ্যিক সিস্টেম এবং এগুলি অ্যাক্সেস করে?
http://googletesting.blogspot.com/2010/12/test-sizes.html
আমি আপনার বর্তমান কর্মক্ষেত্রের জন্য ছোট, মাঝারি এবং বৃহত্তর মধ্যে পার্থক্যটি Google এর থেকে আলাদা হতে পারি imagine
তবে এটি কেবল সুযোগ সম্পর্কে নয়, উদ্দেশ্য সম্পর্কে। পরীক্ষাগুলির জন্য ভিন্ন দৃষ্টিভঙ্গি সম্পর্কে মার্কের বক্তব্য, যেমন প্রোগ্রামার বনাম গ্রাহক / শেষ ব্যবহারকারী, সত্যই গুরুত্বপূর্ণ is
http://martinfowler.com/articles/microservice-testing/
মার্টিন ফওলারের ব্লগ পোস্টে কোড পরীক্ষা করার কৌশল সম্পর্কে কথা বলেছে (বিশেষত একটি মাইক্রো-সার্ভিসেস আর্কিটেকচারে) তবে এটি বেশিরভাগ ক্ষেত্রেই প্রয়োগ হয়।
আমি তার সংক্ষিপ্ত স্লাইডটি থেকে উদ্ধৃত করব:
- ইউনিট পরীক্ষা - তারা প্রত্যাশা অনুযায়ী আচরণ করে কিনা তা নির্ধারণের জন্য অ্যাপ্লিকেশনটিতে টেস্টেবল সফ্টওয়্যারটির ক্ষুদ্রতম টুকরা অনুশীলন করুন।
- ইন্টিগ্রেশন পরীক্ষা - ইন্টারফেস ত্রুটিগুলি সনাক্ত করার জন্য উপাদানগুলির মধ্যে যোগাযোগের পথগুলি এবং মিথস্ক্রিয়াটি যাচাই করুন।
- উপাদান পরীক্ষাগুলি - পরীক্ষিত অধীনে সিস্টেমের কোনও অংশে অনুশীলিত সফ্টওয়্যারটির পরিধি সীমাবদ্ধ করে, অভ্যন্তরীণ কোড ইন্টারফেসের মাধ্যমে সিস্টেমটি পরিচালনা করে এবং পরীক্ষার ডাবল ব্যবহার করে পরীক্ষার অধীনে কোডটি অন্য উপাদানগুলি থেকে বিচ্ছিন্ন করতে ব্যবহার করে।
- চুক্তি পরীক্ষা - এটি কোনও গ্রাহক পরিষেবার দ্বারা প্রত্যাশিত চুক্তির সাথে মিলিত করে তা বাহ্যিক পরিষেবার সীমানায় ইন্টারঅ্যাকশন যাচাই করে।
- শেষ-থেকে-শেষ পরীক্ষা - যাচাই করুন যে কোনও সিস্টেম বাহ্যিক প্রয়োজনীয়তা পূরণ করে এবং তার লক্ষ্যগুলি অর্জন করে, পুরো সিস্টেমটি শেষ থেকে শেষ পর্যন্ত পরীক্ষা করে।
ইউনিট টেস্টিং - নাম অনুসারে, এই পদ্ধতিটি বস্তুর স্তরে পরীক্ষা করে। স্বতন্ত্র সফ্টওয়্যার উপাদানগুলি যে কোনও ত্রুটির জন্য পরীক্ষা করা হয়। এই পরীক্ষার জন্য প্রোগ্রামটির জ্ঞান প্রয়োজন এবং সফ্টওয়্যারটি যেমন ইচ্ছা তেমন আচরণ করে কিনা তা পরীক্ষা করার জন্য পরীক্ষার কোডগুলি তৈরি করা হয়েছিল।
কার্যকরী পরীক্ষা - সিস্টেমের অভ্যন্তরীণ কাজের কোনও জ্ঞান ছাড়াই বাহিত হয়। পরীক্ষক কেবল প্রয়োজনীয় প্রয়োজনীয়তাগুলি অনুসরণ করে, বিভিন্ন ইনপুট সরবরাহ করে এবং উত্পন্ন আউটপুটগুলি পরীক্ষা করে সিস্টেমটি ব্যবহারের চেষ্টা করবেন। এই পরীক্ষাটি ক্লোজড-বক্স টেস্টিং বা ব্ল্যাক-বক্স নামেও পরিচিত।
স্বীকৃতি পরীক্ষা - সফ্টওয়্যার ক্লায়েন্টের হাতে দেওয়ার আগে এটিই শেষ পরীক্ষা হয়। উন্নত সফ্টওয়্যার গ্রাহকের সমস্ত প্রয়োজনীয়তা পূরণ করে তা নিশ্চিত করার জন্য এটি করা হয়। স্বীকৃতি পরীক্ষা করার জন্য দুটি ধরণের রয়েছে - একটি যা উন্নয়ন দলের সদস্যদের দ্বারা পরিচালিত হয়, এটি অভ্যন্তরীণ গ্রহণযোগ্যতা পরীক্ষা (আলফা টেস্টিং) নামে পরিচিত, এবং অন্যটি গ্রাহক বা শেষ ব্যবহারকারী (বিটা টেস্টিং) নামে পরিচিত দ্বারা পরিচালিত হয়
ইন্টিগ্রেশন টেস্টিং - স্বতন্ত্র মডিউলগুলি যেগুলি ইতিমধ্যে ইউনিট পরীক্ষার শিকার হয় সেগুলি একে অপরের সাথে একীভূত হয়। সাধারণত দুটি পদ্ধতির অনুসরণ করা হয়:
1) টপ-ডাউন
2) নীচে আপ
এটি খুব সহজ।
ইউনিট টেস্টিং: এটি কোডিং জ্ঞান রয়েছে এমন বিকাশকারীদের দ্বারা আসলে এটি করা পরীক্ষা। এই টেস্টিং কোডিং পর্যায়ে করা হয় এবং এটি সাদা বক্স পরীক্ষার একটি অংশ। যখন কোনও সফ্টওয়্যার বিকাশের জন্য আসে, তখন এটি কোডের টুকরো বা কোডের টুকরো হিসাবে ইউনিট হিসাবে পরিচিত into এবং এই ইউনিটগুলির স্বতন্ত্র টেস্টিংকে বলা হয় ইউনিট টেস্টিং যা বিকাশকারীদের দ্বারা এক ধরণের মানবিক ভুল যেমন বিবরণী কভারেজ মিস করা ইত্যাদি খুঁজে পেতে ডেভেলপারদের দ্বারা করা হয়েছিল unit
কার্যকরী পরীক্ষা: এই পরীক্ষাটি টেস্টিং (কিউএ) পর্যায়ে করা হয় এবং এটি ব্ল্যাক বক্স পরীক্ষার একটি অংশ। পূর্বে লিখিত পরীক্ষার মামলার প্রকৃত ফাঁসি। এই পরীক্ষাটি প্রকৃতপক্ষে পরীক্ষকদের দ্বারা করা হয়, তারা সাইটে কোনও কার্যকারিতার আসল ফলাফল খুঁজে পায় এবং এই ফলাফলটিকে প্রত্যাশিত ফলাফলের সাথে তুলনা করে। যদি তারা কোনও বৈষম্য খুঁজে পায় তবে এটি একটি বাগ।
গ্রহণের পরীক্ষা: ইউএটি হিসাবে জানুন। এবং এটি প্রকৃতপক্ষে পরীক্ষক পাশাপাশি ডেভেলপার, পরিচালনা দল, লেখক, লেখক এবং এই প্রকল্পের সাথে জড়িত সকলেই করেছেন। প্রকল্পটি শেষ পর্যন্ত বাগ মুক্ত ছাড়াই সরবরাহ করার জন্য প্রস্তুত তা নিশ্চিত করতে।
ইন্টিগ্রেশন টেস্টিং: কোডের ইউনিটগুলি (পয়েন্ট 1 এ বর্ণিত) প্রকল্পটি সম্পূর্ণ করার জন্য একে অপরের সাথে একীভূত হয়। কোডগুলির এই ইউনিটগুলি বিভিন্ন কোডিং প্রযুক্তিতে লিখিত হতে পারে বা এগুলি বিভিন্ন সংস্করণের হতে পারে তাই কোডের সমস্ত ইউনিট অন্যের সাথে সামঞ্জস্যপূর্ণ এবং একীকরণের কোনও সমস্যা নেই তা নিশ্চিত করার জন্য এই পরীক্ষাটি ডেভেলপাররা দ্বারা করা হয়।
অতিরিক্ত উপহাস এবং খাঁটি ইউনিট-পরীক্ষার বিরুদ্ধে সাম্প্রতিক কিছু ধারণা (তুলনামূলকভাবে):
আমি এটি একটি ব্যবহারিক উদাহরণ এবং কোনও তত্ত্বের স্টাফ দিয়ে ব্যাখ্যা করব:
একজন বিকাশকারী কোড লেখেন। কোনও জিইউআই এখনও কার্যকর করা হয়নি। এই স্তরের পরীক্ষাটি যাচাই করে যে ফাংশনগুলি সঠিকভাবে কাজ করে এবং ডেটার ধরণগুলি সঠিক। পরীক্ষার এই পর্বকে ইউনিট টেস্টিং বলা হয়।
যখন একটি জিইউআই তৈরি হয় এবং পরীক্ষককে অ্যাপ্লিকেশন বরাদ্দ করা হয়, তখন সে ক্লায়েন্টের সাথে ব্যবসায়ের প্রয়োজনীয়তা যাচাই করে এবং বিভিন্ন পরিস্থিতিতে কার্যকর করে। একে ফাংশনাল টেস্টিং বলে। এখানে আমরা অ্যাপ্লিকেশন প্রবাহের সাথে ক্লায়েন্টের প্রয়োজনীয়তাগুলি ম্যাপ করছি।
ইন্টিগ্রেশন টেস্টিং: আসুন আমাদের অ্যাপ্লিকেশনটির দুটি মডিউল রয়েছে: এইচআর এবং ফিনান্স। এইচআর মডিউলটি আগে বিতরণ এবং পরীক্ষা করা হয়েছিল। এখন ফিনান্স বিকশিত এবং পরীক্ষার জন্য উপলব্ধ। পরস্পর নির্ভরশীল বৈশিষ্ট্যগুলিও এখন উপলভ্য, সুতরাং এই পর্যায়ে আপনি দুজনের মধ্যে যোগাযোগের পয়েন্টগুলি পরীক্ষা করবেন এবং প্রয়োজনীয়তার জন্য অনুরোধ অনুযায়ী তারা কাজ করছেন কিনা তা যাচাই করবে।
রিগ্রেশন টেস্টিং আরেকটি গুরুত্বপূর্ণ পর্ব, যা কোনও নতুন বিকাশ বা বাগ ফিক্সের পরে করা হয়। এর উদ্দেশ্য হ'ল পূর্বের কার্যকারী কার্যগুলি যাচাই করা।
ইউনিট পরীক্ষা: একটি অ্যাপ্লিকেশনটিতে পৃথক মডিউল বা স্বতন্ত্র উপাদানগুলির পরীক্ষা করা ইউনিট টেস্টিং হিসাবে পরিচিত, ইউনিট টেস্টিং বিকাশকারী দ্বারা করা হবে।
ইন্টিগ্রেশন টেস্ট: সমস্ত মডিউলগুলিকে একত্রিত করে এবং যোগাযোগটি যাচাই করতে অ্যাপ্লিকেশনটি পরীক্ষা করে এবং মডিউলগুলির মধ্যে ডেটা প্রবাহ সঠিকভাবে কাজ করছে বা না, এই পরীক্ষাটি বিকাশকারীরাও করেছেন।
কোনও অ্যাপ্লিকেশনটির স্বতন্ত্র কার্যকারিতা পরীক্ষা করে ফানসিওনাল টেস্টকে কার্যক্ষম পরীক্ষা বলে বোঝানো হয়
এই পরীক্ষাটি গ্রহণযোগ্যতা পরীক্ষাটি শেষ ব্যবহারকারী বা গ্রাহক দ্বারা তৈরি করা হয় কিনা বিল্ড অ্যাপ্লিকেশনটি গ্রাহকের প্রয়োজন অনুসারে হয় এবং গ্রাহকের স্পেসিফিকেশন এটি গ্রহণযোগ্যতা পরীক্ষার হিসাবে পরিচিত