मुझे परीक्षण डेटा कहां संग्रहीत करना चाहिए?


9

मेरे पास छोटे यूनिट परीक्षण हैं जो वास्तविक डेटा सेट से छोटे स्निपेट का उपयोग करते हैं। मैं भी कारणों की एक भीड़ के लिए पूर्ण डेटा सेट के खिलाफ अपने कार्यक्रम का परीक्षण करना चाहूंगा। एकमात्र समस्या यह है कि एक एकल वास्तविक डेटासेट ~ 5GB है। मुझे Git रिपॉजिटरी को स्टोर करने के लिए कोई हार्ड नंबर नहीं मिला है लेकिन यह बहुत ज्यादा लगता है।

इस प्रोग्रामर के पोस्ट के अनुसार मुझे अपने सभी डेटा को रिपॉजिटरी में प्रोजेक्ट का परीक्षण करने के लिए आवश्यक रखना चाहिए।

मेरी टीम ने जो समाधान अपनाया है, वह यह है कि परियोजना में एक फाइल है जिसमें एक नेटवर्क संलग्न फाइल सिस्टम का एक पथ है जो हमारे परीक्षण डेटा को रखता है। फ़ाइल को नजरअंदाज कर दिया गया है।

मुझे लगता है कि यह दो कारणों से एक अपूर्ण समाधान है। जब NAS काम नहीं कर रहा है, तो धीमा है, या हम पूरी परीक्षा नहीं चला सकते हैं। दूसरा कारण यह है कि जब कोई पहली बार एक रिपॉजिटरी को क्लोन करता है तो यूनिट परीक्षण विफल हो जाते हैं इसलिए उन्हें यह पता लगाना होता है कि किसी निश्चित नाम के साथ चीजों को कैसे माउंट किया जाए और परीक्षण पथ फ़ाइल को बनाने के लिए सिंटैक्स का उपयोग किया जाए।

इसलिए मेरा प्रश्न दो गुना है। संशोधन नियंत्रण में स्टोर करने के लिए कितना डेटा है?

बड़ी मात्रा में परीक्षण डेटा को संभालने का एक बेहतर तरीका क्या है?


1
परीक्षण डेटा कितनी बार बदलने की संभावना है?
रॉबर्ट हार्वे

यह शायद कभी नहीं बदलेगा लेकिन अधिक डेटा जोड़ा जा सकता है क्योंकि हम बग को पैच करते हैं या सुविधाएँ जोड़ते हैं।
एलेक्सलॉर्ड टॉर्सेन

1
कुछ ट्रेडऑफ यहां खोजे गए हैं: stackoverflow.com/q/984707
रॉबर्ट हार्वे

1
चाहे जो भी पकड़ रखता हो, क्या आपने इसे इस दृष्टिकोण से माना है कि लाइव डेटा से एक पूर्ण डेटासेट एक परीक्षण डेटासेट नहीं है (जिसे सफलता और विफलता दोनों राज्यों का परीक्षण करने के लिए डिज़ाइन किया गया है) और अकेले इसे आयोजित करने के लिए एक मजबूत तर्क हो सकता है। रिपॉजिटरी के बाहर?
जेम्स स्नेल

यूनिट परीक्षणों में उस डेटा का उपयोग नहीं किया जाना चाहिए। यह बोधगम्य है कि एकीकरण परीक्षण हो सकता है।
raptortech97 14

जवाबों:


9

बिल्ड चेन में बड़ी फ़ाइलों को कैसे हैंडल करें

मैं एक बिल्ड टूल का उपयोग करना पसंद करता हूं जो निर्भरता प्रबंधन करता है - जैसे मावेन या ग्रेडल। फ़ाइलों को एक वेब रिपॉजिटरी में संग्रहीत किया जाता है, और यह निर्भरता का सामना करने पर उपकरण स्वचालित रूप से डाउनलोड करने और कैशिंग का ध्यान रखता है। यह उन लोगों के लिए अतिरिक्त सेटअप (NAS कॉन्फ़िगरेशन) को भी समाप्त करता है जो परीक्षण चलाना चाहते हैं। और यह डेटा को काफी दर्द रहित बनाता है (यह संस्करण है)।

संशोधन नियंत्रण में रखने के लिए बहुत बड़ा है

एक बड़ा ग्रे क्षेत्र है। और अगर आप तय करते हैं कि कुछ आरसीएस में नहीं है, तो आपके विकल्प क्या हैं? यदि आप RCS और बाइनरी रेपो (मावेन शैली) के बीच अपने विकल्पों को सीमित करते हैं तो यह एक आसान निर्णय है।

आदर्श रूप से, आप केवल उस RCS सामान में चाहेंगे जो मानवीय रूप से संपादन योग्य, विचारणीय है, या जहाँ आप इतिहास को ट्रैक करना चाहते हैं। कुछ भी जो एक निर्माण या किसी अन्य प्रकार के स्वचालन का उत्पाद है, निश्चित रूप से वहां से संबंधित नहीं है। आकार एक बाधा है, लेकिन मुख्य एक नहीं है - एक विशाल स्रोत फ़ाइल (बुरा अभ्यास) निश्चित रूप से स्रोत नियंत्रण में है। एक छोटा संकलित बाइनरी नहीं करता है।

डेवलपर सुविधा के लिए समझौता करने के लिए तैयार रहें।


3

जब NAS काम नहीं कर रहा है, तो धीमा है, या हम पूरी परीक्षा नहीं चला सकते हैं।

जाहिर है, यह केवल NAS से आपके स्थानीय ड्राइव पर 5GB की प्रतिलिपि बनाकर हल किया जा सकता है। लेकिन मैन्युअल रूप से ऐसा करने की आवश्यकता नहीं है।

दूसरा कारण यह है कि जब कोई पहली बार एक रिपॉजिटरी को क्लोन करता है तो यूनिट परीक्षण विफल हो जाते हैं इसलिए उन्हें यह पता लगाना होता है कि किसी निश्चित नाम के साथ चीजों को कैसे माउंट किया जाए और परीक्षण पथ फ़ाइल को बनाने के लिए सिंटैक्स का उपयोग किया जाए।

आप एक सरल शेल स्क्रिप्ट प्रदान कर सकते हैं जो वास्तव में ऐसा करता है - एक निश्चित नाम के साथ एनएएस को माउंट करें, और अपने स्थानीय ड्राइव पर डेटा को कॉपी करें जब यह पहले से ही नहीं है, या जब एनएएस पर डेटासेट स्थानीय डाटासेट की तुलना में नया है। सुनिश्चित करें कि आपकी इकाई परीक्षणों के प्रारंभिक चरण के दौरान स्क्रिप्ट स्वचालित रूप से चलेगी।

बेशक, जब न केवल उन डेटा सेटों में से एक है, बल्कि आपके स्रोत कोड रिपॉजिटरी के बाहर बाहरी फ़ाइलों के लिए निर्भरता का एक पूरा गुच्छा है, तो @ptyx द्वारा उल्लिखित जैसे उपकरण एक बेहतर समाधान हो सकता है।


3

... जब कोई पहली बार एक रिपॉजिटरी को क्लोन करता है तो यूनिट परीक्षण विफल हो जाते हैं इसलिए उन्हें यह पता लगाना होता है कि एक निश्चित नाम के साथ चीजों को कैसे माउंट किया जाए और परीक्षण पथ फ़ाइल बनाने के लिए सिंटैक्स का उपयोग किया जाए।

सबसे पहले, बस एक सुसंगत शब्दावली होनी चाहिए: इस तरह के परीक्षण (बड़े बाहरी निर्भरता, वास्तविक डेटा) को आमतौर पर एक इकाई परीक्षण नहीं माना जाता है, बल्कि एक एकीकरण या प्रणाली परीक्षण होता है

एक व्यावहारिक नोट पर: मुझे इकाई और एकीकरण परीक्षणों को अलग रखने के लिए एक अच्छा अभ्यास लगता है , क्योंकि उनके पास अलग-अलग स्ट्रेंथ और कमजोरियां हैं।

  • कोड में परीक्षणों के दो प्रकारों को अलग करना (नामकरण सम्मेलन, अलग परियोजना, ...)
  • परीक्षणों के दो सूटों में से केवल एक को चलाने का एक तरीका प्रदान करें
  • सामान्य बिल्ड के दौरान केवल यूनिट परीक्षण चलाएं
  • मांग पर एकीकरण परीक्षण चलाते हैं, और एक CI (निरंतर एकीकरण) सर्वर पर

इस तरह, स्थानीय बिल्ड तेज और विश्वसनीय हैं (थोड़ा / कोई बाहरी निर्भरता नहीं), और एकीकरण परीक्षण बीफ़ सीआई सर्वर द्वारा नियंत्रित किया जाता है। यह आपके द्वारा बताई गई समस्या से बचा जाता है।

कैसे डेटा रखने के लिए के रूप में:

एक अच्छा विकल्प कुछ प्रकार का विरूपण साक्ष्य प्रबंधन है जैसे कि ptyx का उत्तर वर्णन करता है। एक अन्य परीक्षण डेटा को एक अलग भंडार में रखना होगा । डेटा वैसे भी मुख्य बिल्ड के साथ जारी नहीं किया जाता है, और एक अलग रेपो होने से सभी को स्रोत कोड के साथ परीक्षण डेटा लाने के लिए मजबूर करने से बचा जाता है। दूसरे शब्दों में, अपने आर्टिफेकट प्रबंधन :-) के रूप में एक दूसरे रेपो का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.