সিআই সার্ভারে ইউনিট পরীক্ষা চালানোর পয়েন্টটি কী?


98

আপনি সিআই সার্ভারে ইউনিট পরীক্ষা কেন চালাবেন?

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


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

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

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

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

উত্তর:


223

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

অথবা না. এটি হওয়ার অনেক কারণ থাকতে পারে:

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

তবে আসল কথাটি এমন কোনও মেশিনে পরীক্ষা চালানো যা বিকাশকারী মেশিন নয়। একটি যা আলাদাভাবে কনফিগার করা আছে।

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

সিআইয়ের অন্যান্য ভাল কারণ পরীক্ষা চালানোর জন্য তৈরি করে:

  • মূল বিকাশকারী প্ল্যাটফর্মগুলি বাদে বিভিন্ন প্ল্যাটফর্মগুলিতে পরীক্ষা করা, যা বিকাশকারীদের পক্ষে করা কঠিন হতে পারে। (ধন্যবাদ টিজেডএক্সএক্স )
  • গ্রহণযোগ্যতা / ইন্টিগ্রেশন / এন্ড টু এন্ড / সত্যিই দীর্ঘ চলমান পরীক্ষাগুলি সিআই সার্ভারে চালানো যেতে পারে যা সাধারণত কোনও বিকাশকারী বাক্সে চালিত হয় না। (ধন্যবাদ Ixrec )
  • কোনও বিকাশকারী ধাক্কা দেওয়ার / প্রতিশ্রুতি দেওয়ার আগে একটি ছোট্ট পরিবর্তন করতে পারে (এটি নিরাপদ পরিবর্তন বলে ভেবে পরীক্ষা চালাচ্ছে না)। (ধন্যবাদ Ixrec * 2)
  • সিআই সার্ভার কনফিগারেশনে সাধারণত সমস্ত বিকাশকারী সরঞ্জাম এবং কনফিগারেশন অন্তর্ভুক্ত থাকে না এবং এটি উত্পাদন সিস্টেমের আরও কাছাকাছি থাকে
  • সিআই সিস্টেমগুলি প্রতিবার স্ক্র্যাচ থেকে প্রকল্পটি তৈরি করে, যার অর্থ বিল্ডগুলি পুনরাবৃত্তিযোগ্য
  • একটি লাইব্রেরি পরিবর্তনের ফলে নদীর তলদেশে সমস্যার সৃষ্টি হতে পারে - একটি লাইব্রেরির একটি নয়, সমস্ত নির্ভরশীল কোডবেস তৈরি করতে একটি সিআই সার্ভার কনফিগার করা যেতে পারে

36
অন্যান্য সাধারণ কারণ: ১) সিআই সার্ভারটি উচ্চ-স্তরের সংহতকরণ / গ্রহণযোগ্যতা পরীক্ষা চালাতে পারে যা বিকাশকারীদের সর্বদা চালাতে খুব বেশি সময় নেয়। ২) বিকাশকারী এগুলি চালিয়েছিলেন এবং তারপরে একটি ছোট পরিবর্তন এনেছিলেন যাতে তারা নিশ্চিত হন যে তারা খুব নিশ্চিত যে কোনও কিছু ভাঙ্গবে না, তবে আমরা নিশ্চিত হতে চাই।
Ixrec

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

2
পছন্দ করুন এটি
হ'ল

34
এছাড়াও, সিআই পরিবেশে এগুলি চালানোর অর্থ সাধারণত আপনার প্রকল্পটি শুরু থেকে সেট আপ করা হয় , আপনার বিল্ডটি পুনরাবৃত্তিযোগ্য হয় তা নিশ্চিত করে ।
mgarciaisaia

5
এছাড়াও, দুটি পরিবর্তন প্রতিশ্রুতিবদ্ধ হতে পারে যা ঠিক আছে পৃথকভাবে পরীক্ষা করা হয়েছে, তবে একসাথে বিরতি (যেমন একটি অব্যবহৃত এপিআই মুছে ফেলা, এবং অন্যটি এটি ব্যবহার শুরু করে)।
সাইমন রিখটার

74

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

আমাকে তৈরি করতে হবে, পরীক্ষা করতে হবে এবং যাচাই করতে হবে যে কোনও অ্যাপ্লিকেশন সঠিকভাবে চলেছে:

  • মাইক্রোসফ্ট উইন্ডোজ এক্সপি এবং ভিস্তা ভিজ্যুয়াল স্টুডিও 2008 সংকলক সহ।
  • মাইক্রোসফ্ট উইন্ডোজ 7 ভিজ্যুয়াল স্টুডিও 2010 সংকলক সহ।
    • ওহ, এবং এমএসআই তাদের প্রত্যেকের জন্য তৈরি করে।
  • H.১ এবং ৪.৪ সহ যথাক্রমে RHEL 5 এবং 6 (একইভাবে CentOS)
    • 7 শীঘ্রই। Woop-দ্য-woop।
  • ফেডোরা ওয়ার্কস্টেশন সর্বশেষ তিনটি সংস্করণের জন্য জিসিসির সাথে।
  • সর্বশেষ তিনটি সংস্করণে ডেবিয়ান (এবং উবুন্টুর মতো ডেরিভেটিভস)।
  • সর্বশেষ তিনটি সংস্করণে ম্যাক ওএসএক্স।
    • এবং প্যাকেজগুলি (আরপিএম, ডিএমজি, ইত্যাদি)

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

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

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


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

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

7
@ রবিবিডি আমি বলব টিজেএইচএক্স স্থানীয়ভাবে সমস্ত পরীক্ষা চালাতে পারে যদি তারা তা করতে পারে তবে তারা পারবে না । যেহেতু TZHX পারছে না, তারা স্থানীয়ভাবে কিছু পরীক্ষা চালায় (যেগুলি তাদের ডেভ সিস্টেমে চলতে পারে এবং পরিবর্তিত কোডের সাথে যথেষ্ট সংক্ষিপ্ত বা প্রাসঙ্গিক, উদাহরণস্বরূপ) এবং সিআই সিস্টেমে সম্পূর্ণ ব্যাটারি চালিত হতে দেয়। মোটামুটি যুক্তিযুক্ত।
মুড়ু

11
@ রবিডি: তিনি ইউনিট পরীক্ষায় বিশ্বাসী। সুতরাং তিনি সেগুলি তার ম্যাকবুক এয়ারে পরীক্ষা করে পাস এবং চেক ইন করেন Red আপনি যা পরীক্ষা করেছেন তা প্রোডাকশন প্ল্যাটফর্মগুলিতেও কাজ করে তা জানতে পেরে কি সুন্দর লাগছে না?
slebetman

2
@ রবিডি: আমি প্রায়শই ইউনিট টেস্ট লিখেছি যা নির্দিষ্ট প্ল্যাটফর্মে একটি নির্দিষ্ট সংকলকের সাথে নির্দিষ্ট ছিল। উদাহরণস্বরূপ একটি গ্রাফিক্স সাবসিস্টেম বিবেচনা করুন যা AMD (ইন্টেল প্রতিযোগী) নির্দিষ্ট সিপিইউ নির্দেশাবলী ব্যবহার করে যা কেবলমাত্র জি ++ (জিএনইউ সি ++ সংকলক) সংস্করণ 4.5 বা আরও নতুন পাওয়া যায়, তবে আমি একটি পরমাণু সিপিইউ এবং আইসিসি (ইন্টেল সি ++) এ কাজ করব কম্পাইলার)। Machine মেশিনে প্রতিবার এটিএমডি / জি ++ 4.5-পরীক্ষা চালানো বাজে কথা হবে, তবুও এটি মুক্তির আগে পরীক্ষা করা কোড; প্লাস আমার নিজের সিপিইউ-স্বতন্ত্র কোডের যথাযথ আন্তঃক্রিয়াশীলতার জন্য পরীক্ষা করা আবশ্যক। অবশ্যই,
ভিএম

23

চমৎকার ওবেদ উত্তর ছাড়াও:

  • আপনি সংগ্রহস্থল থেকে কোড পরীক্ষা করুন । এটি আপনার মেশিনে আপনার ফাইলগুলির সাথে কাজ করতে পারে ... যা আপনি প্রতিশ্রুতি দিতে ভুলে গেছেন। এটি এমন কোনও নতুন টেবিলের উপর নির্ভর করতে পারে যার মধ্যে তৈরির স্ক্রিপ্ট নেই (উদাহরণস্বরূপ তরলীতে), কিছু কনফিগারেশন ডেটা বা বৈশিষ্ট্যযুক্ত ফাইল।
  • আপনি কোড ইন্টিগ্রেশন সমস্যা এড়ানো। একজন বিকাশকারী সর্বশেষ সংস্করণটি ডাউনলোড করে ইউনিট এবং ইন্টিগ্রেশন পরীক্ষা তৈরি করে, কোড যুক্ত করে, তার মেশিনে সমস্ত পরীক্ষা পাস করে, কমিট করে এবং পুশ করে push অন্য একজন বিকাশকারী সবেমাত্র এটি করেছেন। উভয় পরিবর্তনগুলি নিজেরাই ঠিক আছে তবে একত্রিত হওয়ার পরে বাগটি ঘটে। এটি সংগ্রহস্থল মার্জ হতে পারে বা এটি বিরোধ হিসাবে সনাক্ত করা যায় নি। উদাহরণস্বরূপ দেব 1 ফাইলটি মুছে ফেলা হয়েছে যা মোটেও ব্যবহৃত হয়নি। এই ফাইলটির বিপরীতে দেব 2 কোড এবং ডিভ 1 1 ছাড়াই পরীক্ষা করে।
  • আপনি সংগ্রহশালা থেকে স্বয়ংক্রিয়ভাবে স্থাপন করতে একটি স্ক্রিপ্ট বিকাশ করুন। একটি সর্বজনীন বিল্ডিং থাকা এবং স্ক্রিপ্ট মোতায়েন করা অনেক সমস্যার সমাধান করে। কিছু বিকাশকারী একটি lib বা সংকলন বিকল্প যুক্ত করেছে যা প্রত্যেকে ভাগ করে নেই। এটি কেবল আপনার সময় সাশ্রয় করে না, তবে আরও গুরুত্বপূর্ণ, এটি স্থাপনাকে নিরাপদ এবং অনুমানযোগ্য করে তোলে। তদুপরি, আপনি আপনার ভাণ্ডারগুলিতে সংস্করণ ২.৩.১ এ ফিরে যেতে পারেন এবং এই সংস্করণটির সাথে কাজ করে এমন স্ক্রিপ্টের সাহায্যে এই সংস্করণটি মোতায়েন করতে পারেন। এটিতে ভিউ, সঞ্চিত পদ্ধতি, দর্শন এবং সংস্করণ হওয়া উচিত এমন ট্রিগারগুলির মতো ডেটাবেস অবজেক্টগুলি অন্তর্ভুক্ত। (অথবা আপনি কোনও কার্যক্ষম সংস্করণে ফিরে যেতে পারবেন না)।
  • অন্যান্য পরীক্ষা : সংহতকরণ, কর্মক্ষমতা এবং শেষের পরীক্ষার মতো end এটি ধীর হতে পারে এবং সেলেনিয়ামের মতো পরীক্ষামূলক সরঞ্জামগুলি অন্তর্ভুক্ত করতে পারে। মক অবজেক্টস বা এইচএসকিউএল পরিবর্তে আপনার একটি সত্যিকারের ডাটাবেসের সাথে সম্পূর্ণ সেট ডেটার দরকার হতে পারে।

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


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

22

আপনি ভাবতেন যে আপনি তা করবেন না - তবে বিকাশকারীরা মানুষ এবং তারা কখনও কখনও ভুলে যায়।

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

আপনার পরীক্ষাগুলি স্থানীয় (চেকড-ইন) সংস্থার উপরও নির্ভর করতে পারে। আপনার স্থানীয় ইউনিট পরীক্ষা এমন কিছু গ্রহণ করবে না।

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


7
আমি আরও উফ দেখেছি যে আমি যে সিআই ব্যর্থতা স্বীকার করতে আগ্রহী তা প্রতিশ্রুতি দিতে ভুলে গেছি।
ড্যান নীলি

@ ড্যানিয়েলি ন্যায্য কথা বলতে, এটি আপনার বাটটিকে বিল্ড ম্যানেজারের দ্বারা লাথি মেরে মারবে কারণ আপনি তাকে / তাকে কোনও কিছু বলতে ভুলে গিয়েছিলেন ... :-)
রবি ডি

3
আমি সিআইকে ভালবাসি এটির অন্যতম কারণ। আপনার নিজের ওপিস সম্পর্কে সন্ধান করা এবং ফিক্সিং করা আপনার পক্ষে অন্য কাউকে খুঁজে পাওয়ার চেয়ে অনেক ভাল।
ড্যান নীলি

14

সময় দ্বারা কিছু মাস্টার প্রতিশ্রুতিবদ্ধ হয়

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

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

এটি সমান্তরালভাবে বিভিন্ন স্যুট চালিয়ে বিকাশকারীদের সময় বাঁচাতে পারে, বিশেষত যদি কিছু ধীরে ধীরে, বহু-মিনিটের পরীক্ষাগুলি হয় যা প্রতিটি পরিবর্তনের পরে স্থানীয়ভাবে চালানো হয় না likely

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

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


1
আপনার সত্যিকারের ধীর ইউনিট পরীক্ষা করা উচিত নয় - এটি প্রথম নীতি লঙ্ঘন করে।
রবি ডি

4
@ রবিডিডি: আমি মনে করি যে সাধারণত সিআই সার্ভার কেবল ইউনিট পরীক্ষা নয়, সমস্ত পরীক্ষা চালায়।
রিমকো গ্রিলিচ

4
@ রবিডিডি: তত্ত্ব অনুসারে সমস্ত ইউনিট পরীক্ষা দ্রুত। অনুশীলনে .... নির্বিশেষে, সিআই সমস্ত পরীক্ষা - লিটারার, স্ট্যাটিক বিশ্লেষণ, ইউনিট পরীক্ষা, ইন্টিগ্রেশন পরীক্ষা চালাতে পারে এবং করা উচিত ।
দেনিথ

2
@ রবিবিডি স্পষ্টতই কনফিগারেশনের সুনির্দিষ্ট দল থেকে দলে পৃথক হতে পারে। এমনকি বিল্ডগুলি একাধিক মিনিট সময় নেয়, প্রায়শই সমান্তরালে এই বিল্ডগুলির একাধিক চালানো সম্ভব। একটি একক একচেটিয়া কোডবেস দেওয়া এটি আরও বড় অপূর্ণতা হতে পারে, কিন্তু আইএমই এটি কোনও বাধা নয়।
দেনিথ

1
@ রবিডি আমি মনে করি এটি আপনার স্থাপত্যের উপর আরও নির্ভর করে more আমি এটি engineering 80 এর ইঞ্জিনিয়ারিং দলের পক্ষে কাজ করতে দেখেছি, তবে এটি পণ্যের ক্ষেত্রগুলির জন্য সু-সংজ্ঞায়িত উপ-দলগুলির সাথে রয়েছে।
দেনিথ

4

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

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


3

ধরে নেওয়া (অন্য উত্তরের বিপরীতে) যে বিকাশকারীরা যথেষ্ট শৃঙ্খলাবদ্ধ এবং প্রতিশ্রুতি দেওয়ার আগে ইউনিট পরীক্ষা চালায়, এর বিভিন্ন কারণ থাকতে পারে:

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

3

যখন পরিবর্তন এ পরীক্ষাটি ভঙ্গ করে না, এবং পরিবর্তন বি পরীক্ষাটি ভঙ্গ করে না, তবে কে এবং বি একসাথে করে এমন ঘটনাগুলি কল্পনা করা সম্ভব । যদি এ এবং বি বিভিন্ন বিকাশকারী তৈরি করেন তবে কেবল সিআই সার্ভারই ​​নতুন বাগটি সনাক্ত করতে পারে। A এবং B এমনকি একই দীর্ঘ বাক্যটির দুটি অংশ হতে পারে।

দুটি এবং ইঞ্জিন দুটি এ এবং বি দ্বারা চালিত একটি ট্রেনের কল্পনা করুন সম্ভবত একটির চেয়ে যথেষ্ট বেশি এবং এটি প্রয়োগের সমাধান। তবে দুটি "ফিক্স" প্রয়োগ করে উভয়কে সরিয়ে ফেললে ট্রেন চলাচল করবে না।

এছাড়াও, সমস্ত বিকাশকারী সমস্ত ইউনিট পরীক্ষা চালায় না, যখন বেশিরভাগ ভাল বিকাশকারীরা করেন।


2

আসুন একটি সমতুল্য প্রশ্ন জিজ্ঞাসা করুন:

আপনি সিআই সার্ভারে কোডটি তৈরি করবেন কেন?

অবশ্যই, কোনও কিছু মাস্টারকে প্রতিশ্রুতিবদ্ধ হওয়ার সময়ে, একজন বিকাশকারী ইতিমধ্যে কোডটি তৈরি করে ফেলেছে এবং তাদের নতুন কোডের সাথে যে কোনও ত্রুটি ঘটেছে তা ঠিক করেছে। এটি কি বিল্ডিং কোডের পয়েন্ট নয়? অন্যথায় তারা কেবল ভাঙা কোড করেছে committed


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

কোডটি যদি কখনও ভাঙা না হয় তবে আমরা সিআই ব্যবহার করব কেন? পরীক্ষার জন্য বিল্ড সরবরাহ করতে, রাতের বিল্ডগুলি যথেষ্ট ভাল would

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