একটি ইন্টিগ্রেশন পরীক্ষা অপসারণের জন্য আমার কাছে পর্যাপ্ত ইউনিট পরীক্ষার কভারেজ রয়েছে কিনা আমি কীভাবে জানতে পারি?


15

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

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

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

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

উত্তর:


18

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

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


3
পরীক্ষাগুলি সুপারিশ করার জন্য +1 হ'ল যেহেতু "একটি স্বয়ংক্রিয় পরীক্ষা কেন মেরে ফেলবে?" এর সুস্পষ্ট প্রশ্ন বাড়ে?

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

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

2
@ টিউটাইট: হ্যাঁ, এটি পুরোপুরি একটি ভাল ধারণা বলে মনে হচ্ছে। ইউনিট পরীক্ষা ভাল হয়; আপনি জানেন যে স্টাফ জন্য ইউনিট পরীক্ষার আগে ইতিমধ্যে ভঙ্গ হয়েছে আরও ভাল।
গ্রেগ হিউগিল

7

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


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

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

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