2010-10-28 6 views
14

मुझे पता है कि नियमित एमएस-टेस्ट यूनिट परीक्षण परीक्षण समाधान में .testresults फ़ाइल में समानांतरस्टाउंट गुण निर्दिष्ट करके बहु-कोर मशीन (पाठ्यक्रम की चेतावनी के साथ) पर समानांतर किया जा सकता है। इस तरह,विजुअल स्टूडियो 2010 में डेटा-संचालित यूनिट परीक्षण को समानांतर कैसे करें?

<Execution parallelTestCount="1"> 
    <TestTypeSpecific /> 
    <AgentRule name="Execution Agents"></AgentRule> 
</Execution> 

अधिक पर: http://blogs.msdn.com/b/vstsqualitytools/archive/2009/12/01/executing-unit-tests-in-parallel-on-a-multi-cpu-core-machine.aspx

हालांकि, मैं एक डेटा पर ही आधारित परीक्षण, कुछ इस तरह है, यह सिर्फ एक परीक्षण है, लेकिन इनपुट एक csv और से आती है के माध्यम से परीक्षण के माध्यम से रिकॉर्ड के 1000s चलाता है।

[DeploymentItem("InputDataRows.csv"), Timeout(37800000), DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\InputDataRow.csv", "InputDataRow#csv", DataAccessMethod.Sequential)]     
[TestMethod] 
public void RunProcessing() 
{ 
    int userId = Convert.ToInt32(TestContext.DataRow[0].ToString()); 
    int connId = Convert.ToInt32(TestContext.DataRow[1].ToString()); 
    string xml = TestHelper.GetDataFromDb(userId, connId); 
    a = doStuffA(xml); 
    b = doStuffB(xml); 
    Assert.IsTrue(a == b); 
} 

क्योंकि यह एक धीमी प्रक्रिया है, मैं से देख रहा हूँ इस इकाई परीक्षण parallelizing।

विशेषता पर Sequential enum डेटा पर पहुंचने का तरीका है, दूसरा विकल्प यादृच्छिक है, जो अभी भी धारावाहिक है और समानांतर नहीं है।

+0

आप किस भाषा का उपयोग कर रहे हैं? सी#? –

+0

सी #, हाँ, संभोग! – Vin

+0

नेट का कौन सा संस्करण आप उपयोग कर रहे हैं? साथ ही, क्या आप टेस्टकॉन्टेक्स्ट को सेट करने के तरीके पर कुछ विवरण प्रदान कर सकते हैं? –

उत्तर

-1

जैसा कि मुझे पता है: परीक्षण में व्यक्तिगत डेटा पंक्तियां समानांतर में नहीं चलती हैं। लेकिन यदि आपके पास एकाधिक यूनिट परीक्षण हैं, तो वे समानांतर में चलते हैं।

0

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

int userId = Convert.ToInt32(TestContext.DataRow[0].ToString()); 
int connId = Convert.ToInt32(TestContext.DataRow[1].ToString()); 
string xml = TestHelper.GetDataFromDb(userId, connId); 
var rows = xml.Split('\n'); 

Parallel.ForEach(rows, (row) => 
{ 
    var a = doStuffOnRowA(row); 
    var b = doStuffOnRowB(row); 
    Assert.AreEqual(a, b); 
}); 
0

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

https://msdn.microsoft.com/en-us/library/bb166508.aspx

या

https://msdn.microsoft.com/en-us/library/bb166817.aspx

है कि हम बनाया निम्नलिखित किया कस्टम उपकरण:

  1. स्प्लिट केवल एक पंक्ति वाले एकाधिक csv फ़ाइलें में सीएसवी बाहर।
  2. प्रत्येक नए जेनरेट किए गए सीएसवी के लिए एक व्यक्तिगत परीक्षण उत्पन्न करें।

जब ये परीक्षण उत्पन्न हुए, तो हमने उन पर विशिष्ट परीक्षण विशेषताओं को रखा, ताकि हम केवल उस विशेषता के साथ परीक्षण चलाने के लिए निर्दिष्ट कर सकें।

यह शीर्ष पर लगता है, लेकिन यदि आप कस्टम टूल बनाने के लिए अच्छी नौकरी करते हैं, तो यह वास्तव में एक बहुत ही आसान प्रक्रिया है।

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