unit-testing - unit - यूनिट टेस्ट क्या है




इकाई परीक्षण या टीडीडी कैसे शुरू करें? (10)

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

यहां एक ट्यूटोरियल एप्लिकेशन है (शाखा "ट्यूटोरियल" में) जो दिखाता है कि किस प्रकार के परीक्षण लिखने के लिए। उस ट्यूटोरियल में आप पूर्वनिर्धारित परीक्षण मामलों को पारित करने के लिए कोड लिखते हैं, ताकि आप ताल में आ सकें, और बाद में आप अपने स्वयं के परीक्षण लिख सकें। रीडमे फ़ाइल में निर्देश हैं। यह जावा में लिखा गया है, लेकिन आप इसे आसानी से सी # में अनुकूलित कर सकते हैं।

मैंने कई पदों को पढ़ा जो मुझे विश्वास दिलाते हैं कि मुझे यूनिट टेस्ट लिखना शुरू करना चाहिए, मैंने आसान मॉकिंग के लिए निर्भरता इंजेक्शन (एकता) का उपयोग करना शुरू किया, लेकिन मुझे अभी भी पूरा यकीन नहीं है कि मुझे किस चरण में यूनिट लिखना शुरू करना चाहिए परीक्षण और मोजे, और कैसे या कहां से शुरू करें।

क्या टीडीडी पद्धति में वर्णित विधियों से पहले पसंदीदा तरीके यूनिट परीक्षण लिखना होगा?

यूनिट परीक्षण के लिए कोई अलग तरीका या तरीका है?


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

हादी हरिरी का यहां एक उत्कृष्ट पद है http://hadihariri.com/2012/04/11/what-bdd-has-taught-me/

मैंने इस विषय पर कुछ लेख भी लिखे हैं जो मुझे लगता है कि यहां टीडीडी से संबंधित सभी अवधारणाओं को समझने में मदद मिलेगी

http://codecooked.com/introduction-to-unit-testing-and-test-driven-development/

http://codecooked.com/different-types-of-tests-and-which-ones-to-use/


मैं केंटबेक के दृष्टिकोण को पसंद करता हूं जिसे पुस्तक में अच्छी तरह से समझाया गया है, उदाहरण के द्वारा टेस्ट ड्राइव डेवलपमेंट - केंट बेक।

आपके प्रश्न से मैं अनुमान लगा सकता हूं कि आप परीक्षण फ्रेम कार्य के साथ निश्चित नहीं हैं - सही परीक्षण फ्रेम का चयन करना टीडीडी या यूनिट परीक्षण (सामान्य रूप से) के लिए बहुत महत्वपूर्ण है।

टीडीडी के साथ केवल व्यावहारिक समस्या "रिफैक्टरिंग" है (हमें टेस्ट कोड को फिर से प्रतिक्रिया करने की आवश्यकता है) बहुत समय लगता है।


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

मोक्स, और डीआई, उनकी जगह है; वे आपके टूलबॉक्स में रखने के लिए अच्छे उपकरण हैं। लेकिन वे विशिष्ट परीक्षण neophyte की तुलना में कुछ परिष्कार, एक और अधिक उन्नत समझ लेते हैं। हालांकि, पहले अपने परीक्षणों को लिखना बिल्कुल ठीक है जैसा लगता है। तो इसे लेना आसान है, और यह सब अपने आप से शक्तिशाली है (बिना मोजे और डीआई)। आप पहले मॉक-फ्री परीक्षण लिखकर पहले, आसानी से जीत सकते हैं, मोक्स, और टीडीडी और डीआई के साथ शुरू करने की कोशिश कर रहे हैं।

परीक्षण के साथ शुरू करें; जब आप इसके साथ बहुत सहज होते हैं, और जब आपका कोड आपको बता रहा है तो आपको मोक्स चाहिए, फिर मोजे ले लो।


यदि आप यूनिट परीक्षण के बारे में उत्सुक हैं तो इसे सीखने का सबसे अच्छा तरीका यह है। आप शायद पहले एकीकरण परीक्षण लिखना शुरू करेंगे, लेकिन यह ठीक है। जब उन्हें लिखने में बहुत मुश्किल लगती है या लिखने के लिए बहुत अधिक काम लगता है, तो इस बारे में और पढ़ें कि किस प्रकार के परीक्षण हैं (इकाई, कार्यात्मक, एकीकरण) और अंतर जानने की कोशिश करें।

यदि आप टीडीडी से शुरू करने में रुचि रखते हैं, तो अंकल बॉब एक ​​अच्छा स्रोत है। this

इकाई परीक्षण पर अधिक

सुनिश्चित करें कि आपको लगातार परीक्षण परिणाम मिलते हैं। एक ही परीक्षण को बार-बार चलाना लगातार उसी परिणाम को वापस करना चाहिए।

परीक्षणों को विन्यास की आवश्यकता नहीं होनी चाहिए।

परीक्षण आदेश कोई फर्क नहीं पड़ता। इसका मतलब है कि आंशिक परीक्षण रन सही तरीके से काम कर सकते हैं। साथ ही, यदि आप इस डिज़ाइन दर्शन को ध्यान में रखते हैं, तो यह आपके परीक्षण निर्माण में सहायता करेगा।

याद रखें कि कोई परीक्षण परीक्षण से बेहतर है। कठिनाई अच्छी स्वच्छ इकाई परीक्षणों को लिखने में पाया जा सकता है जो सृजन और रखरखाव की आसानी को बढ़ावा देते हैं। परीक्षण ढांचे जितना मुश्किल होगा, उतना अधिक विपक्ष इसे नियोजित करेगा। परीक्षण आपका दोस्त है।


यदि आपने पहले यूनिट परीक्षण नहीं लिखे हैं, तो बस कुछ कक्षाएं चुनें और अपने यूनिट परीक्षण लिखना शुरू करें, और अधिक यूनिट परीक्षणों को विकसित करने पर काम करना जारी रखें।

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

एक बार जब आप इकाई परीक्षण लिखने में सहज महसूस करते हैं, तो आप टीडीडी करने का प्रयास कर सकते हैं।


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


स्टीव सैंडर्सन के पास टीडीडी सर्वोत्तम प्रथाओं पर एक महान लेखन है।

http://feeds.codeville.net/~r/SteveCodeville/~3/DWmOM3O0M2s/

साथ ही, एक एएसपीनेट एमवीसी परियोजना करने के लिए ट्यूटोरियल्स का एक बड़ा सेट है जो बहुत सारे टीडीडी सिद्धांतों पर चर्चा करता है (यदि आपको रास्ते में एएसपीनेट एमवीसी सीखने में कोई फर्क नहीं पड़ता) http://www.asp.net/learn/mvc-videos/ पृष्ठ के नीचे "स्टोरफ्रंट" श्रृंखला की तलाश करें।

MOQ हाल ही में गर्म मजाकिया ढांचा प्रतीत होता है, आप उसमें भी देखना चाह सकते हैं

संक्षेप में, उस संग्रह को सत्यापित करने का प्रयास करें जिसे आप संग्रहित करने का प्रयास कर रहे हैं, फिर इसे कार्य करने के लिए कोड को कार्यान्वित करें।

पैटर्न लाल - ग्रीन - रिएक्टर के रूप में जाना जाता है। निर्भरता को कम करने के लिए भी अपना सर्वश्रेष्ठ प्रयास करें ताकि आपके परीक्षण एक घटक पर ध्यान केंद्रित कर सकें।

निजी तौर पर, मैं विजुअल स्टूडियो यूनिट टेस्ट का उपयोग करता हूं। मैं एक कट्टर टीडीडी डेवलपर नहीं हूं, लेकिन मुझे यह करना पसंद है:

  1. एक नई परियोजना बनाएं और सिस्टम डिज़ाइन के आधार पर कुछ मौलिक कक्षाओं को परिभाषित करें (इस तरह से मैं कम से कम कुछ इंटेलिजेंस प्राप्त कर सकता हूं)
  2. एक यूनिट परीक्षण प्रोजेक्ट बनाएं और कार्यान्वित करने की कोशिश कर रहे कार्यक्षमता को पूरा करने के लिए यूनिट परीक्षण लिखना शुरू करें।
  3. उन्हें असफल बनाओ
  4. उन्हें पास करें (लागू करें)
  5. Refactor
  6. दोहराएं, परीक्षण को और अधिक कड़े बनाने की कोशिश करें या जब तक मैं इसे ठोस महसूस न करें तब तक अधिक परीक्षण करें।

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



पहले टेस्ट / परीक्षण करें:

यह ध्यान दिया जाना चाहिए कि टीडीडी के हिस्से के रूप में 'टेस्ट फर्स्ट' डिज़ाइन के साथ करने के लिए उतना ही अधिक (यदि अधिक नहीं है) जैसा कि यूनिट परीक्षण के साथ करना है। यह एक सॉफ्टवेयर विकास तकनीक है जो अपने अधिकार में है - परीक्षणों को लिखने के परिणामस्वरूप डिजाइन की लगातार परिष्करण होती है।

एक अलग नोट पर: यदि शुद्ध इकाई परीक्षण परिप्रेक्ष्य से टीडीडी के लिए एक महत्वपूर्ण लाभ है, तो यह है कि टीडीडी करते समय गलत परीक्षण करने के लिए यह बहुत कठिन है (हालांकि असंभव नहीं है)। यदि आप पहले से परीक्षण लिखते हैं, तो यह हमेशा विफल होना चाहिए क्योंकि परीक्षण पास करने के लिए आवश्यक तर्क अभी तक मौजूद नहीं है। यदि आप बाद में परीक्षा लिखते हैं, तो तर्क वहां होना चाहिए, लेकिन यदि परीक्षण खराब हो गया है या गलत चीज का परीक्षण कर रहा है, तो यह परवाह किए बिना हो सकता है।

यदि आप पहले एक बुरा परीक्षण लिखते हैं, तो आपको लाल रंग की उम्मीद होने पर हरा प्रकाश मिल सकता है (इसलिए आप जानते हैं कि परीक्षण खराब है)। यदि आप बाद में खराब परीक्षण लिखते हैं, तो आपको एक हरा प्रकाश मिलेगा जब आपको हरे रंग की उम्मीद है (खराब परीक्षण से अनजान)।

पुस्तकें

व्यावहारिक इकाई परीक्षण पुस्तक एक लायक है, जैसा कि रॉय ओशरोव की "द आर्ट ऑफ यूनिट टेस्टिंग" है। व्यावहारिक पुस्तक विभिन्न प्रकार के परीक्षण इनपुटों पर अधिक संकीर्ण रूप से केंद्रित है, जिन्हें आप बग खोजने की कोशिश कर सकते हैं, जबकि टीएयूयूटी में परीक्षण युगल, रणनीतियों, रखरखाव आदि जैसे विषयों का व्यापक प्रसार शामिल है। या तो पुस्तक अच्छी है; यह निर्भर करता है कि आप इससे क्या चाहते हैं।

इसके अलावा, यहां एक टॉक रॉय ओशरोव ने यूनिट परीक्षण पर एक लिंक किया है । यह एक घड़ी के लायक है (इसलिए वह परीक्षण परीक्षा वीडियो में से कुछ हैं, क्योंकि उन्होंने विभिन्न समस्याओं और डॉस / डॉन को कारण बताए हैं) क्यों।

कैसे शुरू करें

कोड लिखने से बेहतर कुछ भी नहीं है। एक काफी सरल वर्ग खोजें जो अधिक संदर्भ नहीं देता है। फिर, कुछ परीक्षण लिखना शुरू करें।

हमेशा खुद से पूछें "मैं इस परीक्षण के साथ क्या प्रयास करना और साबित करना चाहता हूं?" इससे पहले कि आप इसे लिख सकें, फिर इसे एक सभ्य नाम दें (आमतौर पर जिस विधि को बुलाया जा रहा है, परिदृश्य और अपेक्षित परिणाम शामिल है, उदाहरण के लिए एक स्टैक पर: "पॉप जब स्टैक IsEmpty ThrowsException")।

उन सभी इनपुटों के बारे में सोचें जिन्हें आप फेंक सकते हैं, विधियों के विभिन्न संयोजन जो दिलचस्प परिणाम प्राप्त कर सकते हैं और आगे।





tdd