5

प्रसंग

मैं क्या रॉय Osherove कॉल का एक बहुत बड़ा प्रशंसक हूँ "फास्ट एकीकरण परीक्षण।" यह एकीकरण परीक्षण है कि:"फास्ट" WCF सेवा के एकीकरण परीक्षण

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

समस्या

कई WCF सेवाओं के साथ एक VS 2010 समाधान को देखते हुए एकीकरण परीक्षण किया जाना है, मैं कैसे सबसे अच्छा इस बारे में जाने के लिए शोध किया गया है। परीक्षण सेटअप की मेरी और आवश्यकताएं हैं:

  • डब्ल्यूसीएफ सेवाओं को घोंसला दिया जाता है। यही है, एक सेवा तेजी से एकीकरण परीक्षण के दौरान एक और कॉल कर सकते हैं।
  • डब्ल्यूसीएफ स्टैक पूरी तरह से या अधिकतर परिचालन होना चाहिए।
    • सेवा अनुबंध प्रविष्टि बिंदु को कॉल करना यूनिट परीक्षण के लिए सीधे ठीक हो सकता है, लेकिन एकीकरण परीक्षण के इस रूप के लिए नहीं।
    • REST और BasicHttp बाइंडिंग काम करना चाहिए, और अधिमानतः wsHttp बाइंडिंग भी करना चाहिए।
  • Web.config
    • web.config को बदलने (XDT) प्रत्येक WCF परियोजना के परिचालन किया जाना चाहिए, भले ही एक तैनाती या इस परीक्षण को प्राप्त करने के घटित नहीं हो सकता है।
    • यूनिट परीक्षण उपकरण, जैसे कि एमएसटेस्ट या एनयूनीट, को एक समेकित web.config की आवश्यकता होती है जो परीक्षण के दौरान होस्ट की जाने वाली सभी सेवाओं का प्रतिनिधित्व करती है।
  • डब्ल्यूसीएफ सेवा होस्टिंग 32 बिट या 64 बिट हो सकता है।
  • WCF सेवा की मेजबानी हो सकता है या तो इकाई परीक्षण उपकरण के साथ-स्मृति में, या बाहर के प्रक्रिया कैसिनी, आईआईएस एक्सप्रेस, आदि के रूप में इस तरह के मेजबान के माध्यम से
    • मैं निश्चित रूप से एक in- की ओर झुकाव रहा हूँ स्मृति दृष्टिकोण, क्योंकि यह परीक्षण सिंक्रनाइज़ेशन मुद्दों को सरल बनाता है। दूसरे शब्दों में, मेरी कुछ डब्ल्यूसीएफ सेवाएं असीमित रूप से निष्पादित होती हैं और के बाद पूर्ण हो जाती हैं डब्लूसीएफ प्रतिक्रिया पहले से ही पाठ स्थिरता पर भेजी जा चुकी है।इन-मेमोरी दृष्टिकोण के साथ मैं टेस्ट फिक्स्चर Monitor.Wait कर सकता हूं ताकि यह सुनिश्चित किया जा सके कि परीक्षण से पहले एसिंक कार्य पूरा हो गया है। बहु-प्रक्रिया होस्टिंग और परीक्षण के लिए, मुझे एक ही सिंक्रनाइज़ेशन प्राप्त करने के लिए फ़ाइल सिस्टम और फ़ाइल सिस्टम ईवेंट पर भरोसा करना चाहिए।

जवाब?

मैं अब तक अपने निष्कर्षों को सूचीबद्ध करना चाहता हूं, और पूछता हूं कि मैं कौन सा टूल (ओं) या तकनीक खो रहा हूं। फिर, यह प्रश्न विजुअल स्टूडियो 2010 से संबंधित है, हालांकि 2012 के बारे में अतिरिक्त टिप्पणियां आपका स्वागत है।

में स्मृति समाधान के लिए, ऐसा लगता है वहाँ दो बुनियादी विकल्प हैं। या तो प्रत्येक सेवा के लिए एक custom ServiceHost का एक उदाहरण का उपयोग करें, या एक variety of other self-hosting tools में से एक का उपयोग करें। उस दूसरे लिंक में, मूल प्रश्न उत्पादन होस्टिंग के बारे में था - लेकिन सूचीबद्ध सूचीबद्ध टूल स्वयं या मेमोरी होस्टिंग में सक्षम हैं।

CassiniDev के लेखक, ऊपर दूसरी कड़ी में उल्लेख किया है, सुझाव दिया जब लूपबैक परीक्षण (स्थानीय होस्ट) पर्याप्त नहीं है CassiniDev प्रयोग किया जाता है। मेरे मामले में, मुझे संदेह है कि लूपबैक-परीक्षण ठीक है। वह लेखक सुझाव देता है कि जब लूप-बैक परीक्षण ठीक है, तो उसके WebDevServer code का उपयोग करने के लिए एक और हल्का कहानी है। अगर मैं सही ढंग से समझता हूं, तो वेबडिवसेवर कोड वास्तव में आंतरिक विजुअल स्टूडियो कोड है जिसे वह टेस्ट-फ़िक्स्चर स्वयं-होस्टिंग उद्देश्यों के लिए प्रतिबिंबित और संशोधित करता है।

ऑन-बॉक्स (बहु-प्रक्रिया) समाधान के लिए, मुझे लगता है कि Cassini fit the 64 bit requirement बनाने का एक तरीका है। अन्यथा, आईआईएस एक्सप्रेस या आईआईएस के लिए, मैं डेवलपर-टू-डेवलपर कॉन्फ़िगरेशन समस्याओं के बारे में निश्चित नहीं हूं। आम तौर पर जब कोई डेवलपर आईआईएस एक्सप्रेस या आईआईएस को एक विशिष्ट मशीन पर कॉन्फ़िगर करता है, तो आमतौर पर अन्य डेवलपर्स को उस कॉन्फ़िगरेशन जानकारी के बिना छोड़ दिया जाता है और परीक्षण बॉक्स को अपने स्वयं के बॉक्स पर काम करने के लिए संघर्ष कर रहे हैं। मैंने डेवलपर्स को स्क्रिप्ट का उत्पादन किया है जो इस तरह के कॉन्फ़िगरेशन को स्वचालित करने के लिए appcmd.exe का उपयोग करते हैं, लेकिन सभी अक्सर ऐसी स्क्रिप्ट खराब रखी जाती हैं। मैं उस परिदृश्य से बचने की कोशिश करना चाहता हूं।

किसी भी परिदृश्य में, मुझे लगता है कि automating the web.config transform (XDT), without a deploy, is discussed here के लिए मेरा विकल्प है।

ठीक है, बेहतर रणनीतियों और रणनीति क्या हैं? मैं जानना चाहता हूं ...

+2

बहुत बढ़िया सवाल! मैं भी जवाब जानना चाहता हूं। –

+0

क्या यह रुचि है? http://msdn.microsoft.com/en-us/library/vstudio/hh323698%28v=vs.100%29.aspx – flup

+0

बस यह कैसे उपयोगी है? परीक्षण गैर-डीवी द्वारा उद्देश्य के लिए किया जाना चाहिए और यदि यह डीवी द्वारा निश्चित रूप से उस मशीन पर किया जाना चाहिए जिस पर आपने इसे विकसित किया है, विशेष रूप से जब सिस्टम में 'संचार' शामिल होता है। तुलनात्मक रूप से इसीलिए हमारे पास उत्पाद को संकलित करने के लिए 'बिल्ड मशीन' है। क्या आप का वर्णन ** नहीं ** एकीकरण परीक्षण लेकिन देव परीक्षण – MickyD

उत्तर

1

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

https://codereview.stackexchange.com/questions/33379/make-wcf-service-testable?newreg=016e2809b68248958ff3c45973efe643

हालांकि, मैं कितनी दूर इस गाइड WCF कार्यक्षमता का पूरा ढेर के लिए परीक्षण के विकास के संदर्भ में ले जाएगा के लिए ज़िम्मेदार नहीं हैं।

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