अच्छे डेवलपर्स जानते हैं कि उन्हें अपने कोड का परीक्षण करना चाहिए। बहुत बार, हालांकि, परीक्षण छोड़ दिए जाते हैं, जल्दी हो जाते हैं, या कभी शुरू नहीं होते हैं। ऐसे कुछ सामान्य जाल हैं जिनमें मैंने लोगों को गिरते हुए देखा है, और वे हर बार परीक्षण करने की आपकी प्रेरणा को खत्म कर देंगे।
1. क्या मुझे आरएसपीईसी का उपयोग करना चाहिए? खीरा? कैपीबारा? मिनिटेस्ट?
जब आप कोई नया प्रोजेक्ट शुरू करते हैं, तो यह रास्ता होता है सबसे अच्छा उपकरण चुनने का प्रयास करने में बहुत समय व्यतीत करना बहुत आसान है। इस तरह की शिथिलता इस तथ्य को छुपाती है कि आप यह नहीं जानते कि कहां से शुरू करें , और जब तक आप अपने टूल नहीं चुनते, तब तक आप महसूस . कर सकते हैं वास्तव में अस्तित्व . के बिना उत्पादक उत्पादक।
इसके बजाय, बस उस स्टैक को चुनें जिसे आप सबसे अच्छी तरह जानते हैं। यदि आप किसी विशेष परीक्षण स्टैक के साथ अनुभव नहीं कर रहे हैं, तो डिफ़ॉल्ट लें - जो रेल आपको देता है उसके साथ शुरू करें। आप हमेशा बाद में और जोड़ सकते हैं। नए टूल आज़माने में कुछ भी गलत नहीं है, लेकिन यह बहुत है समय के साथ उन्हें पेश करने का बेहतर विचार है, क्योंकि आप अपने प्रोजेक्ट और वर्कफ़्लो को बेहतर तरीके से जानते हैं।
2. क्या मैं यूनिट परीक्षणों से शुरू करूं? कार्यात्मक परीक्षण? एकीकरण परीक्षण?
जब आप कोई प्रोजेक्ट शुरू करते हैं, तो आपको इस बात का अंदाजा होना चाहिए कि पहले कौन सी सुविधाएँ या स्क्रीन बनाई जानी चाहिए। यह आरंभ करने के लिए एक शानदार जगह है! अपनी फीचर सूची से पहली चीज चुनें और इसके लिए एक असफल एकीकरण परीक्षण लिखें। यह आपको बताएगा कि आप किस प्रकार के नियंत्रक और मार्ग खो रहे हैं, जिसका अर्थ है कि आपको कुछ असफल कार्यात्मक परीक्षण लिखने की आवश्यकता है। नियंत्रकों को अपना काम करने के लिए डेटा और तर्क की आवश्यकता होती है, इसलिए आप आगे इकाई परीक्षण और अपने मॉडल लिखेंगे। फिर, एक बार जब आप अपने यूनिट परीक्षण पास कर लेते हैं, तो कार्यात्मक परीक्षण पास होना चाहिए, और इसी तरह एकीकरण परीक्षण होना चाहिए। अब आप अगली सुविधा पर जा सकते हैं।
यदि आपके पास एक परीक्षण प्रक्रिया है जिसमें हमेशा अगला चरण परिभाषित होता है, तो प्रेरित रहना बहुत आसान होता है। यदि आपको निर्णय लेने की आवश्यकता नहीं है, तो ढिलाई बरतने की संभावना कम है।
3. मुझे नहीं पता कि इस नेटवर्क कोड, कमांड लाइन उपयोगिता, या रेक कार्य का परीक्षण कैसे किया जाता है!
यहां करने के लिए सबसे आसान काम फ़ाइल या वर्ग से अधिक से अधिक कोड को स्थानांतरित करना है जो परीक्षण करना कठिन है और एक नई वस्तु में जो परीक्षण करना आसान है। इस तरह, कठिन-से-परीक्षण वाली चीज़ केवल आपके नए ऑब्जेक्ट के लिए पैरामीटर बनाती है और उन्हें पास करती है।
बेशक, आप अभी भी मूल चीज़ है जिसका परीक्षण करना कठिन है। लेकिन यह शायद अब कोड की कुछ पंक्तियाँ हैं, और इसे स्टब या नकली करना आसान होना चाहिए।
4. "प्रोजेक्ट लगभग पूरा हो चुका है, अब मुझे बस इसके लिए टेस्ट लिखना है!"
हर डेवलपर जिससे मैं मिला हूं लालसा शिपिंग कोड। यदि परीक्षण आपके शिप करने से पहले करने के लिए आखिरी चीज है, तो आप कम से कम ऐसे परीक्षण लिखेंगे जो आपको इस तरह के आत्मविश्वास को महसूस करने के लिए आवश्यक हैं कि कोड काम करता है, शायद। यदि आप इस आदत में शामिल हो जाते हैं, तो आप परीक्षणों को मददगार के बजाय कष्टप्रद के रूप में देखना शुरू कर देंगे, और उन्हें लिखने के लिए खुद को प्रेरित करना उतना ही कठिन होगा।
टीडीडी के बारे में मेरी पसंदीदा चीजों में से एक यह है कि यह डिजाइन और कोडिंग के साथ परीक्षण को मिलाता है, जिसका अर्थ है कि आप परीक्षण को के रूप में देखना शुरू करते हैं। कोडिंग, जो इसे और अधिक मजेदार बनाती है (और आपको परीक्षण करने का लाभ बहुत . मिलता है पहले)।
5. क्या होगा अगर मैं इसे गलत कर रहा हूँ?
रूबी समुदाय वास्तव में कोड गुणवत्ता, इकाई परीक्षण और वस्तु उन्मुख डिजाइन सिद्धांतों को आगे बढ़ाने के लिए जाना जाता है। यह एक बेहतरीन चीज है! दुर्भाग्य से, इसका मतलब है कि आपके पहले प्रयास में 100% परीक्षण कवरेज के साथ सही कोड भेजने के लिए भारी मात्रा में दबाव महसूस करना वास्तव में आम है।
इससे प्रोजेक्ट शुरू करना वाकई मुश्किल हो जाता है, खासकर ओपन सोर्स, जहां आप जानते हैं कि अन्य लोग कोड देखेंगे। लोग क्या कहेंगे यदि वे देखते हैं कि यह सभी ठोस सिद्धांतों का पालन नहीं करता है? लेकिन कुछ चीजें हैं जो मैंने सीखी हैं जिनसे मुझे इस दबाव से निपटने में मदद मिली है:
- हर अच्छा डेवलपर कोड लिखते हैं जिससे वे बाद में शर्मिंदा हो जाते हैं।
- अच्छा कोड जो शिप करता है वह सही कोड से असीम रूप से बेहतर होता है जो नहीं करता है।
- कुछ लोग सिर्फ बेवकूफ होते हैं और आपके कोड का मजाक उड़ाएंगे। यह वास्तव में बेकार है। इसने मेरा पूरा सप्ताह बर्बाद कर दिया है। लेकिन अच्छे डेवलपर सहायता करना चाहते हैं आप की आलोचना करने के बजाय। और मैं शर्त लगा सकता हूं कि यदि आप अपने प्रोग्रामिंग हीरो को वह कोड दिखाते हैं, तो वे इसका मजाक नहीं उड़ाएंगे-वे इसे बेहतर बनाने में आपकी मदद करेंगे।
आपने और क्या देखा?
आप इनमें से किस जाल में फंस गए हैं? आपको खुद को बाहर निकालने में क्या मदद मिली? और क्या ऐसा कोई है जिसका मैंने उल्लेख नहीं किया है कि आपने गौर किया है?
अगर आप इनमें से किसी भी जाल में खुद को पहचानते हैं, तो आप खुद को बाहर निकालने के लिए क्या करने जा रहे हैं?