मुझे वास्तव में @ रेविंगो का उत्तर पसंद है क्योंकि वह सुझाव देता है कि 100% की ओर संघर्ष आपको अप्रयुक्त कोड को साफ करने या हटाने का कारण बन सकता है। अन्य उत्तरों में मैंने जो नहीं देखा है वह यह है कि आपको कब उच्च कवरेज की आवश्यकता है और कब नहीं। मैंने इसे शुरू करने के लिए एक छुरा लिया। मुझे लगता है कि इस तरह एक चार्ट में विस्तार जोड़ना एक परीक्षण कवरेज नंबर खोजने की तुलना में अधिक उपयोगी खोज होगा जो सभी कोड के लिए सही था।
100%
एक सार्वजनिक API के लिए, java.util कलेक्शंस की तरह, जो किसी डेटाबेस में युग्मित नहीं है और HTML को वापस नहीं करता है, मुझे लगता है कि 100% कवरेज एक महान शुरुआत लक्ष्य है, भले ही आप समय या अन्य के कारण 90-95% के लिए व्यवस्थित हों बाधाओं। आपके द्वारा फ़ीचर पूरा करने के बाद टेस्ट कवरेज बढ़ाना अन्य प्रकार की कोड समीक्षा की तुलना में अधिक विस्तृत स्तर की जांच है। यदि आपका एपीआई बिल्कुल लोकप्रिय है, तो लोग इसका उपयोग करेंगे, इसे उप-वर्ग में बदल देंगे, इसे वशीकरण कर सकते हैं, आदि उन तरीकों से जो आप उम्मीद नहीं कर सकते हैं। आप उनका पहला अनुभव बग, या डिज़ाइन निरीक्षण प्राप्त करना नहीं चाहते हैं!
90%
व्यावसायिक अवसंरचना कोड के लिए, जो डेटा संरचनाओं में लेता है और डेटा संरचनाओं को लौटाता है, 100% अभी भी एक अच्छा प्रारंभिक लक्ष्य है, लेकिन अगर यह कोड बहुत अधिक दुरुपयोग को आमंत्रित करने के लिए पर्याप्त सार्वजनिक नहीं है, तो शायद 85% अभी भी स्वीकार्य है?
75%
कोड के लिए जो स्ट्रिंग्स लेता है और रिटर्न करता है, मुझे लगता है कि यूनिट परीक्षण बहुत अधिक भंगुर है, लेकिन फिर भी कई स्थितियों में उपयोगी हो सकता है।
50% या उससे कम
मुझे ऐसे कार्यों के लिए परीक्षण लिखने से नफरत है जो HTML लौटाते हैं क्योंकि यह बहुत भंगुर है। यदि कोई सीएसएस, जावास्क्रिप्ट या एचटीएमएल और अंग्रेजी की पूरी बूँद को बदल देता है तो मानव अंत उपयोगकर्ताओं के लिए कोई मतलब नहीं है? यदि आप एक ऐसा फ़ंक्शन पा सकते हैं जो थोड़ा एचटीएमएल बनाने के लिए बहुत सारे व्यापारिक तर्क का उपयोग करता है, तो यह अच्छी तरह से परीक्षण के लायक हो सकता है। लेकिन रिवर्स स्थिति बिल्कुल परीक्षण के लायक नहीं हो सकती है।
0% के पास
कुछ कोड के लिए, "सही" की परिभाषा "अंत उपयोगकर्ता के लिए समझ में आता है।" ऐसे गैर-पारंपरिक परीक्षण हैं जो आप इस कोड के खिलाफ कर सकते हैं जैसे स्वचालित व्याकरण-जाँच या HTML आउटपुट को मान्य करना। मैंने छोटी-छोटी विसंगतियों के लिए grep स्टेटमेंट भी सेट किए हैं, जो हम आमतौर पर काम के लिए आते हैं, जैसे "लॉगिन" जब सिस्टम का बाकी हिस्सा इसे "साइन इन" कहता है। यह आदमी सख्ती से एक इकाई परीक्षण नहीं है, लेकिन विशिष्ट आउटपुट की अपेक्षा किए बिना मुद्दों को पकड़ने का एक सहायक तरीका है।
अंतत: हालांकि, केवल एक मानव न्याय कर सकता है कि मनुष्य के लिए क्या समझदार है। यूनिट परीक्षण वहाँ आपकी मदद नहीं कर सकता। कभी-कभी यह कई मनुष्यों को न्याय करने में सक्षम बनाता है।
पूर्ण 0%
यह एक दुखद श्रेणी है और मुझे ऐसा लगता है कि इसे लिखने के लिए किसी व्यक्ति की कमी है। लेकिन किसी भी पर्याप्त रूप से बड़ी परियोजना में खरगोश छेद हैं जो किसी भी व्यावसायिक लाभ प्रदान किए बिना व्यक्ति-सप्ताह का समय चूस सकते हैं।
मैंने एक पुस्तक खरीदी क्योंकि यह यह दिखाने का दावा करता है कि हाइबरनेट के परीक्षण के लिए डेटा को स्वचालित रूप से कैसे मॉक करें। लेकिन यह केवल हाइबरनेट HQL और SQL प्रश्नों का परीक्षण किया। यदि आपको बहुत से HQL और SQL करने हैं, तो आपको वास्तव में हाइबरनेट का लाभ नहीं मिल रहा है। मेमोरी-इन डेटाबेस में हाइबरनेट का एक रूप है, लेकिन मैंने यह जानने के लिए समय का निवेश नहीं किया है कि परीक्षणों में इसका प्रभावी उपयोग कैसे किया जाए। अगर मेरे पास ऐसा चल रहा है, तो मैं किसी भी व्यावसायिक तर्क के लिए उच्च (50% -100%) परीक्षण कवरेज करना चाहता हूं जो किसी वस्तु ग्राफ को नेविगेट करके सामान की गणना करता है जिससे हाइबरनेट कुछ प्रश्नों को चलाता है। इस कोड का परीक्षण करने की मेरी क्षमता अभी 0% के पास है और यह एक समस्या है। इसलिए मैं परियोजना के अन्य क्षेत्रों में परीक्षण कवरेज में सुधार करता हूं और डेटाबेस तक पहुंचने वाले शुद्ध कार्यों को प्राथमिकता देने की कोशिश करता हूं, मोटे तौर पर क्योंकि उन कार्यों के लिए परीक्षण लिखना आसान है। फिर भी,