2008-08-21 8 views
5

मैं आंशिक ट्रस्ट वातावरण में .NET कोड के एक निश्चित टुकड़े के व्यवहार का परीक्षण करना चाहता हूं। इसे स्थापित करने का सबसे तेज़ तरीका क्या है? यह मानने के लिए स्वतंत्र महसूस करें कि मैं (और अन्य पाठक) कुल सीएएस नोबस हैं।आंशिक ट्रस्ट वातावरण में .NET कोड का परीक्षण

@ निक: उत्तर के लिए धन्यवाद। हां, प्रश्न में उपकरण स्पष्ट रूप से अप्रबंधित कोड के लिए है। मैंने अपने प्रश्न में "प्रबंधित" नहीं कहा था, और यह नहीं माना जाना चाहिए कि लोग इसे ".NET" टैग से अनुमानित करेंगे।

उत्तर

3

यह एक उत्कृष्ट सवाल है, खासकर एक टीडीडी बिंदु से और विभिन्न ट्रस्ट परिदृश्यों के तहत कोड को मान्य करना।

मुझे लगता है कि जिस तरह से मैं इस दृष्टिकोण चाहते हैं की तर्ज पर कुछ हो सकता है -

  • AppDomain.CreateDomain() अधिभार आप एक में पारित करने के लिए अनुमति देता है का उपयोग कर मेरी TDD कोड में एक AppDomain बनाएं PermissionSet। PermissionSet का निर्माण उन विभिन्न ट्रस्ट परिदृश्यों से मेल खाने के लिए किया जाएगा जिन्हें आप परीक्षण करना चाहते हैं।

  • लोड विधानसभा एप्लिकेशन डोमेन

  • में परीक्षण के अंतर्गत तर्क युक्त एप्लिकेशन डोमेन प्रकार/कॉल तरीकों आदि, जाल सुरक्षा अपवाद

कि तरह थोड़े कुछ के उदाहरण बनाएँ। मेरे पास अभी तक अवधारणा का प्रमाण खटखटाए जाने का समय नहीं है।

1

Microsoft Application Verifier का उपयोग करें।

AppVerifier निर्धारित करने के लिए मदद करता है:

  • जब आवेदन एपीआई सही ढंग से उपयोग है:। (असुरक्षित TerminateThread एपीआई, थ्रेड स्थानीय संग्रह (TLS का सही उपयोग) एपीआई, ओ आभासी स्थान जोड़तोड़ का सही उपयोग (। , VirtualAlloc, MapViewOfFile)। उदाहरण के लिए
  • आवेदन संरचित अपवाद हैंडलिंग का उपयोग कर पहुँच उल्लंघन छुपा चाहे कर रहा है।
  • आवेदन अमान्य हैंडल का उपयोग करने के प्रयास कर रहा है या नहीं।
  • whethe आर ढेर में स्मृति भ्रष्टाचार या मुद्दे हैं।
  • चाहे एप्लिकेशन कम संसाधनों के तहत स्मृति से बाहर हो।
  • चाहे महत्वपूर्ण वर्गों का सही उपयोग हो रहा हो।
  • चाहे प्रशासनिक वातावरण में चल रहा कोई एप्लिकेशन कम विशेषाधिकार वाले वातावरण में अच्छा प्रदर्शन करेगा।
  • क्या सीमित उपयोगकर्ता के रूप में एप्लिकेशन चलने पर संभावित समस्याएं हैं या नहीं।
  • चाहे थ्रेड के संदर्भ में भावी फ़ंक्शन कॉल में अनियमित चर हो।
1

आपको .NET Framework कॉन्फ़िगरेशन टूल को देखना चाहिए। इसमें .NET SDK में है, और आप इसे यहाँ चल रहे पर निर्देश प्राप्त कर सकते हैं ... http://msdn.microsoft.com/en-us/library/2bc0cxhc.aspx

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

आप अपना खुद का कस्टम अनुमति सेट कर सकते हैं अनुमति भी सेट करें, लेकिन अब इसे सरल रखें।

चुनें कि क्या आप अपना नया कोड समूह मशीन-व्यापी दायरे में मौजूद हैं या सिर्फ अपने उपयोगकर्ता खाते के लिए मौजूद हैं, और मशीन या उपयोगकर्ता नीति स्तर के अनुसार ड्रिल करें। आपको _All _ Code_ नामक एक कोड समूह दिखाई देगा। , कि एक के अंदर एक बच्चा कोड समूह बनाएं राइट क्लिक करें और का चयन नई ...

उसे एक नाम दें द्वारा, कहते हैं कि PartialTrustGroup, उसके बाद अगला

आपको इस समूह के लिए सदस्यता स्थिति निर्दिष्ट करनी है, और विभिन्न प्रकार हैं। मैं अपनी मशीन पर पार्टियल ट्रस्ट नामक एक विशिष्ट फ़ोल्डर बनाना चाहता हूं, और उसके बाद एक यूआरएल सदस्यता स्थिति बना देता हूं जो मेल खाता है। तो, मेरी URL ऐसा दिखाई देगा ... file: // c:/उपयोगकर्ताओं/मार्टिन/दस्तावेज/partialtrust/*

* उस पथ के नीचे किसी भी विधानसभा को पकड़ने के लिए एक वाइल्डकार्ड है। अगला पर क्लिक करें।

अब आप अपने नए कोड समूह के लिए अनुमति सेट चुन सकते हैं। अभी के लिए, इंटरनेट चुनें। यह जावा एपलेट सैंडबॉक्स के समान, एक प्रतिबंधक सेट है। पर क्लिक करें अगला और समाप्त करें।

अब अपने नए कोड-समूह पर राइट-क्लिक करें और गुण चुनें। सामान्य टैब में, सुनिश्चित करें कि शीर्षतम चेकबॉक्स चयनित है, फिर ठीक क्लिक करें।

अब, आपके द्वारा निर्दिष्ट यूआरएल के नीचे किसी स्थान से लोड की गई किसी भी .NET असेंबली में इंटरनेट अनुमति सेट लागू होगा। कुछ सुरक्षा अपवाद प्राप्त करने की अपेक्षा करें यदि आपने कम कोड सेट सावधानी से निरीक्षण करने के लिए अपना कोड नहीं लिखा है।

क्षमा करें यह एक लंबा विवरण है। यह वास्तव में लगता है की तुलना में बहुत अधिक सरल है।

3

कार्यक्षमता आप के लिए दृश्य स्टूडियो में अंतर्निहित है देख रहे हैं:

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

+0

+1 इससे मुझे बहुत धन्यवाद मिली। –

1

मैंने अभी अपने ब्लॉग पर Partial Trust Testing with xUnit.net शीर्षक वाला एक लेख पोस्ट किया है। यह xUnit.net-आधारित ढांचे का विवरण देता है जिसे हम एंटिटी फ्रेमवर्क टीम पर मध्यम ट्रस्ट के तहत कोड का उपयोग करने के लिए उपयोग करते हैं।

यहां इसके उपयोग का एक उदाहरण है।

public class SomeTests : MarshalByRefObject 
{ 
    [PartialTrustFact] 
    public void Partial_trust_test1() 
    { 
     // Runs in medium trust 
    } 
} 

// Or... 

[PartialTrustFixture] 
public class MoreTests : MarshalByRefObject 
{ 
    [Fact] 
    public void Another_partial_trust_test() 
    { 
     // Runs in medium trust 
    } 
} 
संबंधित मुद्दे