मैं इकाई परीक्षण और परीक्षण-संचालित विकास के बारे में अगले सप्ताह अपने विभाग से बात करने जा रहा हूं। इसके एक भाग के रूप में, मैं हाल ही में लिखे गए कुछ कोड से कुछ वास्तविक दुनिया के उदाहरणों को दिखाने जा रहा हूं, लेकिन मैं कुछ बहुत ही सरल उदाहरण भी दिखाना चाहूंगा जो मैं बात में लिखूंगा।
मैं अच्छे उदाहरणों के लिए वेब पर खोज कर रहा हूं, लेकिन मैं ऐसा कोई भी संघर्ष करने के लिए संघर्ष कर रहा हूं जो विशेष रूप से हमारे विकास के क्षेत्र पर लागू हो। हमारे द्वारा लिखे गए लगभग सभी सॉफ्टवेयर छोटे-छोटे माइक्रोकंट्रोलर पर चलने वाले गहन-एम्बेडेड नियंत्रण प्रणाली हैं। बहुत सी कोड है जो इकाई परीक्षण के लिए आसानी से लागू होता है (जब तक आप 'नीचे' की परत से स्पष्ट रहें: तब तक आप पीसी पर इकाई परीक्षण के बारे में बात करेंगे) जब तक आप 'नीचे' की परत से स्पष्ट नहीं रहते हैं: सामान जो सीधे बात करता है माइक्रोकंट्रोलर बाह्य उपकरणों के लिए। हालाँकि, अधिकांश उदाहरण मैंने पाया है कि यह स्ट्रिंग-प्रोसेसिंग (उदाहरण के लिए उत्कृष्ट डाइव इन पायथन रोमन अंकों के उदाहरण) पर आधारित है और चूंकि हम शायद ही कभी स्ट्रिंग्स का उपयोग करते हैं, यह वास्तव में उपयुक्त नहीं है (केवल लाइब्रेरी फ़ंक्शन के बारे में जो हमारे कोड आमतौर पर उपयोग करते हैं। कर रहे हैं memcpy
, memcmp
और memset
,strcat
या नियमित अभिव्यक्ति काफी सही नहीं है)।
इसलिए, इस सवाल पर: क्या कोई ऐसे कार्यों के कुछ अच्छे उदाहरण पेश कर सकता है, जिनका उपयोग मैं एक जीवित सत्र में इकाई परीक्षण प्रदर्शित करने के लिए कर सकता हूं? मेरी (परिवर्तन के अधीन) राय में एक अच्छा जवाब शायद होगा:
- एक फ़ंक्शन जो काफी सरल है कि कोई भी (यहां तक कि जो केवल कभी-कभी कोड लिखते हैं) समझ सकते हैं;
- एक फ़ंक्शन जो व्यर्थ नहीं दिखाई देता है (यानी समता या सीआरसी का काम करना संभवतः एक फ़ंक्शन से बेहतर है जो दो संख्याओं को एक साथ गुणा करता है और एक यादृच्छिक निरंतर जोड़ता है);
- एक फ़ंक्शन जो लोगों के एक कमरे के सामने लिखने के लिए काफी कम है (मैं त्रुटियों को कम करने के लिए विम के कई क्लिपबोर्ड का लाभ उठा सकता हूं ...);
- एक फ़ंक्शन जो संख्याओं, सरणियों, बिंदुओं या संरचनाओं को पैरामीटर के रूप में लेता है और स्ट्रिंग को संभालने के बजाय कुछ समान देता है;
- एक फ़ंक्शन जिसमें एक साधारण त्रुटि होती है (जैसे कि
>
इसके बजाय>=
) यह आसान है कि वह अभी भी ज्यादातर मामलों में काम करेगा लेकिन कुछ विशेष किनारे के मामले से टूट जाएगा: एक यूनिट टेस्ट के साथ पहचानना और ठीक करना आसान है।
कोई विचार?
यद्यपि यह संभवतः प्रासंगिक नहीं है, परीक्षण स्वयं संभवतः Google टेस्ट फ्रेमवर्क का उपयोग करके C ++ में लिखे जाएंगे: हमारे सभी हेडर में पहले से ही #ifdef __cplusplus extern "C" {
उनके चारों ओर आवरण हैं; मैंने अब तक किए गए परीक्षणों के साथ अच्छा काम किया है।