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