मैंने सोचा कि मुझे समझ में आया कि एमबीयूनीट के समानांतर परीक्षण निष्पादन कैसे काम करता है, लेकिन जो व्यवहार मैं देख रहा हूं वह मेरी अपेक्षा से काफी अलग है कि मुझे संदेह है कि मुझे कुछ याद आ रहा है!एमबीयूनीट [समानांतर] और डिग्रीग्रीफेल समानता कार्य कैसे करते हैं?
मेरे पास यूआई परीक्षणों का एक सेट है जो मैं एक साथ चलाना चाहता हूं। सभी परीक्षण एक ही असेंबली में हैं, तीन अलग-अलग नामस्थानों में विभाजित हैं। सभी परीक्षण एक-दूसरे से पूरी तरह स्वतंत्र हैं, इसलिए मैं उन सभी को समानांतर निष्पादन के योग्य होना चाहता हूं।
इसके लिए मैं AssemblyInfo.cs में निम्नलिखित डाल:
[assembly: DegreeOfParallelism(8)]
[assembly: Parallelizable(TestScope.All)]
मेरे समझ गया था कि विधानसभा विशेषताओं के इस संयोजन परीक्षण [Parallelizable]
पर विचार किया जाएगा के सभी और कारण चाहिए, कि परीक्षण धावक निष्पादन के दौरान 8 धागे का उपयोग करना चाहिए। मेरे व्यक्तिगत परीक्षण [Test]
विशेषता के साथ चिह्नित हैं, और कुछ भी नहीं। उनमें से कोई भी डेटा संचालित नहीं है।
हालांकि, जो मैं वास्तव में देखता हूं वह सबसे अधिक 5-6 धागे का उपयोग होता है, जिसका अर्थ है कि मेरे परीक्षण रनों की तुलना में अधिक समय लेना चाहिए।
क्या मुझे कुछ याद आ रही है? क्या मुझे यह सुनिश्चित करने के लिए कुछ और करने की ज़रूरत है कि मेरे सभी 8 धागे धावक द्वारा उपयोग किए जा रहे हैं?
एनबी। मैं जिस धावक का उपयोग करता हूं उसके बावजूद व्यवहार वही है। जीयूआई, कमांड लाइन और टीडी.Net धावक सभी ऊपर वर्णित जैसा व्यवहार करते हैं, फिर मुझे लगता है कि मुझे कुछ याद आया है।
संपादित करें: टिप्पणियों में बताया गया है कि, मैं एमबीयूनीट (अपडेट 2 बिल्ड 3 9 7) के v3.1 चला रहा हूं। documentation बताता है कि असेंबली स्तर [parallelizable]
विशेषता उपलब्ध है, लेकिन यह अभी भी उपलब्ध नहीं होने के बावजूद ढांचे के v3.2 को संदर्भित करता प्रतीत होता है।
संपादित करें 2: आगे स्पष्ट करने के लिए, मेरी विधानसभा की संरचना इस प्रकार है:
assembly
- namespace
- fixture
- tests (each carrying only the [Test] attribute)
- fixture
- tests (each carrying only the [Test] attribute)
- namespace
- fixture
- tests (each carrying only the [Test] attribute)
- fixture
- tests (each carrying only the [Test] attribute)
- namespace
- fixture
- tests (each carrying only the [Test] attribute)
- fixture
- tests (each carrying only the [Test] attribute)
संपादित करें 3: ठीक है, मैं अब देखा है कि अगर मैं केवल कभी में एक स्थिरता चलाने एक समय, एक साथ चलने वाले परीक्षणों की अधिकतम संख्या हमेशा 8 होती है। जैसे ही मैं एकाधिक फिक्स्चर चुनता हूं, यह 5 या 6 तक गिर जाता है। यदि मैं दो फिक्स्चर की सामग्री लेता हूं (वर्तमान में उनमें प्रत्येक 12 परीक्षण होते हैं) और उन्हें छोड़ दें वही स्थिरता (उस एक स्थिरता में कुल 24 परीक्षणों के लिए) कि स्थिरता हमेशा 8 परीक्षणों को एक साथ चलाएगी।
ऐसा लगता है कि यह व्यक्तिगत परीक्षणों में कोई मुद्दा नहीं है, बल्कि असेंबली स्तर के गुण कैसे स्थिरता के लिए नीचे गिरते हैं, या परीक्षण धावक उन गुणों का उपभोग कैसे करता है।
इसके अतिरिक्त, मैंने यह भी देखा कि (दो फिक्स्चर चलाते समय) कि एक बार दो फिक्स्चर में से एक को पूरी तरह से निष्पादित किया गया था, तो धावक केवल एक ही स्थिरता को चलाने के लिए एक साथ परीक्षणों को निष्पादित करना शुरू कर देता है। मेरे लिए अभी, पहली स्थिरता को निष्पादित किया जाता है जब दूसरे स्थिरता में चलाने के लिए 7 परीक्षण शेष होते हैं। जैसे ही ऐसा होता है, परीक्षणों की संख्या पिछले 5 या 6 से अधिकतम 7 तक उपलब्ध हो जाती है।
के लिए मुझे लगता है कि विधानसभा स्तर पर चलाने योग्य विशेषता पहले से ही 3.1 –
3.1 के रूप में कार्यान्वित किया जाता है संस्करण मैं उपयोग कर रहा हूँ है।प्रलेखन (http://www.gallio.org/api/index.aspx) सुझाव देता है कि यह असेंबली स्तर पर किया जा सकता है। एकमात्र चीज जो मुझे नोटिस है वह है कि दस्तावेज संस्करण 3.2 का उल्लेख 3.1 नहीं है। लेकिन 3.2 अभी तक समाप्त नहीं हुआ है, जहां तक मैं देख सकता हूं। – BenA
जहां तक मैं कह सकता हूं, आप समानांतर एपीआई का सही ढंग से उपयोग कर रहे हैं। ध्यान रखें कि DegreeOfParallelism केवल उपयोग करने के लिए अधिकतम थ्रेड निर्दिष्ट करता है। ऐसे कई कारण हैं जिनके लिए टेस्ट नेस्टिंग स्ट्रक्चर, टेस्ट ऑर्डरिंग और टेस्ट निर्भरता जैसे समानांतर में परीक्षण नहीं चल सकते हैं। [दोहराना] जैसे कुछ संरचनाएं समानांतर नहीं हैं [समानांतर]। इसी तरह डेटा-संचालित परीक्षणों की व्यक्तिगत पंक्तियों को एक-दूसरे के संबंध में समानांतर नहीं किया जाता है। (यह जोड़ने के लिए एक शानदार सुविधा होगी!) यदि आप [DegreeOfParallelism (32)] सेट करते हैं तो क्या आप औसत पर चल रहे अधिक समवर्ती परीक्षण देखते हैं? –