2010-02-11 7 views
14

मुझे आश्चर्य है कि किसी को भी चल रहे .NET प्रोग्राम में सामान्य दोषों को स्वचालित रूप से इंजेक्ट करने के लिए टूल या तकनीकों के बारे में पता है। सामग्री की तरह ....NET ऐप्स के लिए दोष इंजेक्शन?

  • बेतरतीब ढंग से आवंटन
  • पर एक OutOfMemoryException इंजेक्षन बेतरतीब ढंग से एक सॉकेट का उपयोग कर पर एक फ़ाइलों
  • बेतरतीब ढंग से आईओ या नेटवर्क अपवाद इंजेक्षन तक पहुँचने का प्रयास पर FileNotFoundException इंजेक्षन।

तो मैं वास्तव में सीएलआर में कुछ विशिष्ट कॉलों को रोकने के लिए एक तरीका ढूंढ रहा हूं जैसे कि एपवीरिफायर देशी Win32 कोड के लिए करता है। इसका उद्देश्य डेवलपर्स के नियंत्रण से परे कई त्रुटि स्थितियों के तहत ऐप्स का परीक्षण करना और यह सुनिश्चित करना है कि ऐसी स्थितियों को संभाला जा सके।

+0

अपने नेटवर्क केबल को अनप्लग करें? – ChaosPandion

+3

'सरकस्म' आपकी याददाश्त अनप्लग करें? –

+1

बिल्कुल :) विभिन्न संसाधनों के लिए ऐसा करने के लिए बहुत सारे हैक्स हैं लेकिन यह स्केल नहीं करता है। – noctonura

उत्तर

8

एक codeplex परियोजना कहा जाता है TestAPI कि क्रम फॉल्ट इंजेक्शन कर सकते हैं। आपको इसकी managed code fault injection API देखने की आवश्यकता है। यह रनटाइम पर विधि कॉल को रोकने और उनके व्यवहार को संशोधित करने के लिए CLR profiling API का उपयोग करता है।

an example पर एक नज़र डालें, यह देखने के लिए कि पहले से संकलित एक्सई में विधि कॉल पर अपवाद कैसे इंजेक्ट किया जाए।

+0

मैंने कुछ उदाहरणों के माध्यम से पढ़ा और मुझे लगता है कि यह वास्तव में आशाजनक दिखता है और तथ्य यह है कि यह नि: शुल्क है निश्चित रूप से मदद करता है। – ChaosPandion

+0

हां - यह वास्तव में अच्छा लगता है। – noctonura

0

मुझे नहीं पता कि कोई इन चीज़ों को "यादृच्छिक रूप से" कैसे इंजेक्ट करेगा, लेकिन मैं आपको उस हिस्से को नकल करने की सलाह दूंगा जो आम तौर पर आपके नियंत्रण में नहीं है, और नकली आपके कुछ परीक्षणों में अपवाद फेंकती है।

+0

मुझे लगता है कि वह बड़ी मात्रा में कोड के बारे में बात कर रहा है जिसे वह सत्यापित करना चाहता है, इसलिए मुझे संदेह है कि वह मॉकिंग का समर्थन करने के लिए इस कोड को फिर से डिजाइन करने में सक्षम होगा। – ChaosPandion

+0

मैं कहूंगा कि यह उसकी समस्या है, लेकिन मैं एक बड़े विरासत कोड बेस से निपटने की कठिनाइयों को समझता हूं।मुझे मजाक करने के लिए बिना किसी प्रतिक्रिया के इन परिदृश्यों का सही ढंग से परीक्षण करने का कोई तरीका नहीं दिख रहा है, लेकिन शायद कोई और कुछ बदल जाएगा। –

5

Typemock Isolator आपकी सर्वश्रेष्ठ शर्त प्रतीत होता है।

यदि आप परीक्षण को अनुकरण करने के लिए FileNotFoundException फेंकना चाहते हैं तो यहां आप क्या कर सकते हैं।

अपने उत्पादन कोड में, आप इस तरह के विधि है

public static Project OpenProject(string filePath) 

और अपने परीक्षण कोड में, आप कर सकते हैं नकली OpenProject कॉल इस

Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException()); 

और जब आपके कोड मारा OpenProject, एक FileNotFoundException की तरह फेंक दिया जाएगा।

1

यह आपके पूछने के साथ बिल्कुल सही नहीं है, लेकिन यह संबंधित है और आपके ऐप में अपवाद हैंडलिंग में सुधार के एक ही लक्ष्य की मदद कर सकता है।

Redgate अपवाद हंटर http://www.red-gate.com/products/Exception_Hunter/index.htm

मैं इस विशेष उत्पाद लेकिन अन्य Redgate उत्पादों मैं का उपयोग किया है इस्तेमाल नहीं किया है महान थे।

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