हमारे उत्पाद समूह में, हम इकाई परीक्षणों से 50-70% कोड कवरेज और संयुक्त परीक्षणों और परीक्षण स्वचालन से 90% + कवरेज का लक्ष्य रखते हैं। इकाई परीक्षणों को लिखने के लिए आम तौर पर बजट में प्रत्येक सुविधा के लिए लगभग 1 दिन होता है जो कोडिंग के 3-4 दिन लगते हैं। लेकिन यह बहुत सारे कारकों के साथ भिन्न हो सकता है।
99% कोड कवरेज महान है। यूनिट परीक्षण महान हैं। लेकिन अकेले यूनिट परीक्षण से 99% कोड कवरेज? मुझे लगता है कि यह विश्वास करना मुश्किल है कि आप इकाई परीक्षण से अकेले इतना कवरेज प्राप्त कर सकते हैं।
उस मामले के लिए जहां आपने एक वर्ग के लिए 3 दिन लेखन परीक्षण में बिताया था जिसे लागू करने में 1 दिन लग गया था। आपने इस बारे में विस्तार से नहीं बताया कि इसमें इतना समय क्यों लगा या किसी कोड को साझा नहीं किया गया। अटकलों से, मुझे लगता है कि आप वास्तव में अपनी कक्षा के लिए एक सच्ची इकाई परीक्षा नहीं लिख रहे थे, लेकिन वास्तव में परीक्षण स्वचालन लिख रहे थे । और वास्तव में इसके साथ कुछ भी गलत नहीं है - जब तक कि आपके दो अलग-अलग प्रकार के परीक्षणों के बीच अंतर को पहचानते हैं।
लेकिन आपने कहा कि तीन दिनों का परीक्षण लेखन केवल एक वर्ग के लिए था। शायद वर्ग ही इकाई परीक्षण के लिए डिज़ाइन नहीं किया गया था। क्या वर्ग UI लागू करता है? नेटवर्किंग? फ़ाइल I / O यदि हां, तो आपने अपने व्यावसायिक तर्क की तुलना में जावा रनटाइम का परीक्षण करने के लिए अधिक कोड लिखना समाप्त कर दिया होगा जो रनटाइम के साथ इंटरैक्ट करता है।
TDD आपको इंटरफेस और इंटरफेस से निर्भरता के संदर्भ में सोचता है। वह एकल वर्ग जो एक सुविधा के लिए UI, नेटवर्किंग और फ़ाइल / io लागू करता है, बेहतर हो सकता है कि उसे कई वर्गों में विभाजित किया जाए - एक नेटवर्किंग के लिए, एक फ़ाइल / io के लिए, और UI एक मॉडल-व्यूअर-नियंत्रक डिज़ाइन में टूट गया। फिर आप निर्भरता के लिए सरल नकली वस्तुओं के साथ प्रत्येक के लिए उपयुक्त परीक्षण लागू कर सकते हैं। बेशक, इस सब में अधिक समय लगता है। इसलिए कोड लिखने के लिए 1 दिन और परीक्षण लिखने के लिए 3 दिन के लिए, इस प्रकार के डिजाइन में कोडिंग के 3 दिन और लेखन परीक्षण के 1 दिन की आवश्यकता हो सकती है। लेकिन कोड बेहतर बनाए रखने योग्य और पुन: प्रयोज्य होगा।