कोड कवरेज क्या है?
कोड कवरेज एक उपाय है जो उस डिग्री का वर्णन करता है जिसके कार्यक्रम के स्रोत कोड का परीक्षण किया गया है। यह श्वेत बॉक्स परीक्षण का एक रूप है जो परीक्षण के मामलों के सेट द्वारा कार्यक्रम के क्षेत्रों का पता नहीं लगाता है। यह कवरेज बढ़ाने और कोड कवरेज की मात्रात्मक माप का निर्धारण करने के लिए कुछ परीक्षण मामलों को भी बनाता है।
ज्यादातर मामलों में, कोड कवरेज सिस्टम रनिंग प्रोग्राम के बारे में जानकारी इकट्ठा करता है। यह परीक्षण सूट के कोड कवरेज के बारे में एक रिपोर्ट उत्पन्न करने के लिए स्रोत कोड जानकारी के साथ भी जोड़ती है।
इस ट्यूटोरियल में, आप सीखेंगे-
- कोड कवरेज क्या है?
- कोड कवरेज का उपयोग क्यों करें?
- कोड कवरेज तरीके
- स्टेटमेंट कवरेज
- निर्णय कवरेज
- शाखा कवरेज
- हालत कवरेज
- परिमित स्टेट मशीन कवरेज
- किस प्रकार के कोड कवरेज को चुनना है
- कोड कवरेज बनाम कार्यात्मक कवरेज
- कोड कवरेज उपकरण
- कोड कवरेज का उपयोग करने के फायदे और नुकसान
कोड कवरेज का उपयोग क्यों करें?
यहाँ, कोड कवरेज का उपयोग करने के कुछ प्रमुख कारण हैं:
- यह आपको परीक्षण कार्यान्वयन की दक्षता को मापने में मदद करता है
- यह एक मात्रात्मक माप प्रदान करता है।
- यह उस डिग्री को परिभाषित करता है जिस तक स्रोत कोड का परीक्षण किया गया है।
कोड कवरेज तरीके
निम्नलिखित प्रमुख कोड कवरेज विधियां हैं
- स्टेटमेंट कवरेज
- निर्णय कवरेज
- शाखा कवरेज
- टॉगल कवरेज
- FSM कवरेज
स्टेटमेंट कवरेज
स्टेटमेंट कवरेज एक सफेद बॉक्स परीक्षण तकनीक है जिसमें स्रोत कोड के सभी निष्पादन योग्य विवरणों को कम से कम एक बार निष्पादित किया जाता है। इसका उपयोग स्रोत कोड में बयानों की संख्या की गणना के लिए किया जाता है जिन्हें निष्पादित किया गया है। स्टेटमेंट कवरेज का मुख्य उद्देश्य स्रोत कोड में सभी संभावित रास्तों, रेखाओं और कथनों को कवर करना है।
स्टेटमेंट कवरेज का उपयोग परीक्षण के तहत कोड की संरचना के आधार पर परिदृश्य प्राप्त करने के लिए किया जाता है।
व्हाइट बॉक्स परीक्षण में, परीक्षक इस बात पर ध्यान केंद्रित कर रहा है कि सॉफ्टवेयर कैसे काम करता है। दूसरे शब्दों में, परीक्षक नियंत्रण प्रवाह ग्राफ़ या प्रवाह चार्ट के विषय में स्रोत कोड के आंतरिक कार्य पर ध्यान केंद्रित कर रहा होगा।
आमतौर पर किसी भी सॉफ्टवेयर में, यदि हम सोर्स कोड को देखते हैं, तो ऑपरेटर, फ़ंक्शंस, लूपिंग, असाधारण हैंडलर इत्यादि जैसे विभिन्न प्रकार के तत्व होंगे। प्रोग्राम के इनपुट के आधार पर, कोड स्टेटमेंट्स में से कुछ को निष्पादित नहीं किया जा सकता है। । स्टेटमेंट कवरेज का लक्ष्य कोड में सभी संभावित पथ, लाइन और स्टेटमेंट को कवर करना है।
आइए इसे एक उदाहरण के साथ समझते हैं कि स्टेटमेंट कवरेज की गणना कैसे करें।
दिए गए स्रोत कोड के लिए स्टेटमेंट कवरेज की गणना करने के लिए परिदृश्य। यहां हम प्रत्येक परिदृश्य के लिए स्टेटमेंट कवरेज के प्रतिशत की जांच करने के लिए दो अलग-अलग परिदृश्य ले रहे हैं।
सोर्स कोड:
प्रिंट्स (int a, int b) {------------ प्रिंट्सम एक फंक्शन हैint result = a + b;अगर (परिणाम> 0)प्रिंट ("सकारात्मक", परिणाम)अन्यप्रिंट ("नकारात्मक", परिणाम)} ----------- सोर्स कोड का अंत
परिद्रश्य 1:
यदि A = 3, B = 9
पीले रंग में चिह्नित बयान वे हैं जो परिदृश्य के अनुसार निष्पादित किए जाते हैं
निष्पादित बयानों की संख्या = 5, बयानों की कुल संख्या = 7
स्टेटमेंट कवरेज: 5/7 = 71%
इसी तरह हम परिदृश्य 2 देखेंगे,
परिदृश्य 2:
यदि ए = -3, बी = -9
पीले रंग में चिह्नित बयान वे हैं जो परिदृश्य के अनुसार निष्पादित किए जाते हैं।
निष्पादित बयानों की संख्या = 6
बयानों की कुल संख्या = 7
स्टेटमेंट कवरेज: 6/7 = 85%
लेकिन कुल मिलाकर, अगर आप देखें, तो सभी बयानों को 2 nd परिदृश्य के विचार से कवर किया जा रहा है । इसलिए हम यह निष्कर्ष निकाल सकते हैं कि समग्र विवरण कवरेज 100% है।
स्टेटमेंट कवरेज द्वारा क्या कवर किया गया है?
- अप्रयुक्त कथन
- मृत कोड
- अप्रयुक्त शाखाएँ
- अनुपलब्ध कथन
निर्णय कवरेज
निर्णय कवरेज एक सफेद बॉक्स परीक्षण तकनीक है जो स्रोत कोड के प्रत्येक बूलियन अभिव्यक्ति के सही या गलत परिणामों की रिपोर्ट करती है। निर्णय कवरेज परीक्षण का लक्ष्य सभी सुलभ स्रोत कोड को जाँचना और सुनिश्चित करना है और सुनिश्चित करना है कि हर संभव निर्णय बिंदु की प्रत्येक शाखा को कम से कम एक बार निष्पादित किया जाए।
इस कवरेज में, भाव कभी-कभी जटिल हो सकते हैं। इसलिए, 100% कवरेज हासिल करना बहुत कठिन है। इसीलिए इस मीट्रिक की रिपोर्टिंग के कई अलग-अलग तरीके हैं। ये सभी विधियां सबसे महत्वपूर्ण संयोजनों को कवर करने पर ध्यान केंद्रित करती हैं। यह निर्णय कवरेज के समान है, लेकिन यह प्रवाह को नियंत्रित करने के लिए बेहतर संवेदनशीलता प्रदान करता है।
निर्णय कवरेज का उदाहरण
निम्नलिखित कोड पर विचार करें-
डेमो (int) {यदि (a> 5)a = a * ३प्रिंट (ए)}
परिद्रश्य 1:
A का मान 2 है
पीले रंग में हाइलाइट किए गए कोड को निष्पादित किया जाएगा। यहां निर्णय का "नहीं" परिणाम यदि (a> 5) जांचा जाता है।
निर्णय कवरेज = 50%
परिदृश्य 2:
A का मान 6 है
पीले रंग में हाइलाइट किए गए कोड को निष्पादित किया जाएगा। यहां निर्णय का "हां" परिणाम यदि (a> 5) जांचा जाता है।
निर्णय कवरेज = 50%
परीक्षण मामला | A का मान | उत्पादन | निर्णय कवरेज |
1 | २ | २ | 50% |
२ | ६ | १। | 50% |
शाखा कवरेज
ब्रांच कवरेज एक सफेद बॉक्स परीक्षण विधि है जिसमें कोड मॉड्यूल (स्टेटमेंट या लूप) से हर परिणाम का परीक्षण किया जाता है। शाखा कवरेज का उद्देश्य यह सुनिश्चित करना है कि प्रत्येक शाखा से प्रत्येक निर्णय की स्थिति को कम से कम एक बार निष्पादित किया जाए। यह स्वतंत्र कोड खंडों के अंशों को मापने और उन शाखाओं का पता लगाने में मदद करता है जिनकी कोई शाखा नहीं है।
उदाहरण के लिए, यदि परिणाम द्विआधारी हैं, तो आपको ट्रू और गलत दोनों परिणामों का परीक्षण करने की आवश्यकता है।
शाखा कवरेज की गणना करने का सूत्र:
ब्रांच कवरेज का उदाहरण
शाखा कवरेज सीखने के लिए, आइए पहले उपयोग किए गए उसी उदाहरण पर विचार करें
निम्नलिखित कोड पर विचार करें
डेमो (int) {यदि (a> 5)a = a * ३प्रिंट (ए)}
शाखा कवरेज बिना शर्त शाखा पर भी विचार करेगा
परीक्षण मामला | A का मान | उत्पादन | निर्णय कवरेज | शाखा कवरेज |
1 | २ | २ | 50% | 33% |
२ | ६ | १। | 50% | 67% |
शाखा कवरेज के लाभ:
शाखा कवरेज परीक्षण निम्नलिखित लाभ प्रदान करता है:
- आपको कोड में सभी शाखाओं को मान्य करने की अनुमति देता है
- आपको यह सुनिश्चित करने में मदद करता है कि कार्यक्रम के संचालन की किसी भी असामान्यता के लिए कोई शाखा नहीं है
- शाखा कवरेज विधि उन मुद्दों को हटा देती है जो स्टेटमेंट कवरेज परीक्षण के कारण होते हैं
- आपको उन क्षेत्रों को खोजने की अनुमति देता है जो अन्य परीक्षण विधियों द्वारा परीक्षण नहीं किए जाते हैं
- यह आपको कोड कवरेज का एक मात्रात्मक माप खोजने की अनुमति देता है
- शाखा कवरेज बूलियन अभिव्यक्तियों के अंदर शाखाओं की उपेक्षा करता है
हालत कवरेज
हालत कवरेज या अभिव्यक्ति कवरेज एक परीक्षण विधि है जिसका उपयोग सशर्त बयान में चर या उप-अभिव्यक्तियों के परीक्षण और मूल्यांकन के लिए किया जाता है। हालत कवरेज का लक्ष्य प्रत्येक तार्किक स्थिति के लिए व्यक्तिगत परिणामों की जांच करना है। स्थिति कवरेज निर्णय कवरेज की तुलना में नियंत्रण प्रवाह के लिए बेहतर संवेदनशीलता प्रदान करता है। इस कवरेज में, तार्किक ऑपरेंड वाले भावों पर ही विचार किया जाता है।
उदाहरण के लिए, यदि किसी अभिव्यक्ति में बूलियन ऑपरेशन जैसे AND, OR, XOR है, जो कुल संभावनाओं को इंगित करता है।
हालत कवरेज पूर्ण निर्णय कवरेज के बारे में गारंटी नहीं देता है।
हालत कवरेज की गणना करने का सूत्र:
उदाहरण:
उपरोक्त अभिव्यक्ति के लिए, हमारे पास 4 संभावित संयोजन हैं
- टीटी
- सीमांत बल
- टीएफ
- फुट
निम्नलिखित इनपुट पर विचार करें
एक्स = 3 य = ४ |
(x |
सच |
स्थिति कवरेज 25 = 25% है |
ए = ३ ब = ४ |
(ए> बी) |
असत्य |
परिमित स्टेट मशीन कवरेज
परिमित राज्य मशीन कवरेज निश्चित रूप से कोड कवरेज विधि का सबसे जटिल प्रकार है। ऐसा इसलिए है क्योंकि यह डिजाइन के व्यवहार पर काम करता है। इस कवरेज विधि में, आपको यह देखने की आवश्यकता है कि कितने समय-विशिष्ट राज्यों का दौरा किया जाता है, पारगमन किया जाता है। यह भी जांचता है कि एक परिमित राज्य मशीन में कितने अनुक्रम शामिल हैं।
किस प्रकार के कोड कवरेज को चुनना है
यह निश्चित रूप से सबसे कठिन जवाब देना है। एक कवरेज विधि का चयन करने के लिए, परीक्षक को यह जांचना होगा कि
- परीक्षण के तहत कोड में एकल या कई अनदेखे दोष हैं
- संभावित जुर्माना की लागत
- खो प्रतिष्ठा की लागत
- खोई हुई बिक्री, आदि की लागत
उच्च संभावना है कि दोष महंगा उत्पादन विफलताओं का कारण होगा, जितना अधिक गंभीर कवरेज का स्तर आपको चुनना होगा।
कोड कवरेज बनाम कार्यात्मक कवरेज
कोड कवरेज़ | कार्यात्मक कवरेज |
कोड कवरेज आपको बताता है कि आपके परीक्षण बेंच द्वारा स्रोत कोड का कितना अच्छा उपयोग किया गया है। | कार्यात्मक कवरेज मापता है कि आपके परीक्षण बेंच द्वारा डिजाइन की कार्यक्षमता कितनी अच्छी तरह कवर की गई है। |
कभी भी डिज़ाइन विनिर्देश का उपयोग न करें | डिजाइन विनिर्देश का उपयोग करें |
डेवलपर्स द्वारा किया गया | परीक्षकों द्वारा किया गया |
कोड कवरेज उपकरण
यहाँ, महत्वपूर्ण कोड कवरेज टूल्स की एक सूची है:
उपकरण का नाम | विवरण |
कोबरटुरा | यह एक ओपन सोर्स कोड कवरेज टूल है। यह एक कोड आधार लिखकर परीक्षण कवरेज को मापता है और विश्लेषण करता है कि कोड की कौन सी लाइनें निष्पादित हो रही हैं और जो परीक्षण सूट के चलने पर निष्पादित नहीं की जाती हैं। |
तिपतिया घास | तिपतिया घास भी केवल परीक्षण जो पिछले कोड के बाद से संशोधित किया गया था जो कोड को चलाने के द्वारा testng समय कम कर देता है। |
देवपार्टनर | DevPartner डेवलपर्स को कोड की गुणवत्ता और जटिलता के लिए जावा कोड का विश्लेषण करने में सक्षम बनाता है। |
एम्मा | EMMA क्लास, मेथड, लाइन और बेस ब्लॉक कवरेज, एग्रीगेटेड सोर्स फाइल, क्लास और मेथड लेवल को सपोर्ट करता है। |
कालिस्टिक | कलिस्टिक एक थर्ड पार्टी एप्लिकेशन है जो विभिन्न दृष्टिकोणों के साथ कोड का विश्लेषण करता है। |
CoView और CoAnt | कोडिंग सॉफ्टवेयर मेट्रिक्स, मॉक ऑब्जेक्ट निर्माण, कोड परीक्षण क्षमता, पथ और शाखा कवरेज, आदि के लिए एक कोड कवरेज उपकरण है। |
C ++ के लिए बुल्सआई | BulseyeCoverage C ++ और C के लिए एक कोड कवरेज टूल है। |
सोनार | सोनार एक खुला कोड कवरेज उपकरण है जो आपको कोड गुणवत्ता का प्रबंधन करने में मदद करता है। |
कोड कवरेज का उपयोग करने के लाभ
- कोड कवरेज की मात्रात्मक माप का मूल्यांकन करने में मददगार
- यह आपको कवरेज बढ़ाने के लिए अतिरिक्त परीक्षण मामले बनाने की अनुमति देता है
- यह आपको एक कार्यक्रम के क्षेत्रों को खोजने की अनुमति देता है जो परीक्षण मामलों के एक सेट द्वारा प्रयोग नहीं किया जाता है
कोड कवरेज का उपयोग करने के नुकसान
- जब कोई विशिष्ट सुविधा डिज़ाइन में लागू नहीं होती है, तब भी कोड कवरेज 100% कवरेज की रिपोर्ट करता है।
- यह निर्धारित करना संभव नहीं है कि हमने कोड कवरेज की सहायता से किसी सुविधा के सभी संभावित मूल्यों का परीक्षण किया या नहीं
- कोड कवरेज यह भी नहीं बता रहा है कि आपने अपने तर्क को कितना और कैसे कवर किया है
- मामले में जब निर्दिष्ट फ़ंक्शन लागू नहीं हुआ है, या विनिर्देश से शामिल नहीं है, तो संरचना-आधारित तकनीक उस मुद्दे को नहीं पा सकती है।
सारांश
- कोड कवरेज एक उपाय है जो उस डिग्री का वर्णन करता है जिसके कार्यक्रम के स्रोत कोड का परीक्षण किया गया है
- यह आपको परीक्षण कार्यान्वयन की दक्षता को मापने में मदद करता है
- पांच कोड कवरेज तरीके हैं 1.) स्टेटमेंट कवरेज 2.) कंडीशन कवरेज 3) ब्रांच कवरेज 4) टॉगल कवरेज 5) एफएसए कवरेज
- स्टेटमेंट कवरेज में कम से कम एक बार स्रोत कोड में सभी निष्पादन योग्य विवरणों का निष्पादन शामिल है
- निर्णय कवरेज प्रत्येक बूलियन अभिव्यक्ति के सही या गलत परिणामों की रिपोर्ट करता है
- शाखा कवरेज में, एक कोड मॉड्यूल से हर परिणाम का परीक्षण किया जाता है
- सशर्त यह प्रकट करेगा कि सशर्त विवरण में चर या उप-विभाजन का मूल्यांकन कैसे किया जाता है
- परिमित राज्य मशीन कवरेज निश्चित रूप से कोड कवरेज विधि का सबसे जटिल प्रकार है
- एक कवरेज विधि का चयन करने के लिए, परीक्षक को संभावित जुर्माना, खोई प्रतिष्ठा, खोई बिक्री, आदि की लागत की जांच करने की आवश्यकता होती है।
- कोड कवरेज आपको बताता है कि आपके परीक्षण बेंच द्वारा स्रोत कोड का कितना अच्छा उपयोग किया गया है जबकि कार्यात्मक कवरेज मापता है कि डिजाइन की कार्यक्षमता कितनी अच्छी तरह से कवर की गई है।
- कोबरटुरा, जेटेस्ट, क्लोवर, एम्मा, कलिस्टिक कुछ महत्वपूर्ण कोड कवरेज उपकरण हैं
- कोड कवरेज आपको कवरेज बढ़ाने के लिए अतिरिक्त परीक्षण मामले बनाने की अनुमति देता है
- कोड कवरेज आपको यह निर्धारित करने में मदद नहीं करता है कि हमने किसी सुविधा के सभी संभावित मूल्यों का परीक्षण किया है या नहीं