ইউনিট টেস্ট বনাম ইন্টিগ্রেশন টেস্টিংয়ের নির্ধারিত সুবিধা কী?
এটি একটি মিথ্যা দ্বৈতত্ত্ব
ইউনিট টেস্টিং এবং ইন্টিগ্রেশন টেস্ট দুটি একই, তবে ভিন্ন উদ্দেশ্যে পরিবেশন করে। ইউনিট পরীক্ষার উদ্দেশ্য আপনার পদ্ধতিগুলি কাজ করে তা নিশ্চিত করা। ব্যবহারিক ক্ষেত্রে, ইউনিট পরীক্ষাগুলি নিশ্চিত করে যে কোডটি ইউনিট পরীক্ষাগুলির দ্বারা বর্ণিত চুক্তিটি পূরণ করে। এই ভাবে স্পষ্ট যে ইউনিট পরীক্ষা ডিজাইন করা হয়: তারা বিশেষভাবে রাষ্ট্র কি কোড করতে অনুমিত হয়, এবং জাহির কোডটি করে যে।
ইন্টিগ্রেশন টেস্ট আলাদা। ইন্টিগ্রেশন টেস্টগুলি সফ্টওয়্যার উপাদানগুলির মধ্যে ইন্টারঅ্যাকশন অনুশীলন করে। আপনার কাছে এমন সফ্টওয়্যার উপাদান থাকতে পারে যা তাদের সমস্ত পরীক্ষায় উত্তীর্ণ হয় এবং এখনও ইন্টিগ্রেশন পরীক্ষায় ব্যর্থ হয় কারণ তারা সঠিকভাবে ইন্টারঅ্যাক্ট করে না।
তবে, ইউনিট পরীক্ষাগুলির যদি কোনও সিদ্ধান্ত গ্রহণযোগ্য সুবিধা থাকে তবে এটি হ'ল: ইউনিট পরীক্ষাগুলি সেটআপ করা অনেক সহজ, এবং ইন্টিগ্রেশন পরীক্ষার চেয়ে অনেক কম সময় এবং প্রচেষ্টা প্রয়োজন। যখন সঠিকভাবে ব্যবহৃত হয়, ইউনিট পরীক্ষাগুলি "টেস্টেবল" কোডের বিকাশকে উত্সাহ দেয়, যার অর্থ চূড়ান্ত ফলাফলটি আরও নির্ভরযোগ্য, বোঝা সহজ এবং বজায় রাখা সহজ হতে চলেছে। পরীক্ষামূলক কোডের একটি সুসংগত এপিআই, পুনরাবৃত্তযোগ্য আচরণের মতো নির্দিষ্ট বৈশিষ্ট্য রয়েছে এবং এটি দৃ results়ভাবে বলা সহজ ফলাফলগুলি দেয়।
ইন্টিগ্রেশন টেস্টগুলি আরও কঠিন এবং আরও ব্যয়বহুল, কারণ আপনার প্রায়শই বিস্তৃত উপহাস, জটিল সেটআপ এবং কঠিন দৃser়তার প্রয়োজন হয়। সিস্টেম ইন্টিগ্রেশনের সর্বোচ্চ স্তরে, কোনও ইউআইতে মানুষের মিথস্ক্রিয়া অনুকরণ করার চেষ্টা করার কথা কল্পনা করুন। সম্পূর্ণ সফ্টওয়্যার সিস্টেমগুলি সেই ধরণের অটোমেশনে নিবেদিত। এবং এটি অটোমেশন যা আমরা পরে করছি; মানব পরীক্ষা পুনরাবৃত্তিযোগ্য নয় এবং স্বয়ংক্রিয় পরীক্ষার মতো স্কেল করে না।
শেষ পর্যন্ত, সংহতকরণ পরীক্ষা কোড কভারেজ সম্পর্কে কোনও গ্যারান্টি দেয় না। কোড লুপ, শর্ত এবং শাখাগুলির কতগুলি সংমিশ্রণ আপনি আপনার সংহতকরণ পরীক্ষা দিয়ে পরীক্ষা করছেন? আপনি কি সত্যিই জানেন? এমন একটি সরঞ্জাম রয়েছে যা আপনি ইউনিট টেস্ট এবং পরীক্ষার অধীনে পদ্ধতিগুলি সহ ব্যবহার করতে পারবেন যা আপনাকে জানাবে যে আপনার কোডের কতটা কভারেজ রয়েছে এবং আপনার কোডের সাইক্লোমেটিক জটিলতা কী। তবে তারা কেবল পদ্ধতি পর্যায়ে সত্যই ভাল কাজ করে, যেখানে ইউনিট পরীক্ষাগুলি থাকে।
আপনার পরীক্ষাগুলি যদি প্রতিবার আপনি চুল্লি পরিবর্তন করে থাকেন তবে এটি অন্যরকম সমস্যা। ইউনিট পরীক্ষাগুলি আপনার সফ্টওয়্যারটি যা করে তা ডকুমেন্ট করার বিষয়ে বলে মনে করা হয়, এটি তা করে তা প্রমাণ করে এবং তারপরে প্রমাণ করে যে আপনি যখন অন্তর্নিহিত বাস্তবায়নটি রিফ্যাক্টর করেন তখন এটি আবার তা করে । যদি আপনার এপিআই পরিবর্তন হয়, বা সিস্টেম ডিজাইনের পরিবর্তনের সাথে সাথে আপনার নিজের পদ্ধতিগুলি পরিবর্তনের প্রয়োজন হয়, এটি হবার কথা। যদি এটি অনেকটা হয়ে থাকে তবে কোড লেখার আগে প্রথমে আপনার পরীক্ষাগুলি লেখার বিষয়ে বিবেচনা করুন। এটি আপনাকে সামগ্রিক আর্কিটেকচার সম্পর্কে ভাবতে বাধ্য করবে এবং আপনাকে ইতিমধ্যে প্রতিষ্ঠিত এপিআই সহ কোড লেখার অনুমতি দেবে।
আপনি যদি তুচ্ছ কোডের জন্য ইউনিট পরীক্ষা লেখার জন্য অনেক সময় ব্যয় করেন
public string SomeProperty { get; set; }
তাহলে আপনার নিজের পদ্ধতির পুনর্বার পরীক্ষা করা উচিত। ইউনিট পরীক্ষার আচরণ পরীক্ষা করার কথা , এবং উপরের কোডের লাইনে কোনও আচরণ নেই। তবে আপনি কোথাও আপনার কোডে নির্ভরতা তৈরি করেছেন, যেহেতু সেই সম্পত্তিটি অবশ্যই আপনার কোডের অন্য কোথাও উল্লেখ করা হবে। এটি না করে লেখার পদ্ধতিগুলি বিবেচনা করুন যা প্রয়োজনীয় সম্পত্তিটিকে প্যারামিটার হিসাবে গ্রহণ করে:
public string SomeMethod(string someProperty);
এখন আপনার পদ্ধতির নিজের বাইরে কোনও কিছুর উপর নির্ভরশীলতা নেই এবং এটি এখন আরও পরীক্ষামূলক, কারণ এটি সম্পূর্ণ স্বয়ংসম্পূর্ণ। মঞ্জুর, আপনি সর্বদা এটি করতে সক্ষম হবেন না, তবে এটি আপনার কোডটিকে আরও পরীক্ষামূলক হওয়ার দিকে চালিত করে এবং এইবার আপনি প্রকৃত আচরণের জন্য ইউনিট পরীক্ষা লিখছেন ।