2008-12-10 11 views
14

क्या किसी ने नेट के लिए यूनिट टेस्ट जेनरेटर की कोशिश की है?यूनिट टेस्ट केस जनरेटर

मुझे लगता है हालांकि यह किसी भी अच्छा इकाई परीक्षण एक व्यक्ति जो कार्यक्षमता लिखा है द्वारा लिखित के लिए किसी भी विकल्प नहीं होगा, लेकिन मुझे लगता है इसे दूर काम से कुछ समय लगेगा और हो एक प्रारंभिक बिंदु है जिस पर हम बेहतर कर सकते हैं यूनिट परीक्षण

धन्यवाद।

+0

+1 सुंदर दिलचस्प समग्र प्रश्न। मैं छोटी परियोजनाओं के लिए थोड़ी देर में एक परीक्षण जनरेटर का उपयोग करने में रूचि रखता हूं, और आप सवाल जो मैं सोच रहा था उससे प्रासंगिक है। –

उत्तर

22

इकाई परीक्षण उत्पादन यूनिट परीक्षण करने का गलत तरीका है। यूनिट परीक्षण करने का सही तरीका है कि आप कार्यात्मक कोड लिखने से पहले टेस्ट केस तैयार करें, फिर परीक्षणों को वैध होने तक अपना कोड विकसित करें, इसे टीडीडी (टेस्ट ड्राइव डेवलपमेंट) के रूप में जाना जाता है।

प्रमुख कारण इकाई परीक्षण पीढ़ी में से एक, एक बुरा विचार है क्योंकि अगर वहाँ अपने मौजूदा कोड में किसी भी कीड़े हैं, परीक्षण उन कीड़े के खिलाफ उत्पन्न हो जाएगा है, इसलिए यदि आप उन्हें भविष्य में ठीक है, बुरा परीक्षण होगा असफल हो और आप मान लेंगे कि कुछ तोड़ दिया गया है, जब इसे वास्तव में ठीक किया गया है।

लेकिन चूंकि कोड लिखा गया है, अब यह पुल के नीचे पानी है। और संभव बग्गी यूनिट परीक्षण बिल्कुल यूनिट परीक्षणों से बेहतर नहीं हैं। मैंने हमेशा NUnit को प्राथमिकता दी है और एक एनयूनीट संगत परीक्षण जनरेटर here (बहुत किफायती) है।

+10

हाँ यह टीडीडी करने का गलत तरीका है, लेकिन यदि आप विरासत कोड के साथ काम कर रहे हैं तो यह एक अच्छी नींव नहीं है? – Webjedi

+0

@Webjedi। मुझे ऐसा नहीं लगता। हाथ से परीक्षण लिखने से आपको यह समझने में मदद मिलेगी कि कोड क्या करना है। एक टेस्ट जेनरेटर चला रहा है - यह संदिग्ध पठनीय कोड के साथ उत्पादन करेगा - इससे मदद नहीं मिलती है। – tvanfosson

+0

बिल्कुल। एक उपकरण कैसे पता चलेगा कि आपके आवेदन का व्यवहार क्या होना चाहिए? यदि आपके पास कोई परीक्षण नहीं है, तो आप वाईटीएन या सेलेनियम, आदि का उपयोग करके यूआई के लिए कार्यात्मक परीक्षण लिखने से बेहतर हैं – bryanbcook

10

क्या आपने Pex पर विचार किया है? यह माइक्रोसॉफ्ट रिसर्च से है।

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

+0

पेक्स देखने लायक है। मैंने इसे विस्तारित विधियों की बढ़ती सूची के लिए उपयोगी पाया है, जो अब तक अनचाहे हो गए हैं। –

5

साल पहले मैं हास्केल के QuickCheck उत्पादक परीक्षण के साथ purely functional Test Driven Development के लिए अनुमति देने के लिए संशोधित। मेरा समाधान पीआरएनजी बीज को बचाने के लिए था, जिसके लिए एक असफल परीक्षण केस उत्पन्न हुआ, और उसी बीज के साथ भविष्य के परीक्षण चलाएं।

मैं हाल ही में एक .NET नौकरी मिल गई, और गूगल में पाया गया कि MbUnit 2004 में उत्पादक परीक्षण के लिए didhave समर्थन मैं भी अधिक हाल ही में Gallio पाया, लेकिन मैं इसे का उपयोग कर मुसीबत में किसी प्रकार का था, मैं बिल्कुल याद नहीं है क्या।

तो, टीडीडी और जेनरेटिव परीक्षण परस्पर अनन्य नहीं हैं, गैलियो एकमात्र हालिया .NET विकल्प है जिसे मैंने देखा है, और मुझे याद नहीं है कि मैं इसका उपयोग क्यों नहीं कर रहा हूं।

0

मैं एक इकाई परीक्षण जनरेटर के लिए ErrorUnit बनाया की सूची के साथ एक लेख है।नेट

टीडीडी विकास के लिए जेनरेटर का उपयोग करना निश्चित रूप से व्यावहारिक है; उदाहरण के लिए बटन क्लिक करने पर क्या होता है, एक टीडीडी तरीके में ErrorUnit का उपयोग करने का एक तरीका होगा:

1) पहले बटन दबाए जाने के लिए मैन्युअल रूप से एक परीक्षण बनाएं; फिर शुद्ध टीडीडी के अनुसार घटना और परीक्षण बनाएं।

2) फिर कार्यक्रम चलाने के लिए, बटन के साथ स्क्रीन पर नेविगेट, और एक ब्रेकपाइंट घटना विधि में सेट के साथ, बटन दबाने से

3) जब ब्रेकप्वाइंट मारा जाता है आप तो ErrorUnit के क्लिक कर सकते हैं "जोड़ें इकाई परीक्षण "सभी ऑब्जेक्ट्स और वर्तमान डेटाबेस स्थिति के साथ एक यूनिट परीक्षण उत्पन्न करने के लिए पहले ही मजाक कर दिया गया है। (विभिन्न उपयोग मामलों के राज्यों के साथ आवश्यक दोहराएं)

4) फिर आप बनाए गए यूनिट परीक्षणों को टीडीडी के अनुसार बटन क्लिक करने के परिणाम के मुकाबले एक आर्टर्ट करने के लिए बदल देंगे।

5) फिर क्लिक ईवेंट के पीछे कोड लिखें, और अपना परीक्षण चलाएं जो त्रुटिUnit (व्यवस्था और अधिनियम के लिए) और भाग कस्टम (आवेषण के लिए) द्वारा उत्पन्न भाग है।

इस तरह आप अपना अधिकांश समय बचाते हैं जो व्यवस्था और अधिनियम टाइप करने में खर्च किया जाएगा।

ErrorUnit त्रुटि के समय सटीक स्थिति को यूनिट में क्रमबद्ध करने और मजाक करके अन्य वातावरण में त्रुटियों को पुन: पेश करने के लिए त्रुटि लॉगिंग के साथ भी काम करता है; उत्पादन मुद्दे संकल्प में टीडीडी लाओ।

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