अपने स्वयं के कोड का उपयोग करके अपने स्वयं के लेखों में प्रकाशित परिणामों को आसानी से कैसे पुन: प्रस्तुत करें


15

मैंने एक कार्यक्रम / पुस्तकालय लिखा था जिसका उपयोग मैं एक लेख में परिणाम प्राप्त करने के लिए करता था। (यहाँ यह है , लेकिन मेरा प्रश्न सामान्य है।) मेरे पास ऐसे परीक्षण हैं जो मैं नियमित रूप से चलाता हूं ctest(इसे चलाने में कुछ मिनट लगते हैं)। लेख में कुछ तालिकाओं या आंकड़ों को पुन: पेश करने के लिए, मुझे एक स्क्रिप्ट या एक साधारण ड्राइवर प्रोग्राम का निर्माण करना होगा, जो शायद 10 मिनट, कभी-कभी अधिक चलता है, इसलिए मैं नियमित टेस्ट सूट के इस हिस्से को नहीं रखना चाहता। उसी समय, मैं यह सुनिश्चित करना चाहता हूं कि लेख से परिणाम हो सकते हैं:

  • बाद में पुन: पेश किया
  • सुनिश्चित करें कि मैं पुस्तकालय को विकसित करने के बाद भी वे वही / सही परिणाम देते हैं

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

मैंने एक पायथन स्क्रिप्ट की भी कोशिश की, जो लेख से सटीक आंकड़े / तालिकाओं की गणना करती है। लाइब्रेरी के अपडेट के बाद ऐसी स्क्रिप्ट आमतौर पर काम करना बंद कर देती है, क्योंकि इसे नियमित रूप से नहीं चलाया जा रहा है (बहुत समय लगता है)।

मेरे पास जो सबसे अच्छा तरीका आया है, वह फोरट्रान (या सी / सी ++) उदाहरण है, जिसे नियमित रूप से संकलित किया जाएगा (पुस्तकालय के भाग के रूप में), लेकिन नियमित परीक्षण सूट में नहीं चलाया जाएगा। इस तरह, कम से कम मुझे पता है कि यह ठीक संकलन करता है (और इस तरह उम्मीद भी चलती है)। और मैं कुछ सरल (छोटे) उदाहरण का परीक्षण एक नियमित परीक्षण सूट के हिस्से के रूप में करूँगा।

इस समस्या से निपटने के लिए इष्टतम तरीके क्या हैं?


2
महान सवाल, मेरी पहली प्रतिक्रिया यह है कि आपको अपने परीक्षणों को त्वरित प्रतिगमन में विभाजित करना चाहिए जो कि तेजी से चलाए जा सकते हैं और हर प्रतिबद्ध और लंबे समय तक प्रतिगमन से पहले किए जाते हैं जिन्हें आप एक निरंतर एकीकरण प्रयास के भाग के रूप में उपयोग करना चाहते हैं। क्या आप विशेष रूप से उस स्थिति में हैं जहां आपके पास केवल पूर्व किस्म के परीक्षण हैं और अभी तक उन्हें विभाजित नहीं किया है?
एरन अहमदिया

मेरे पास बहुत सारे परीक्षण हैं जो जल्दी से चलते हैं, यहां देखें: github.com/certik/hfsolver/tree/master/src/tests , लेकिन मुझे नहीं पता कि लेख के लिए वास्तविक गणना कैसे संभालना है (उदाहरण के लिए प्रत्येक तालिका के लिए 10 मिनट / आंकड़ा आसानी से युगल कुल घंटे देता है)।
ओंडेयज řertík

2
निरंतर एकीकरण सर्वर का उपयोग करके लंबे परीक्षण स्वचालित रूप से रात (या साप्ताहिक, मासिक, आदि) पर चलाएं। चूँकि आपको किसी भी चीज़ पर ध्यान नहीं देना है, लेकिन परिणाम, आपको परवाह नहीं होगी कि उन्हें कितना समय लगेगा।
डेविड केचेसन 20

जवाबों:


6

Deal.II में, हमारे पास एक टेस्टसुइट है जो एक नियमित यूनिक्स मेकफाइल द्वारा संचालित है। इसमें एक डिफ़ॉल्ट लक्ष्य है जो सभी सामान्य परीक्षणों को चलाता है, और महंगे परीक्षणों के लिए एक अलग लक्ष्य है। प्रत्येक परीक्षण चलाना एक सामान्य नियम का उपयोग करके किया जाता है, लेकिन डिफ़ॉल्ट लक्ष्य केवल कुछ परीक्षणों के लिए सामान्य नियम को बुलाता है और महंगा लक्ष्य इसे महंगे परीक्षणों के लिए कहता है। क्योंकि यह सब एक सामान्य नियम का उपयोग करके किया गया है, इसे किसी भी समय अद्यतित होना चाहिए; तारीख से बाहर हो सकता है केवल परीक्षणों के नामों की सूची हो सकती है।

अद्यतन: ऊपर दिया गया पाठ 2012 में सही था। 2014 के बाद से, सौदा। II परीक्षण क्यूटेस्ट पर आधारित है, लेकिन सामान्य विचार मान्य है।


धन्यवाद! यहाँ डॉक्स का लिंक दिया गया है: Dealii.org/7.2.0/development/testsuite.html#regression_tests और यहाँ "सामान्य परीक्षण" का परिणाम है: dealii.org/cgi-bin/regression-quick.pl और यहाँ "महंगे परीक्षण": Dealii.org/cgi-bin/regression.pl , क्या मुझे यह सही लगा? तो आप प्रत्येक संशोधन पर "सामान्य परीक्षण" चलाते हैं और "महंगे परीक्षण" केवल हर संशोधन के?
ओन्दोज Čertík

काफी नहीं। महंगे परीक्षणों के परिणाम आमतौर पर वेबसाइट पर पोस्ट नहीं किए जाते हैं।
वोल्फगैंग बैंगर्थ

तो आप उन्हें मैन्युअल रूप से चलाते हैं प्रत्येक रिलीज़ से पहले कहते हैं? उन्हें चलने में कितना समय लगता है? मुझे आपका दृष्टिकोण पसंद है।
ओन्ड'ज kertík

1
हाँ, मैन्युअल। हर बार एक समय में, सुनिश्चित करने के लिए रिलीज होने से पहले। कुछ परियोजनाओं के लिए उन्हें एक घंटे या उससे अधिक का समय लगता है, लेकिन क्योंकि वे पुस्तकालय के केवल एक छोटे हिस्से का परीक्षण करते हैं (वे ज्यादातर ऐड-ऑन परियोजनाओं का सौदा करने के लिए परीक्षण करते हैं। II) यह हमेशा हर संशोधन के साथ चलने लायक या संभव नहीं होता है।
वोल्फगैंग बैंगर्थ

क्या आपके पास कोई समानांतर परीक्षण है जो केवल सुपर कंप्यूटर पर चल सकता है, उदाहरण के लिए, किसी भी बड़े पैमाने पर परीक्षण के खिलाफ p4est?
एरन अहमदिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.