2010-08-13 15 views
6

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

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

आप में से जो कवरेज उपकरण है तो आप उसे 100% पर कवरेज रखने के लिए कैसे धार्मिक पालन करते हैं और आप कभी भी मिल रहा है अपने आप को परीक्षण है कि वास्तव में परीक्षण कुछ भी नहीं लिख, लेकिन सिर्फ अपने कवरेज को बनाए रखने के लिए ? क्या यह खराब बात नहीं है?

उत्तर

8

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

1

अच्छा तर्कसंगतता;) लेकिन हम सभी के बाद इंसान हैं, और रात में एक नींद के लिए मैं बहुत बेहतर जानता हूं कि एक अनचाहे विधि या पथ ने इसे उत्पादन में नहीं बनाया है।

2

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

यदि आप शुद्ध टीडीडी नहीं कर रहे हैं, तो 100% वैसे भी एक अवास्तविक लक्ष्य है। मैं आमतौर पर रॉय ओशरोव की विधि के लिए जाने की कोशिश करता हूं और केवल तर्क के साथ चीजों का परीक्षण करता हूं (उदा। सीधे गेटर्स/सेटर या पास-थ्रू नहीं)। लेकिन फिर, उच्च हमेशा बेहतर होता है, और यह कवरेज बढ़ाने के लिए वहां कुछ और परीक्षण करने के लिए मोहक हो सकता है ..!

7

मैं शैतान के वकील को खेलूंगा: यदि आपके कवरेज में वृद्धि करना एक परीक्षण लिखना था, तो "कुछ भी उपयोगी नहीं था," तो वह कोड क्यों था? मेरे लिए, यह कुछ मुख्य लाइन कोड को हटाने का तर्क होगा।

या एक परीक्षण विकसित करने के लिए जो कुछ उपयोगी करता है। उदाहरण के लिए, आप विचार कर सकते हैं कि सेटर्स और गेटर्स का परीक्षण करना उपयोगी नहीं है। न तो मैं करता हूं। हालांकि, कुछ विधियों का परीक्षण करते समय का परीक्षण किया जाना चाहिए। अन्यथा, फिर, वे वहाँ क्यों हैं?

लेकिन आप एक अच्छा मुद्दा उठाते हैं कि कवरेज उपकरण स्वयं में समाप्त नहीं होना चाहिए। खासकर जब से वे आपको नहीं बता सकते कि आपको कौन सा कोड लिखना है। http://www.kdgregory.com/index.php?page=junit.coverage

+1

अच्छा ब्लॉग पोस्ट:

मैं और अधिक विस्तार यहाँ में चले गए हैं। शर्मनाक सच यह है कि मैं कुछ पीओसीओ वर्गों पर गेटर/सेटर्स का उत्साह कर रहा था। जैसा कि आपने कहा था कि यह प्रकट हुआ था कि वे सार्थक परीक्षणों से अभ्यास नहीं कर रहे थे। कारण - परीक्षण करने के लिए बहुत मुश्किल है। यह पुराना कोड सबकुछ के गुब्बारे में था और बहुत कसकर युग्मित था। वास्तविक समाधान एक रिफैक्टरिंग सत्र का थोड़ा सा है .. –

संबंधित मुद्दे