আমি কি ডকার ইমেজে পরীক্ষাগুলি অন্তর্ভুক্ত করব?


19

যখন এটি পরীক্ষাগুলি আসে, আমি দুটি বিকল্পের কথা ভাবতে পারি:

  1. পরীক্ষা এবং অ্যাপ্লিকেশন উভয়ই একটি ছবিতে রাখুন।
  2. চিত্রটিতে কেবল অ্যাপ্লিকেশন কোড অন্তর্ভুক্ত করুন। একটি পরীক্ষা-নির্দিষ্ট ধারক তৈরি করুন যা মূল চিত্রের পরে তৈরি করে এবং এতে কিছু স্তর যুক্ত করে (পরীক্ষার কোড, নির্ভরতা ইত্যাদি)।

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

দ্বিতীয় বিকল্পের সাথে, যে চিত্রটি প্রেরণ করা হয় তা পরীক্ষিত চিত্রের মতো হয় না।

উভয়ই খারাপ কৌশলগুলির মতো দেখায়। তৃতীয়, আরও ভাল কৌশল আছে কি?


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

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

উত্তর:


10

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

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


1
সুতরাং এটি বেশ বিকল্প 2 - আমি এমন পরিবেশ / পাত্রে পরীক্ষাগুলি চালিত করি যা উত্পাদনের সাথে খুব অনুরূপ, তবে একেবারে এক নয়। এটা কি সঠিক?
lfk

9

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

টি এল; ডিআর;

সংক্ষেপে, আপনাকে আলাদা করতে হবে:

  • আপনার কোড থেকে
  • অ্যাপ্লিকেশন কনফিগারেশন, থেকে
  • সিস্টেম পরিবেশ কনফিগারেশন।

প্রত্যেকের একে অপরের থেকে স্বাধীন হতে হবে এবং যথাযথ:

  • সংস্করণ নিয়ন্ত্রিত
  • প্রমাণিত
  • deployable

দীর্ঘ সংস্করণ

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

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

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

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


তার মানে কি আপনার সিআই আপনার ডকফিলিলগুলি একেবারে পরীক্ষা করবে না? উদাহরণস্বরূপ, যদি আপনার ডকফাইফিলের কোনও নির্ভরতা অনুপস্থিত থাকে তবে পরীক্ষাগুলি এখনও পাস হবে?
lfk

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

0

আমি মনে করি আপনি বিভিন্ন ধরণের পরীক্ষার মিশ্রণ করছেন। মূলত নিজেকে জিজ্ঞাসা করা দরকার: এখানে পরীক্ষার অধীনে ইউনিট কী?

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

আপনি যখন একটি নতুন ডকার চিত্র তৈরি করেন, এটি একটি নতুন ইউনিটে পরিণত হয় যা আপনি পরীক্ষা করতে পারেন। এই চিত্রটির জন্য আপনি কী ধরণের জিনিস পরীক্ষা করতে চান? এটি সরবরাহ করছে এপিআই কি? আপনি কিভাবে এটি পরীক্ষা করবেন?

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

সুতরাং আমি মনে করি যে আপনি যে তৃতীয় বিকল্পটি সন্ধান করছেন তা হ'ল:

  • ডকার চিত্র তৈরির আগে আপনার ইউনিট / ইন্টিগ্রেশন পরীক্ষা চালান।
  • আপনি বিতরণ করতে চান এমন অ্যাপ্লিকেশন সহ একটি ডকার চিত্র তৈরি করুন।
  • সেই অ্যাপ্লিকেশন চিত্রটির উপরে অতিরিক্ত স্তর যুক্ত করার পরিবর্তে, আপনি কিছু প্রদত্ত প্যারামিটার দিয়ে এটি চালিয়ে যাচাই করেন এবং আপনার প্রত্যাশিত আউটপুট যুক্ত করে দেন।

সুতরাং সিআই / সিডি পদক্ষেপগুলি হবে:

উন্নয়নের পরিবেশ সেটআপ করুন -> কোডে পরীক্ষা চালান -> চূড়ান্ত চিত্র তৈরি করুন -> চিত্রটিতে পরীক্ষা চালান -> চিত্র স্থাপন করুন।

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