ইউনিট এবং ইন্টিগ্রেশন মধ্যে পরীক্ষার ব্যবধান: ক্ষুদ্র, উপাদান, ইউনিট একীকরণ পরীক্ষায় একীকরণ


9

গত কয়েক সপ্তাহ ধরে আমি কীভাবে আমাদের পরীক্ষার পদ্ধতিতে একটি ফাঁক পূরণ করতে পারি তা নিয়ে গবেষণা করছি। সরলীকৃত পদগুলিতে ইউনিট পরীক্ষাগুলি খুব ছোট এবং traditionalতিহ্যগত একীকরণের পরীক্ষাগুলি খুব বড়।

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

স্পষ্টতই Aসম্পর্কে বিদ্রূপিত অনুমানের সাথে ইউনিট টেস্টিং বিচ্ছিন্নকরণের Cপরীক্ষার জন্য ভাল A, তবে এটি অনুমানগুলি নিজেরাই পরীক্ষা করে না।

আরেকটি সম্ভাবনা হ'ল ইউনিট পরীক্ষা যুক্ত করা C। তবে এটি আদর্শ নয় কারণ, Aবিকাশে থাকাকালীন , Cবিকশিত অনুমানের সাথে পরীক্ষাগুলি পরিবর্তন করা Aঅত্যধিক আনাড়ি হবে। প্রকৃতপক্ষে Aবিকাশকারীদের ইউনিট পরীক্ষায় C(যেমন একটি বাহ্যিক গ্রন্থাগার) এর পর্যাপ্ত অ্যাক্সেস নাও থাকতে পারে ।

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

এটি সম্পূর্ণরূপে সংহতকরণের পরীক্ষাগুলি থেকে ট্র্যাক করা কুখ্যাত এবং এটি ইন্টিগ্রেশন পরীক্ষায় মোটেই ধরা পড়বে না। এটি Aএস ইউনিট পরীক্ষায় ধরা পড়ে না কারণ Aএস অনুমানগুলি ঠাট্টা করে। তবে এটি সহজে একটি "মিনি" ইন্টিগ্রেশন পরীক্ষা যে শুধু ব্যায়াম হাতে ক্যাচ যেতে পারে Aএবং C

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

আমি এই পরীক্ষার ফাঁকটি কীভাবে পূরণ করব? বিশেষত - আমি এই জাতীয় পরীক্ষা কোথায় রাখি? আমি ইনপুট কিভাবে উপহাস না Aএবং C"মিনি" ইন্টিগ্রেশন পরীক্ষার জন্য? এবং এই পরীক্ষাগুলি এবং ইউনিট পরীক্ষার মধ্যে পরীক্ষার উদ্বেগগুলি পৃথক করতে কত প্রচেষ্টা করা উচিত? বা পরীক্ষার ফাঁক পূরণ করার আরও ভাল উপায় আছে কি?


1
আপনি কি মডিউল এসির সংস্করণ এবং নির্ভরতা পরিচালনার কোনও ফর্ম ব্যবহার করার কথা বিবেচনা করেছেন?
অলৌকিক ঘটনা


1
টিপস জন্য ধন্যবাদ @ ধন্যবাদ। আমি প্রশ্নটি কম অস্পষ্ট করে তুলেছি।
mjhm

@miraclixx আপনার পরামর্শের জন্য ধন্যবাদ। আপনি বিস্তারিত বলতে পারেন? আপনি যদি blog.nodejitsu.com/package-d depend depend - done - right মত কিছু বোঝাতে চান - আমি মনে করি এটির তুলনায় আমি যা বলছি তার থেকে আলাদা সমস্যা সমাধান হবে। আমি যে উপাদানগুলির উল্লেখ করছি সেগুলি সাধারণত নোড মডিউল হিসাবে স্বতন্ত্রভাবে সংস্করণে খুব ছোট - উদাহরণস্বরূপ কোনও মডেল বা নিয়ন্ত্রণকারী উপাদান ফাইল। অতিরিক্ত সংস্করণ নির্দিষ্ট সমস্যার জন্য সুস্পষ্ট পরীক্ষার চেয়ে কেবল সুরক্ষা এবং ব্যর্থতার উত্স সম্পর্কে ইঙ্গিত দেয়।
mjhm

উত্তর:


6

এটি আমার কাছে উপস্থিত রয়েছে যে আপনার উপাদানগুলির সাথে আপনার একটি মৌলিক সমস্যা আছে।

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

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

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


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

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