2008-09-04 7 views
8

के साथ यूनिट परीक्षण मैं अपने कोड को यूनिट परीक्षण के बारे में बेहतर होने की कोशिश कर रहा हूं, लेकिन अभी मैं दूरस्थ कोड से संबंधित बहुत सारे कोड लिख रहा हूं। एसएनएमपी, डब्लूएमआई, उस तरह की चीज। अधिकांश कक्षाओं के साथ मैं वस्तुओं का परीक्षण करने के लिए वस्तुओं का नकल कर सकता हूं, लेकिन आप एक वास्तविक प्रणाली के परीक्षण के साथ कैसे निपटते हैं? उदाहरण के लिए, यदि मेरी कक्षा बाहर जाती है और सर्वर के लिए Win32_LogicalDisk ऑब्जेक्ट प्राप्त करती है, तो मैं संभवतः इसे कैसे परीक्षण कर सकता हूं?नेटवर्क-रिलायंट कोड

उत्तर

5

मान लें कि आप का मतलब है "मैं चीजें हैं जो कठिन/उपहास करने के लिए असंभव है के खिलाफ किस प्रकार जाँच कर":

आप एक वर्ग है, तो है कि "बाहर चला जाता है और एक सर्वर के लिए Win32_LogicalDisk वस्तु हो जाता है" और कुछ और (करता है किसी भी तरह से 'Win32_LogicalDisk' ऑब्जेक्ट का उपभोग करता है), मानते हुए कि आप इस ऑब्जेक्ट का उपभोग करने वाले वर्ग के टुकड़ों का परीक्षण करना चाहते हैं, तो आप 'Win32_LogicalDisk' ऑब्जेक्ट को नकल करने की अनुमति देने के लिए Dependency Injection का उपयोग कर सकते हैं। उदाहरण के लिए:

class LogicalDiskConsumer(object): 

    def __init__(self, arg1, arg2, LogicalDiskFactory) 
     self.arg1=arg1 
     self.arg2=arg2 
     self.LogicalDisk=LogicalDiskFactory() 

    def consumedisk(self): 
     self.LogicalDisk.someaction() 

फिर अपने इकाई परीक्षण कोड में, एक 'LogicalDiskFactory' कि 'Win32_LogicalDisk' के लिए एक नकली ऑब्जेक्ट में गुजरती हैं।

1

आप "परीक्षण स्टब्स" का एक सेट बना सकते हैं जो कोर लाइब्रेरी दिनचर्या को प्रतिस्थापित करता है और उचित देरी के बाद शायद ज्ञात मूल्यों को वापस कर देता है।

उदाहरण के तौर पर, मुझे हाल ही में किसी तृतीय-पक्ष उत्पाद के अंदर चलाने के लिए कोड विकसित करने की आवश्यकता है। चुनौती यह थी कि हमारा "साथी" उनके बेस कोड के साथ संकलन और एकीकरण कर रहा होगा: मुझे पर उनके कोड को किसी भी रूप में देखने की अनुमति नहीं थी! मेरी रणनीति एक बहुत ही सरल एमुलेटर बनाना था जो मैंने अपने इंजीनियरों की जानकारी के आधार पर सोचा किया था। हमने एक ऐसी भाषा का उपयोग किया जिसने प्रत्येक निर्माण के अंदर और बाहर एमुलेटर के विभिन्न टुकड़ों को स्विच करना आसान बना दिया, इसलिए हम अपने साथी को प्रत्येक नए पुनरावृत्ति के निर्माण से पहले जबरदस्त परीक्षण कर सकते थे।

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

2

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