একীকরণ পরীক্ষার কি অবিচ্ছিন্ন ইন্টিগ্রেশন (সিআই) এ অন্তর্ভুক্ত করা উচিত?


11

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

তবে জটিল অংশটি হ'ল: হডসন পূর্ববর্তী কাজগুলি সম্পন্ন করার পরে ইন্টিগ্রেশন টেস্টগুলি করার জন্য অ্যাপ্লিকেশন সার্ভার স্থাপন এবং প্রারম্ভ করে

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

আপনি কি ভাবেন যে ইন্টিগ্রেশন টেস্টটি অবিরত ইন্টিগ্রেশন (সিআই) এ অন্তর্ভুক্ত করা উচিত? এটি ম্যানুয়ালি হতে পারে? অথবা ইন্টিগ্রেশন পরীক্ষা সহজীকরণ?


2
আপনার সমস্যা সিআই অংশে নয়, পরীক্ষার মানের হয়। ইন্টিগ্রেশন পরীক্ষায় এটি নির্ভরশীলতা উপহাস করা এখনও একটি ভাল অনুশীলন।
লুক ফ্রাঙ্কেন

উত্তর:


8

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


4
তবে অবিচ্ছিন্ন সেখানেও আছে। যদি ইন্টিগ্রেশন পরীক্ষাগুলি কয়েক মিনিট বা ঘন্টা নেয় তবে এটি অবিচ্ছিন্ন নয়।
U2EF1

@ U2EF1 তার পরে একটি পৃথক ইন্টিগ্রেশন সার্ভার সেট আপ করুন।
কায়মন

1
@ কায়ামান আপনার মন্তব্যটি "বিচ্ছিন্ন ইন্টিগ্রেশন সার্ভার" এর জন্য ইন্টারনেটে একমাত্র ফলাফল। আপনি কি বলতে চান দয়া করে স্পষ্ট করতে পারেন?
স্টিজন

3

আপনি কি ভাবেন যে ইন্টিগ্রেশন টেস্টটি অবিরত ইন্টিগ্রেশন (সিআই) এ অন্তর্ভুক্ত করা উচিত?

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

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


3

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

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

  1. একটি অঙ্গীকারবদ্ধ
  2. পুরো পরীক্ষা
  3. বিস্তৃতি

বিকাশকারীদের দ্রুত প্রতিক্রিয়ার কারণে, প্রতিশ্রুতিবদ্ধ বিল্ডটি তিনি বলেছেন যে 10 মিনিটের বেশি সময় লাগবে না।

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

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

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

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

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

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