প্রতিটি ইউনিট পরীক্ষা অন্যান্য পরীক্ষার থেকে স্বাধীনভাবে চালানো সক্ষম হবে?


24

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

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

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

আপনি যদি প্রথম বিকল্পটি নিয়ে যান তবে প্রতিটি পদ্ধতি পৃথকভাবে পৃথক করে পরীক্ষা করা হবে তবে আপনি কখনই বুঝতে পারবেন না যে তারা সত্যই একসাথে সঠিকভাবে কাজ করতে পারে।

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


2
আমি প্রকৃতপক্ষে ইচ্ছুক যে আমি প্রতিবার ইউনিট পরীক্ষার ক্রমটি এলোমেলো করে ফেলতে পারি they আপাতত তারা কিছু অজানা, অপেক্ষাকৃত স্থির ক্রমে চালিত হন।
কাজ

উত্তর:


11

আপনি যদি প্রথম বিকল্পটি নিয়ে যান তবে প্রতিটি পদ্ধতি পৃথকভাবে পৃথক করে পরীক্ষা করা হবে তবে আপনি কখনই বুঝতে পারবেন না যে তারা সত্যই একসাথে সঠিকভাবে কাজ করতে পারে।

যদি আপনার পদ্ধতিগুলি সত্যই স্বতন্ত্র থাকে তবে এটি বিবেচনা করা উচিত নয়। আপনার দ্বিতীয় পদ্ধতিটি করা উচিত:

ক) বৈধ ডেটা সহ উপস্থাপন করার সময় সঠিকভাবে কাজ করুন।

খ) অবৈধ ডেটা উপস্থাপন করার সময় সংবেদনশীল এবং ধারাবাহিকভাবে ব্যর্থ।

একইভাবে আপনার প্রথম পদ্ধতিতেও এটি করা উচিত। সুতরাং যতক্ষণ আপনি ত্রুটি কেসগুলি পরিচালনা করবেন ততক্ষণ তারা সঠিকভাবে একসাথে কাজ করবে।

আপনি যদি পরীক্ষা করতে চান যে পদ্ধতিগুলি একসাথে সঠিকভাবে কাজ করে তবে তা ইন্টিগ্রেশন টেস্টিং, ইউনিট টেস্টিং নয়।


27

যদি পরীক্ষাগুলি স্বতন্ত্রভাবে চালানো না যায় তবে সেগুলি ইউনিট পরীক্ষা নয়।

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

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


@ স্টিভ, সুতরাং এই উদাহরণে আপনি কি বলবেন: পদ্ধতি 1 এর জন্য একটি পরীক্ষা, পদ্ধতি 2 এর জন্য একটি পরীক্ষা, এবং একই পরীক্ষায় 1 এবং 2 চালানো একটি পরীক্ষা?
মরগান হের্লোকার

2
হ্যাঁ। প্রথম দুটি ইউনিট পরীক্ষা হবে, তৃতীয়টি একটি সংহত পরীক্ষার মতো শোনাবে।
স্টিভ

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

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

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

9

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

এটি অবশ্যই আপনার বিকাশের স্টাইলের উপর নির্ভর করে, তবে আপনি যদি কোনও শালীন পরীক্ষা চালিত বিকাশের কোনও আশা চান, যেখানে কোনও বৈশিষ্ট্য বিকাশের সময় আপনি একটি পৃথক পরীক্ষা চালিয়ে যেতে পারেন তবে আমি আপনাকে প্রতিটি পরীক্ষাকে একা দাঁড়ানোর ক্ষমতা দেওয়ার পরামর্শ দিই।


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

3

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

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

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