ইউনিট পরীক্ষা এবং ইন্টিগ্রেশন পরীক্ষার মধ্যে লাইনটি আমি কোথায় আঁকব? তারা পৃথক করা উচিত?


11

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

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

জাল HTTP অনুরোধ বস্তু -> এমভিসি কাঠামো -> HTTP প্রতিক্রিয়া অবজেক্ট -> প্রতিক্রিয়াটি সঠিক কিনা তা পরীক্ষা করুন

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

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


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

1
এই প্রশ্নটি টেস্টিং এবং কিউএ সম্পর্কিত। সুতরাং আমি এটি স্ট্যাক এক্সচেঞ্জে ( এসকিউএস্ট্যাকেক্সঞ্জেন.কম ) এসকিউএ-র সাথে সম্পর্কিত সাইটটিতে স্থানান্তরিত করার পরামর্শ দেব
dzieciou

@ Dzieciou এমনকি জানেন না যে বিদ্যমান ছিল!
আর্লজ

উত্তর:


19

ইন্টিগ্রেশন বনাম ইউনিট পরীক্ষা

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

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

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

এর অর্থ হল কোনও মডেলটি কোনও ডাটাবেজে প্রকৃতপক্ষে সঞ্চিত আছে বা অ্যালগরিদম এক্স ব্যর্থ হওয়ার পরে যদি সত্যিই একটি সতর্কতা জারি করা হয় তা জানার অর্থ।

গবেষণা বা পরীক্ষা চালিত উন্নতি

এটিকে এক ধাপ পিছনে নিয়ে টেস্ট ড্রাইভেন ডেভলপমেন্ট (টিডিডি) দেখার জন্য কয়েকটি বিষয় বিবেচনায় নেওয়া দরকার।

  1. আপনি প্রকৃতপক্ষে কোডটি লেখার আগে আপনি আপনার ইউনিট পরীক্ষাটি লেখেন যা এটি পাস করে।
  2. আপনি পরীক্ষা পাস করেছেন, এটি সম্পাদন করার জন্য পর্যাপ্ত কোড লিখুন।
  3. এখন পরীক্ষা পাস করার সময় এখন একটি পদক্ষেপ পিছনে নেওয়ার সময়। এই নতুন কার্যকারিতাটি জায়গায় কি রিফ্যাক্টরের কিছু আছে? সবকিছু পরীক্ষা দ্বারা আচ্ছাদিত হওয়ায় আপনি এটি নিরাপদে করতে পারেন।

ইন্টিগ্রেশন প্রথম বনাম ইন্টিগ্রেশন সর্বশেষ

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

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

Practicalities

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

আমরা সাধারণত এক ক্লাসের জন্য একটি পরীক্ষা ফাইল ব্যবহার করি by

প্রস্তাবিত পড়া

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

2

যে কোনও পরীক্ষার কৌশলটিতে কী গুরুত্বপূর্ণ, তা হ'ল টেস্ট কভারেজ - অর্থাত্ সমস্ত কার্যকারিতা পরীক্ষা করা হচ্ছে তা দেখাতে সক্ষম হওয়া।

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

ইউনিট পরীক্ষা এবং ইন্টিগ্রেশন পরীক্ষার মধ্যে লাইনটি ঠিক কোথায় আঁকতে হবে?

প্রদত্ত সংহতকরণ পরীক্ষা করা সহজতর, দ্রুত এবং কম সস্তা, লাইনটি যতটা সম্ভব আঁকুন ...

আমি কি ইউনিট পরীক্ষা দিয়ে শুধুমাত্র একবারে (যতটা সম্ভব) এক ক্লাস পরীক্ষা করতে পারি?

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

এছাড়াও, আমার ইউনিট টেস্টিং প্রকল্পের মতো একই টেস্টিং প্রকল্পে ইন্টিগ্রেশন টেস্টগুলি রাখা উচিত?

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


2
ইন্টিগ্রেশন টেস্টিং কীভাবে সহজ, দ্রুত বা কম সস্তা তা আমি দেখতে ব্যর্থ হয়েছি। আমার কাছে এটি সকলের বিপরীতে 3
integ

0

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

ইউনিট পরীক্ষা দিয়ে আমি সাধারণত একটি ফাইলে কেবল একটি ক্লাস (SUT) পরীক্ষা করি।

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