2008-12-09 14 views
13

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

मुझे आश्चर्य है कि कोई भी इस तरह की चीज़ का अच्छा काम करने के लिए अच्छी तकनीक या उपकरण सुझा सकता है।

संपादित करें: इस स्पष्ट करने के लिए पहले से यूनिक्स

धन्यवाद है। टॉम

+0

आप उपयोग कर रहे हैं या लेखन/कमांड लाइन उपयोगिताओं का निर्माण हो सकता है? –

उत्तर

4

Aruba किसी भी प्रोग्रामिंग भाषा में लिखित कमांड लाइन अनुप्रयोगों का परीक्षण करने के लिए Cucumber एक्सटेंशन है।

इसका उपयोग करने के लिए, आपको परीक्षण चलाने के लिए रूबी की आवश्यकता होगी, लेकिन अरुबा का उद्देश्य प्री-डिफ़ाइंड चरण परिभाषाओं की एक लाइब्रेरी प्रदान करना है ताकि आपको एक व्यावहारिक परीक्षण करने के लिए कोई रूबी कोड लिखने की आवश्यकता न हो सूट। jingweno/gh

3

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

+0

हां - मुझे उम्मीद थी कि कोई ढांचा या उपकरण से अवगत हो सकता है। मैं खुद को अपने अधिकार के रूप में खटखटाए जाने के बारे में सोच रहा था, यह बहुत मुश्किल नहीं होगा। चीयर्स। टॉम –

0

आप इसे बैच फ़ाइल ओडर विंडोज स्क्रिप्टिंग होस्ट से कर सकते हैं।

लेकिन मैं एक कार्य शेड्यूलर (http://www.splinterware.com/products/wincron.htm) या अन्य मुफ्त/पेशेवर सॉफ़्टवेयर का उपयोग करने का वादा करता हूं।

वहां आप कमांडलाइन-पैरामीटर को कॉपी/पेस्ट कर सकते हैं, जब आप अपने सॉफ़्टवेयर का परीक्षण लगभग 100 गुना करना चाहते हैं ?!

2

मैं (एक बहुत अधिक समय लगा पहले hehe) इस का एक छोटा सा किया था जांच करने के लिए है कि क्या हुआ है कि मैं क्या, उम्म,

4

उम्मीद मैं अपने आदेश पंक्ति उपकरण का कोड की संरचना की सलाह देते था Expect का उपयोग कर तो यह है कि कमांड लाइन उपयोगिता कार्यों और/या कक्षाओं की एक पुस्तकालय के लिए एक ग्राहक है।

प्रिंट आउटपुट के लिए std :: cout का उपयोग करने के बजाय, पुस्तकालयों का कार्य एक ओस्ट्रीम संदर्भ लेता है जो std :: cout पर डिफ़ॉल्ट होता है। जब आप परीक्षण कर रहे हों, आउटपुट एकत्र करने के लिए std :: stringstream प्रदान करें।

अंत में, बस अपने पसंदीदा इकाई परीक्षण ढांचे का उपयोग करके अपेक्षित परिणामों के साथ अपनी उपयोगिता के आउटपुट की तुलना करें।

(मैं सी ++ विशिष्ट उदाहरण के लिए क्षमा चाहता हूं ... मुझे यकीन है कि अन्य भाषाओं में भी इसी तरह की चीजें करने के तरीके हैं)।

0

आप कर सकते थे: (। हालांकि कुछ बिंदु पर आप शायद कुछ कस्टम चरणों बनाने के लिए माणिक का एक सा लिखना चाहते हैं जाएगा)

आप यहाँ अरूबा के साथ परीक्षण एक कमांड लाइन उपकरण का एक परिष्कृत उदाहरण देख सकते हैं Test::more लाइब्रेरी के साथ perl का उपयोग करें, जो सीएलआई परीक्षण के लिए एक महान ढांचा प्रदान करता है। हालांकि मुख्य रूप से इकाई परीक्षण के लिए डिज़ाइन किया गया है, आप इसे उपयोगकर्ता वर्कफ़्लो का परीक्षण करने के लिए बढ़ा सकते हैं।

तरीकों में से कुछ:

# Various ways to say "ok" 
    ok($got eq $expected, $test_name); 
    is ($got, $expected, $test_name); 
    isnt($got, $expected, $test_name); 

    # Rather than print STDERR "# here's what went wrong\n" 
    diag("here's what went wrong"); 

    like ($got, qr/expected/, $test_name); 
    unlike($got, qr/expected/, $test_name); 

    cmp_ok($got, '==', $expected, $test_name); 

3

Cram का उपयोग करके आप परीक्षण है कि एक इंटरैक्टिव खोल सत्र जैसे लगते हैं लिख सकते हैं। क्रैम फिर परीक्षण से कमांड को फिर से चलाएगा, संदर्भ में आउटपुट की तुलना करेगा, और मतभेदों की रिपोर्ट करेगा। टेस्ट प्रारूप काफी लचीला है और आपको पर्ल रेगेक्स या शैल-जैसे वाइल्डकार्ड का उपयोग करके आउटपुट से मिलान करने की अनुमति देता है। सैम स्टीफनसन द्वारा

1

Bats (Bash Automated Testing System)। यह छोटा है, पूरी तरह से खोल में लिखा है और सुविधाओं का एक अच्छा सेट है।

पहले सुझाव दिया अरूबा दिलचस्प लग रहा है, लेकिन कुछ मामलों में यह शांत निर्भरता के मामले में एक overkill (रूबी, ककड़ी)

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

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