আমার পরীক্ষার ডেটা কোথায় রাখা উচিত?


9

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

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

আমার দলটি যে সমাধানটি গ্রহণ করেছে তা হ'ল প্রকল্পটিতে এমন একটি ফাইল রয়েছে যা আমাদের পরীক্ষার ডেটা ধারণ করে এমন একটি নেটওয়ার্ক সংযুক্ত ফাইল সিস্টেমের পাথ ধারণ করে। ফাইলটি গিটকে উপেক্ষা করা হচ্ছে।

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

সুতরাং আমার প্রশ্ন দুটি ভাঁজ হয়। পুনর্বিবেশন নিয়ন্ত্রণে কতগুলি ডেটা খুব বেশি ডেটা সঞ্চয় করতে হয়?

বিপুল পরিমাণে পরীক্ষার ডেটা হ্যান্ডেল করার ভাল উপায় কী?


1
পরীক্ষার ডেটা কতবার পরিবর্তিত হতে পারে?
রবার্ট হার্ভে

এটি সম্ভবত কখনই বদলাবে না তবে আমরা বাগগুলি প্যাচ করার জন্য বা বৈশিষ্ট্যগুলি যুক্ত করার সাথে আরও ডেটা যুক্ত করা যেতে পারে।
অ্যালেক্সLordThorsen


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

ইউনিট পরীক্ষাগুলি তেমন ডেটা ব্যবহার করা উচিত নয়। এটি অনুমেয় যে ইন্টিগ্রেশন পরীক্ষাগুলি হতে পারে।
raptortech97

উত্তর:


9

বিল্ড চেইনে বড় ফাইলগুলি কীভাবে পরিচালনা করতে হয়

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

রিভিশন নিয়ন্ত্রণে রাখা কি খুব বড়

একটি বড় ধূসর অঞ্চল আছে is এবং যদি আপনি সিদ্ধান্ত নেন যে কোনও কিছু আরসিএসের অন্তর্গত নয়, তবে আপনার বিকল্পগুলি কী কী? আপনি যদি আর সি এস এবং বাইনারি রেপো (ম্যাভেন স্টাইল) এর মধ্যে নিজের পছন্দ সীমাবদ্ধ করেন তবে এটি একটি সহজ সিদ্ধান্ত।

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

বিকাশকারীদের সুবিধার জন্য আপস করতে প্রস্তুত থাকুন।


3

যখন এনএএস কাজ করে না, ধীর গতিতে থাকে বা আমরা একটি সম্পূর্ণ পরীক্ষা চালাতে পারি না তার চেয়ে কম হয়।

স্পষ্টতই, এটি কেবল NAS থেকে আপনার লোকাল ড্রাইভে 5 জিবি অনুলিপি করার মাধ্যমে সমাধান করা যেতে পারে। তবে ম্যানুয়ালি এটি করার দরকার নেই।

দ্বিতীয় কারণ হ'ল যখন কেউ প্রথমে কোনও সংগ্রহশালা ক্লোন করে ইউনিট পরীক্ষাগুলি ব্যর্থ হয় তাই তারা কীভাবে একটি নির্দিষ্ট নাম দিয়ে জিনিসগুলি মাউন্ট করবেন এবং পরীক্ষার পথ ফাইলটি তৈরি করতে ব্যবহৃত সিনট্যাক্সটি খুঁজে বের করতে হবে।

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

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


3

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

প্রথমত, কেবলমাত্র একটি সামঞ্জস্যপূর্ণ পরিভাষা থাকতে হবে: এই ধরণের পরীক্ষা (বৃহত বাহ্যিক নির্ভরতা, বাস্তব তথ্য) সাধারণত ইউনিট পরীক্ষা হিসাবে বিবেচনা করা হয় না, বরং একটি ইন্টিগ্রেশন বা সিস্টেম পরীক্ষা হিসাবে বিবেচিত হয় ।

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

  • কোডে দুই ধরণের পরীক্ষা আলাদা করুন (নামকরণের সম্মেলন, পৃথক প্রকল্প, ...)
  • পরীক্ষার দুটি স্যুটের মধ্যে কেবল একটিতে চালনার উপায় সরবরাহ করুন
  • সাধারণ বিল্ডগুলির সময় কেবল ইউনিট পরীক্ষা চালান
  • চাহিদা এবং সিআই (ক্রমাগত ইন্টিগ্রেশন) সার্ভারে ইন্টিগ্রেশন পরীক্ষা চালান

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

কীভাবে ডেটা রাখবেন:

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

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