2009-06-22 8 views
7

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

मैं उन सभी को व्यवस्थित करने के लिए लाइब्रेरी (सी ++) का उपयोग कर सकता हूं। क्या आप किसी को जानते हैं? डंप फ़ाइलों के साथ यह एक सस्ती, भारी इकाई परीक्षण प्रदान करेगा।

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

असल में मुझे पहिया को फिर से शुरू करने जैसा लगता है, इसलिए मेरे प्रश्न काफी सामान्य हैं:
आप रिग्रेशन परीक्षण (यदि आप करते हैं) कैसे करते हैं?
क्या आप किसी लाइब्रेरी/टूलकिट का उपयोग करते हैं?
क्या आपने कभी अपनी आवश्यकताओं के लिए एक लागू किया है?

और जिज्ञासा से बाहर:
क्या आप कभी भी रिग्रेशन परीक्षण करना चाहते थे, लेकिन कुछ आपको रोक दिया?

+0

जिज्ञासा से बाहर ... आप यूनिट परीक्षण का उपयोग क्यों नहीं कर सकते? – nathan

+0

अधिकतर क्योंकि सिस्टम भारी मात्रा में डेटा पर काम करता है और सबराउटिन का परीक्षण करने के लिए फिक्स्चर लिखना मुश्किल है। –

उत्तर

2

आप the Boost Test Library पर एक नज़र डाल सकते हैं। मैंने कभी इसका इस्तेमाल नहीं किया है, लेकिन यह आपकी इच्छाओं को पूरा कर सकता है।

जब मैं काम कर रहा हूं तो मैं आमतौर पर जितना संभव हो सके रिग्रेशन परीक्षण करने के लिए हमारे टेस्ट-ट्रैकर में सरल परीक्षण केस लिखता हूं (विशेष रूप से मुझे लोगों के लिए :)।

2

serialization लाइब्रेरी को बढ़ावा दें। यह आपको अपनी फ़ाइलों को एक्सएमएल में डंप करने की अनुमति देगा, जिसे आप प्रत्येक संस्करण के लिए अलग कर सकते हैं।

अपने परीक्षण के मामलों को बनाने के लिए, यदि आप पहले से ऐसा नहीं कर रहे हैं, तो अपने कार्यों के बावजूद कवरेज को काम करने के लिए gcov का उपयोग करें। यह कम से कम सुनिश्चित करेगा कि आपके पास अपने फ़ंक्शन में शामिल सभी कथन हैं।

यूनिट टेस्टिंग

हम विरासत कोड है कि जुड़नार याद आ रही है परीक्षण कर रहे हैं जब हम कभी-कभी एक मध्यम जमीन दृष्टिकोण का उपयोग करें। हमारे पास हमारे आवेदन का थोड़ा संशोधित संस्करण है, जो सामान्य कार्यों को निष्पादित करता है, लेकिन कार्यों पर परीक्षण भी कर सकता है।

यह सख्ती से यूनिट परीक्षण नहीं है क्योंकि आपको यह मानना ​​है कि बाकी लाइब्रेरी सही है, हालांकि, यह कम से कम रिग्रेशन/सिस्टम परीक्षणों के साथ संभवतः अधिक परीक्षण करने की अनुमति देता है।

1

ठीक है, यहां तीन चीजों पर चर्चा की जा रही है: विरासत कोड, इकाई परीक्षण और स्वीकृति/प्रतिगमन परीक्षण पर सभी परीक्षणों को फ़िट करना, सी ++ में सभी।

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

दूसरा, सी ++ में यूनिट परीक्षण के लिए, मैंने अभी ब्लॉग पोस्ट की 5-भाग श्रृंखला लिखी है जो वर्णन करता है कि विजुअल स्टूडियो: C++ Unit Testing With Boost.Test के साथ विस्तार से इसे कैसे किया जाए।

अंत में, स्वीकृति/प्रतिगमन परीक्षण के लिए मैंने सफलतापूर्वक फिटनेस का उपयोग किया है। यह मूल रूप से एक स्वीकृति परीक्षण ढांचा है जो परीक्षणों को व्यवस्थित करने और लिखने के लिए विकी का उपयोग करता है। विकी पेज को आपके द्वारा लिखे गए परीक्षण फ़िक्स्चर में कॉल करने के लिए ट्रैवर्स किया गया है और पार्स किया गया है। टेस्ट फ़िक्स्चर तब विकी पेज और आपके उत्पादन कोड द्वारा वर्णित परीक्षण के बीच मध्यस्थता करता है। मैंने पूरे तंत्र पर अंत तक अंत में रिग्रेशन परीक्षण करने के लिए इस तंत्र का उपयोग किया है। उन वर्गों के लिए यूनिट परीक्षणों के साथ संयोजन करें जिन्हें आप बदल रहे हैं और यह एक बहुत ही शक्तिशाली बग डिटेक्टर तंत्र है। रिग्रेशन परीक्षण ऊपर से निचोड़ते हैं और यूनिट परीक्षण नीचे से निचोड़ते हैं और बग बीच में पकड़े जाते हैं! यह मेरे लिए बहुत अच्छा काम किया।

fitnesse.org से मुख्य फिटनेस वितरण प्राप्त करें आप sourceforge से फिटनेस के लिए सी ++ परीक्षण धावक प्राप्त कर सकते हैं। (मैं उस परियोजना पर एक डेवलपर हूं।) हमने अभी तक एसएलआईएम समर्थन नहीं जोड़ा है जो कि मुख्य फिटनेस विकी में है, लेकिन हमारे पास कई फिक्स्चर के लिए अच्छा समर्थन है। हम जल्द ही एसएलआईएम समर्थन जोड़ने की उम्मीद कर रहे हैं। मेरे पास एक प्राथमिक कार्यान्वयन है जिसे समाप्त करने की जरूरत है।

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

  • कोई संबंधित समस्या नहीं^_^