2013-05-16 8 views
53

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

इस मुद्दे को दूर करने के लिए मैं प्रत्येक में 100 से कम मामलों के साथ अलग स्वीट बनाने की योजना बना रहा था। लेकिन इस मामले में मैं अन्य स्वीट्स से शुरू किए गए अन्य रिमोटर्स से कीवर्ड का उपयोग करने में सक्षम नहीं हूं। इसका उपयोग करने का एकमात्र तरीका रिमोटसेवर से डिस्कनेक्ट करना और प्रत्येक सूट में इसे दोबारा जोड़ना है - जो परीक्षण के उद्देश्य को हरा देगा।

मुझे यकीन नहीं है कि कोई इस परिदृश्य में आया है या नहीं। अगर कोई इस मुद्दे के समाधान के बारे में सोच सकता है तो मैं सराहना करता हूं।

अतिरिक्त जानकारी एक और बात है कि मदद का समाधान इस अगर यह (राज्य) के साथ एक पुस्तकालय है कि एक और सूट द्वारा में शुरू किया जाता है का एक कीवर्ड कॉल करने के लिए संभव है?

क्या मैं का उपयोग कर सकता हूं पुस्तकालय उदाहरण राइड का उपयोग करते समय? मैं पुस्तकालय को एक सूट में आयात कर रहा हूं, फिर लाइब्रेरी इंस्टेंस को अन्य सूट में प्राप्त करने का प्रयास करें। क्या यह संभव है?

मैं निम्नलिखित त्रुटि मिलती रहती है:

AttributeError: Remote instance has no attribute 'replace'

सुइट 1 में यह मैं क्या कर रहा हूँ है:

Import Library Remote ${verifix_xmlrpc_url} WITH NAME Verifix 
${lib}= BuiltIn.Get Library Instance Verifix 
Set Global Variable ${lib} 

सुइट 2 में:

${lib}.remove messages ${VenueNSDQ} 
+11

हाय अमोल, क्या आपके पास अब तक कोई सफलता मिली है? ईमानदार होने के लिए यह बहुत बेवकूफ लगता है कि टेस्ट सूट के तहत जुड़े कई परीक्षण मामले हैं, मैं कल्पना नहीं कर सकता कि सूट को इकाई के रूप में समझना संभव है। मुझे लगता है कि मैं टेस्ट सूट को विभाजित करने की सलाह दूंगा क्योंकि आप तार्किक इकाइयों में कर रहे हैं ताकि आप मुद्दों से बच सकें। क्या आपने टैग के साथ ऐसा करने की कोशिश की है? एक बार जब आप कुछ परीक्षण सूट विभाजित कर लेते हैं तो एक अतिरिक्त सुझाव पैबोट का उपयोग करना होगा। अगर आपको किसी भी टेस्ट रन – shicky

+0

एक मिलियन गंभीरता से चलाने के लिए कुछ साझा संसाधन की आवश्यकता है तो सावधान रहें? क्या परीक्षण के मामले ऑटो उत्पन्न होते हैं? परीक्षण केस फ़ाइल आकार का आकार क्या है? क्या आपको उपरोक्त सुझावों के साथ कोई सफलता मिली है? – Rao

+5

@shicky किसी को बेवकूफ कहने का कोई कारण नहीं है ... – Monkpit

उत्तर

0

ठीक है। सबसे पहले, मैं अजगर में प्रोग्राम नहीं करता हूं और मुझे यह भी नहीं पता कि आप किस प्रकार के कंप्यूटर का उपयोग कर रहे हैं या आपके कंप्यूटर के साथ कंप्यूटर की कितनी मेमोरी है या आपकी स्थिति के बारे में कुछ और है। तो यह सिर्फ सिस्टम प्रोग्राम लिखने और कई कंप्यूटरों पर काम करने से जुड़ी सामान्य जानकारी है।

इसके साथ कहा गया है: यदि आप विशाल डेटासेट चलाने जा रहे हैं या बड़ी संख्या में प्रोग्राम चलाने के लिए आपको जो करना है, उसे विभाजित करना होगा ताकि यह आपके द्वारा उपयोग किए जा रहे सिस्टम (सिस्टम) में फिट हो सके। यह पहला हिस्सा है। दूसरा भाग यह है कि यदि आप कार्यक्रमों में अन्य कार्यक्रमों या प्रणालियों में बात करना चाहते हैं तो आपको कुछ प्रकार के सामान्य स्मृति उपयोग को स्थापित करने की आवश्यकता है। मुझे पता है कि PHP में ऐसी चीज बनाई गई है, इसलिए मुझे यह मानना ​​है कि पायथन में भी ऐसी चीज है। आपने सामान्य स्मृति क्षेत्र स्थापित किया है और फिर विभिन्न कार्यक्रमों के बीच आगे और जानकारी भेजते हैं। आम तौर पर प्रत्येक कार्यक्रम और/या सिस्टम की पहचान करने के लिए टोकन के कुछ रूपों का उपयोग करना। इस तरह, आप चीजों को सेट कर सकते हैं ताकि एक बार परीक्षणों का एक सूट पूरा हो जाए, यह अगले सेट को शुरू करने के लिए कह सकता है और इस प्रकार आपके सिस्टम को नहीं ले जा सकता है या नहीं दबा सकता है।

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

यदि आप विंडोज़ बॉक्स/ओएस का उपयोग कर रहे हैं तो मैं ऑटोआईट को देखने का सुझाव दूंगा। एक बार पुराने कार्य समाप्त हो जाने के बाद ऑटोआईट आसानी से प्रोग्राम चलाने को देख सकता है और एक नया कार्य शुरू कर सकता है। यह आपको अपने सिस्टम के साथ-साथ रिमोट सिस्टम पर पूर्ण नियंत्रण की अनुमति देता है और जिसे आप करने की कोशिश कर रहे हैं स्वचालित कार्यों को स्वचालित करने में मदद के लिए विकसित किया गया था।मैंने पाया (प्रयोग करके) कि ऑटोआईट का उपयोग यूनिक्स/लिनक्स बॉक्स जैसे मैक और अन्य के साथ भी किया जा सकता है। यद्यपि आपके पास केवल तब ही कमांड हैं जो आप Windows सुविधाओं तक पहुंच के बजाय भेजते हैं।

यदि आप पाइथन के साथ अधिक कुशल हैं कि आप उपर्युक्त इसका उपयोग कर सकते हैं - तो आपके लिए अधिक शक्ति। भले ही आपने यह पूछा है कि यह दो साल हो गया है - मुझे उम्मीद है कि यह आपके प्रयासों में आपकी मदद करेगा। :-)

2

मुझे अजगर के बारे में कोई विशिष्ट जानकारी नहीं है, लेकिन आप जो भी प्रयास करना चाहते हैं वह एक अलग प्रक्रिया के रूप में प्रत्येक टेस्ट केस को कताई कर रहा है। यह आपको प्रत्येक प्रक्रिया से स्मृति को पुनर्प्राप्त करने की अनुमति देगा, और यह आपको एक मशीन पर सुरक्षित रूप से अपने मिलियन परीक्षण मामलों को चलाने की अनुमति दे सकता है।

आम तौर पर, जब किसी प्रोग्राम को ओएस से अधिक मेमोरी की आवश्यकता होती है, तो यह इसे लेता है, लेकिन यह इसे बाहर होने तक वापस नहीं दे सकता है। यह संभावना है कि आपकी प्रक्रिया क्यों खत्म हो जाती है।

त्वरित प्रक्रियाएं जिन्हें आप स्पिन कर सकते हैं और फिर मार सकते हैं, इस स्मृति समस्या को कम कर देंगे .... और फिर यह एक अलग मशीन पर पूरी तरह से आरएसएच के माध्यम से इन परीक्षण मामलों में से प्रत्येक को चलाने के लिए वहां से एक बहुत छोटा कदम है।

मुझे आशा है कि थोड़ा सा मदद मिलेगी।

संबंधित मुद्दे